Lines Matching refs:Ptr
68 static INLINE AtomicPackedHeader *getAtomicHeader(void *Ptr) { in getAtomicHeader() argument
69 return reinterpret_cast<AtomicPackedHeader *>(reinterpret_cast<uptr>(Ptr) - in getAtomicHeader()
73 const AtomicPackedHeader *getConstAtomicHeader(const void *Ptr) { in getConstAtomicHeader() argument
75 reinterpret_cast<uptr>(Ptr) - getHeaderSize()); in getConstAtomicHeader()
78 static INLINE bool isAligned(const void *Ptr) { in isAligned() argument
79 return IsAligned(reinterpret_cast<uptr>(Ptr), MinAlignment); in isAligned()
85 static INLINE void *getBackendPtr(const void *Ptr, UnpackedHeader *Header) { in getBackendPtr() argument
86 return reinterpret_cast<void *>(reinterpret_cast<uptr>(Ptr) - in getBackendPtr()
92 static INLINE uptr getUsableSize(const void *Ptr, UnpackedHeader *Header) { in getUsableSize() argument
98 getBackendPtr(Ptr, Header)) - getHeaderSize(); in getUsableSize()
102 static INLINE uptr getSize(const void *Ptr, UnpackedHeader *Header) { in getSize() argument
107 getBackendPtr(Ptr, Header)) - getHeaderSize() - SizeOrUnusedBytes; in getSize()
111 static INLINE u16 computeChecksum(const void *Ptr, UnpackedHeader *Header) { in computeChecksum() argument
116 const u32 Crc = computeCRC32(Cookie, reinterpret_cast<uptr>(Ptr), in computeChecksum()
123 static INLINE bool isValid(const void *Ptr) { in isValid() argument
125 atomic_load_relaxed(getConstAtomicHeader(Ptr)); in isValid()
129 computeChecksum(Ptr, &NewUnpackedHeader)); in isValid()
138 void loadHeader(const void *Ptr, UnpackedHeader *NewUnpackedHeader) { in loadHeader() argument
140 atomic_load_relaxed(getConstAtomicHeader(Ptr)); in loadHeader()
143 computeChecksum(Ptr, NewUnpackedHeader))) in loadHeader()
144 dieWithMessage("corrupted chunk header at address %p\n", Ptr); in loadHeader()
148 static INLINE void storeHeader(void *Ptr, UnpackedHeader *NewUnpackedHeader) { in storeHeader() argument
149 NewUnpackedHeader->Checksum = computeChecksum(Ptr, NewUnpackedHeader); in storeHeader()
151 atomic_store_relaxed(getAtomicHeader(Ptr), NewPackedHeader); in storeHeader()
157 static INLINE void compareExchangeHeader(void *Ptr, in compareExchangeHeader() argument
160 NewUnpackedHeader->Checksum = computeChecksum(Ptr, NewUnpackedHeader); in compareExchangeHeader()
164 getAtomicHeader(Ptr), &OldPackedHeader, NewPackedHeader, in compareExchangeHeader()
166 dieWithMessage("race on chunk header at address %p\n", Ptr); in compareExchangeHeader()
176 void Recycle(void *Ptr) { in Recycle()
178 Chunk::loadHeader(Ptr, &Header); in Recycle()
180 dieWithMessage("invalid chunk state when recycling address %p\n", Ptr); in Recycle()
183 Chunk::compareExchangeHeader(Ptr, &NewHeader, &Header); in Recycle()
184 void *BackendPtr = Chunk::getBackendPtr(Ptr, &Header); in Recycle()
199 void Deallocate(void *Ptr) { in Deallocate()
201 getBackend().deallocatePrimary(Cache_, Ptr, BatchClassId); in Deallocate()
280 bool isValidPointer(const void *Ptr) { in isValidPointer()
282 if (UNLIKELY(!Ptr)) in isValidPointer()
284 if (!Chunk::isAligned(Ptr)) in isValidPointer()
286 return Chunk::isValid(Ptr); in isValidPointer()
376 void *Ptr = reinterpret_cast<void *>(UserPtr); in allocate() local
377 Chunk::storeHeader(Ptr, &Header); in allocate()
379 __sanitizer_malloc_hook(Ptr, Size); in allocate()
380 return Ptr; in allocate()
386 void quarantineOrDeallocateChunk(void *Ptr, UnpackedHeader *Header, in quarantineOrDeallocateChunk()
392 Chunk::compareExchangeHeader(Ptr, &NewHeader, Header); in quarantineOrDeallocateChunk()
393 void *BackendPtr = Chunk::getBackendPtr(Ptr, Header); in quarantineOrDeallocateChunk()
413 Chunk::compareExchangeHeader(Ptr, &NewHeader, Header); in quarantineOrDeallocateChunk()
417 Ptr, EstimatedSize); in quarantineOrDeallocateChunk()
425 void deallocate(void *Ptr, uptr DeleteSize, uptr DeleteAlignment, in deallocate()
435 __sanitizer_free_hook(Ptr); in deallocate()
436 if (UNLIKELY(!Ptr)) in deallocate()
438 if (UNLIKELY(!Chunk::isAligned(Ptr))) in deallocate()
439 dieWithMessage("misaligned pointer when deallocating address %p\n", Ptr); in deallocate()
441 Chunk::loadHeader(Ptr, &Header); in deallocate()
443 dieWithMessage("invalid chunk state when deallocating address %p\n", Ptr); in deallocate()
450 "%p\n", Ptr); in deallocate()
453 const uptr Size = Chunk::getSize(Ptr, &Header); in deallocate()
457 Ptr); in deallocate()
460 quarantineOrDeallocateChunk(Ptr, &Header, Size); in deallocate()
504 uptr getUsableSize(const void *Ptr) { in getUsableSize()
506 if (UNLIKELY(!Ptr)) in getUsableSize()
509 Chunk::loadHeader(Ptr, &Header); in getUsableSize()
512 dieWithMessage("invalid chunk state when sizing address %p\n", Ptr); in getUsableSize()
513 return Chunk::getUsableSize(Ptr, &Header); in getUsableSize()
651 void scudoDeallocate(void *Ptr, uptr Size, uptr Alignment, AllocType Type) { in scudoDeallocate() argument
652 Instance.deallocate(Ptr, Size, Alignment, Type); in scudoDeallocate()
655 void *scudoRealloc(void *Ptr, uptr Size) { in scudoRealloc() argument
656 if (!Ptr) in scudoRealloc()
659 Instance.deallocate(Ptr, 0, 0, FromMalloc); in scudoRealloc()
662 return SetErrnoOnNull(Instance.reallocate(Ptr, Size)); in scudoRealloc()
693 void *Ptr = Instance.allocate(Size, Alignment, FromMemalign); in scudoPosixMemalign() local
694 if (UNLIKELY(!Ptr)) in scudoPosixMemalign()
696 *MemPtr = Ptr; in scudoPosixMemalign()
710 uptr scudoMallocUsableSize(void *Ptr) { in scudoMallocUsableSize() argument
711 return Instance.getUsableSize(Ptr); in scudoMallocUsableSize()
740 int __sanitizer_get_ownership(const void *Ptr) { in __sanitizer_get_ownership() argument
741 return Instance.isValidPointer(Ptr); in __sanitizer_get_ownership()
744 uptr __sanitizer_get_allocated_size(const void *Ptr) { in __sanitizer_get_allocated_size() argument
745 return Instance.getUsableSize(Ptr); in __sanitizer_get_allocated_size()
750 void *Ptr, uptr Size) { in SANITIZER_INTERFACE_WEAK_DEF() argument
751 (void)Ptr; in SANITIZER_INTERFACE_WEAK_DEF()
755 SANITIZER_INTERFACE_WEAK_DEF(void, __sanitizer_free_hook, void *Ptr) { in SANITIZER_INTERFACE_WEAK_DEF() argument
756 (void)Ptr; in SANITIZER_INTERFACE_WEAK_DEF()