Lines Matching refs:Header
85 static INLINE void *getBackendPtr(const void *Ptr, UnpackedHeader *Header) { in getBackendPtr() argument
87 getHeaderSize() - (Header->Offset << MinAlignmentLog)); in getBackendPtr()
92 static INLINE uptr getUsableSize(const void *Ptr, UnpackedHeader *Header) { in getUsableSize() argument
93 const uptr ClassId = Header->ClassId; in getUsableSize()
96 (Header->Offset << MinAlignmentLog); in getUsableSize()
98 getBackendPtr(Ptr, Header)) - getHeaderSize(); in getUsableSize()
102 static INLINE uptr getSize(const void *Ptr, UnpackedHeader *Header) { in getSize() argument
103 const uptr SizeOrUnusedBytes = Header->SizeOrUnusedBytes; in getSize()
104 if (Header->ClassId) in getSize()
107 getBackendPtr(Ptr, Header)) - getHeaderSize() - SizeOrUnusedBytes; in getSize()
111 static INLINE u16 computeChecksum(const void *Ptr, UnpackedHeader *Header) { in computeChecksum() argument
112 UnpackedHeader ZeroChecksumHeader = *Header; in computeChecksum()
177 UnpackedHeader Header; in Recycle() local
178 Chunk::loadHeader(Ptr, &Header); in Recycle()
179 if (UNLIKELY(Header.State != ChunkQuarantine)) in Recycle()
181 UnpackedHeader NewHeader = Header; in Recycle()
183 Chunk::compareExchangeHeader(Ptr, &NewHeader, &Header); in Recycle()
184 void *BackendPtr = Chunk::getBackendPtr(Ptr, &Header); in Recycle()
185 if (Header.ClassId) in Recycle()
186 getBackend().deallocatePrimary(Cache_, BackendPtr, Header.ClassId); in Recycle()
350 UnpackedHeader Header = {}; in allocate() local
358 Header.Offset = (AlignedUserPtr - UserPtr) >> MinAlignmentLog; in allocate()
362 Header.State = ChunkAllocated; in allocate()
363 Header.AllocType = Type; in allocate()
365 Header.ClassId = ClassId; in allocate()
366 Header.SizeOrUnusedBytes = Size; in allocate()
374 Header.SizeOrUnusedBytes = PageSize - TrailingBytes; in allocate()
377 Chunk::storeHeader(Ptr, &Header); in allocate()
386 void quarantineOrDeallocateChunk(void *Ptr, UnpackedHeader *Header, in quarantineOrDeallocateChunk()
390 UnpackedHeader NewHeader = *Header; in quarantineOrDeallocateChunk()
392 Chunk::compareExchangeHeader(Ptr, &NewHeader, Header); in quarantineOrDeallocateChunk()
393 void *BackendPtr = Chunk::getBackendPtr(Ptr, Header); in quarantineOrDeallocateChunk()
394 if (Header->ClassId) { in quarantineOrDeallocateChunk()
398 Header->ClassId); in quarantineOrDeallocateChunk()
410 const uptr EstimatedSize = Size + (Header->Offset << MinAlignmentLog); in quarantineOrDeallocateChunk()
411 UnpackedHeader NewHeader = *Header; in quarantineOrDeallocateChunk()
413 Chunk::compareExchangeHeader(Ptr, &NewHeader, Header); in quarantineOrDeallocateChunk()
440 UnpackedHeader Header; in deallocate() local
441 Chunk::loadHeader(Ptr, &Header); in deallocate()
442 if (UNLIKELY(Header.State != ChunkAllocated)) in deallocate()
446 if (Header.AllocType != Type) { in deallocate()
448 if (Header.AllocType != FromMemalign || Type != FromMalloc) in deallocate()
453 const uptr Size = Chunk::getSize(Ptr, &Header); in deallocate()
460 quarantineOrDeallocateChunk(Ptr, &Header, Size); in deallocate()
508 UnpackedHeader Header; in getUsableSize() local
509 Chunk::loadHeader(Ptr, &Header); in getUsableSize()
511 if (UNLIKELY(Header.State != ChunkAllocated)) in getUsableSize()
513 return Chunk::getUsableSize(Ptr, &Header); in getUsableSize()
566 UnpackedHeader Header = {}; in performSanityChecks() local
571 Header.Offset = MaxOffset; in performSanityChecks()
572 if (Header.Offset != MaxOffset) in performSanityChecks()
580 Header.SizeOrUnusedBytes = MaxSizeOrUnusedBytes; in performSanityChecks()
581 if (Header.SizeOrUnusedBytes != MaxSizeOrUnusedBytes) in performSanityChecks()
585 Header.ClassId = LargestClassId; in performSanityChecks()
586 if (Header.ClassId != LargestClassId) in performSanityChecks()