Lines Matching refs:Header
91 static inline void *getBackendPtr(const void *Ptr, UnpackedHeader *Header) { in getBackendPtr() argument
93 getHeaderSize() - (Header->Offset << MinAlignmentLog)); in getBackendPtr()
98 static inline uptr getUsableSize(const void *Ptr, UnpackedHeader *Header) { in getUsableSize() argument
99 const uptr ClassId = Header->ClassId; in getUsableSize()
102 (Header->Offset << MinAlignmentLog); in getUsableSize()
104 getBackendPtr(Ptr, Header)) - getHeaderSize(); in getUsableSize()
108 static inline uptr getSize(const void *Ptr, UnpackedHeader *Header) { in getSize() argument
109 const uptr SizeOrUnusedBytes = Header->SizeOrUnusedBytes; in getSize()
110 if (Header->ClassId) in getSize()
113 getBackendPtr(Ptr, Header)) - getHeaderSize() - SizeOrUnusedBytes; in getSize()
117 static inline u16 computeChecksum(const void *Ptr, UnpackedHeader *Header) { in computeChecksum() argument
118 UnpackedHeader ZeroChecksumHeader = *Header; in computeChecksum()
183 UnpackedHeader Header; in Recycle() local
184 Chunk::loadHeader(Ptr, &Header); in Recycle()
185 if (UNLIKELY(Header.State != ChunkQuarantine)) in Recycle()
187 UnpackedHeader NewHeader = Header; in Recycle()
189 Chunk::compareExchangeHeader(Ptr, &NewHeader, &Header); in Recycle()
190 void *BackendPtr = Chunk::getBackendPtr(Ptr, &Header); in Recycle()
191 if (Header.ClassId) in Recycle()
192 getBackend().deallocatePrimary(Cache_, BackendPtr, Header.ClassId); in Recycle()
372 UnpackedHeader Header = {}; in allocate() local
380 Header.Offset = (AlignedUserPtr - UserPtr) >> MinAlignmentLog; in allocate()
384 Header.State = ChunkAllocated; in allocate()
385 Header.AllocType = Type; in allocate()
387 Header.ClassId = ClassId; in allocate()
388 Header.SizeOrUnusedBytes = Size; in allocate()
396 Header.SizeOrUnusedBytes = PageSize - TrailingBytes; in allocate()
399 Chunk::storeHeader(Ptr, &Header); in allocate()
408 void quarantineOrDeallocateChunk(void *Ptr, UnpackedHeader *Header, uptr Size) in quarantineOrDeallocateChunk()
412 UnpackedHeader NewHeader = *Header; in quarantineOrDeallocateChunk()
414 Chunk::compareExchangeHeader(Ptr, &NewHeader, Header); in quarantineOrDeallocateChunk()
415 void *BackendPtr = Chunk::getBackendPtr(Ptr, Header); in quarantineOrDeallocateChunk()
416 if (Header->ClassId) { in quarantineOrDeallocateChunk()
420 Header->ClassId); in quarantineOrDeallocateChunk()
432 const uptr EstimatedSize = Size + (Header->Offset << MinAlignmentLog); in quarantineOrDeallocateChunk()
433 UnpackedHeader NewHeader = *Header; in quarantineOrDeallocateChunk()
435 Chunk::compareExchangeHeader(Ptr, &NewHeader, Header); in quarantineOrDeallocateChunk()
470 UnpackedHeader Header; in deallocate() local
471 Chunk::loadHeader(Ptr, &Header); in deallocate()
472 if (UNLIKELY(Header.State != ChunkAllocated)) in deallocate()
476 if (Header.AllocType != Type) { in deallocate()
478 if (Header.AllocType != FromMemalign || Type != FromMalloc) in deallocate()
483 const uptr Size = Chunk::getSize(Ptr, &Header); in deallocate()
490 quarantineOrDeallocateChunk(Ptr, &Header, Size); in deallocate()
556 UnpackedHeader Header; in getUsableSize() local
557 Chunk::loadHeader(Ptr, &Header); in getUsableSize()
559 if (UNLIKELY(Header.State != ChunkAllocated)) in getUsableSize()
561 return Chunk::getUsableSize(Ptr, &Header); in getUsableSize()
614 UnpackedHeader Header = {}; in performSanityChecks() local
619 Header.Offset = MaxOffset; in performSanityChecks()
620 if (Header.Offset != MaxOffset) in performSanityChecks()
628 Header.SizeOrUnusedBytes = MaxSizeOrUnusedBytes; in performSanityChecks()
629 if (Header.SizeOrUnusedBytes != MaxSizeOrUnusedBytes) in performSanityChecks()
633 Header.ClassId = LargestClassId; in performSanityChecks()
634 if (Header.ClassId != LargestClassId) in performSanityChecks()