Lines Matching refs:Ptr
74 static inline AtomicPackedHeader *getAtomicHeader(void *Ptr) { in getAtomicHeader() argument
75 return reinterpret_cast<AtomicPackedHeader *>(reinterpret_cast<uptr>(Ptr) - in getAtomicHeader()
79 const AtomicPackedHeader *getConstAtomicHeader(const void *Ptr) { in getConstAtomicHeader() argument
81 reinterpret_cast<uptr>(Ptr) - getHeaderSize()); in getConstAtomicHeader()
84 static inline bool isAligned(const void *Ptr) { in isAligned() argument
85 return IsAligned(reinterpret_cast<uptr>(Ptr), MinAlignment); in isAligned()
91 static inline void *getBackendPtr(const void *Ptr, UnpackedHeader *Header) { in getBackendPtr() argument
92 return reinterpret_cast<void *>(reinterpret_cast<uptr>(Ptr) - in getBackendPtr()
98 static inline uptr getUsableSize(const void *Ptr, UnpackedHeader *Header) { in getUsableSize() argument
104 getBackendPtr(Ptr, Header)) - getHeaderSize(); in getUsableSize()
108 static inline uptr getSize(const void *Ptr, UnpackedHeader *Header) { in getSize() argument
113 getBackendPtr(Ptr, Header)) - getHeaderSize() - SizeOrUnusedBytes; in getSize()
117 static inline u16 computeChecksum(const void *Ptr, UnpackedHeader *Header) { in computeChecksum() argument
122 const u32 Crc = computeCRC32(Cookie, reinterpret_cast<uptr>(Ptr), in computeChecksum()
129 static inline bool isValid(const void *Ptr) { in isValid() argument
131 atomic_load_relaxed(getConstAtomicHeader(Ptr)); in isValid()
135 computeChecksum(Ptr, &NewUnpackedHeader)); in isValid()
144 void loadHeader(const void *Ptr, UnpackedHeader *NewUnpackedHeader) { in loadHeader() argument
146 atomic_load_relaxed(getConstAtomicHeader(Ptr)); in loadHeader()
149 computeChecksum(Ptr, NewUnpackedHeader))) in loadHeader()
150 dieWithMessage("corrupted chunk header at address %p\n", Ptr); in loadHeader()
154 static inline void storeHeader(void *Ptr, UnpackedHeader *NewUnpackedHeader) { in storeHeader() argument
155 NewUnpackedHeader->Checksum = computeChecksum(Ptr, NewUnpackedHeader); in storeHeader()
157 atomic_store_relaxed(getAtomicHeader(Ptr), NewPackedHeader); in storeHeader()
163 static inline void compareExchangeHeader(void *Ptr, in compareExchangeHeader() argument
166 NewUnpackedHeader->Checksum = computeChecksum(Ptr, NewUnpackedHeader); in compareExchangeHeader()
170 getAtomicHeader(Ptr), &OldPackedHeader, NewPackedHeader, in compareExchangeHeader()
172 dieWithMessage("race on chunk header at address %p\n", Ptr); in compareExchangeHeader()
182 void Recycle(void *Ptr) { in Recycle()
184 Chunk::loadHeader(Ptr, &Header); in Recycle()
186 dieWithMessage("invalid chunk state when recycling address %p\n", Ptr); in Recycle()
189 Chunk::compareExchangeHeader(Ptr, &NewHeader, &Header); in Recycle()
190 void *BackendPtr = Chunk::getBackendPtr(Ptr, &Header); in Recycle()
205 void Deallocate(void *Ptr) { in Deallocate()
207 getBackend().deallocatePrimary(Cache_, Ptr, BatchClassId); in Deallocate()
290 bool isValidPointer(const void *Ptr) { in isValidPointer()
292 if (UNLIKELY(!Ptr)) in isValidPointer()
294 if (!Chunk::isAligned(Ptr)) in isValidPointer()
296 return Chunk::isValid(Ptr); in isValidPointer()
316 if (void *Ptr = GuardedAlloc.allocate(Size, Alignment)) { in allocate() local
318 __sanitizer_malloc_hook(Ptr, Size); in allocate()
319 return Ptr; in allocate()
397 void *Ptr = reinterpret_cast<void *>(UserPtr); in allocate() local
398 Chunk::storeHeader(Ptr, &Header); in allocate()
400 __sanitizer_malloc_hook(Ptr, Size); in allocate()
401 return Ptr; in allocate()
407 void quarantineOrDeallocateChunk(void *Ptr, UnpackedHeader *Header, in quarantineOrDeallocateChunk()
413 Chunk::compareExchangeHeader(Ptr, &NewHeader, Header); in quarantineOrDeallocateChunk()
414 void *BackendPtr = Chunk::getBackendPtr(Ptr, Header); in quarantineOrDeallocateChunk()
434 Chunk::compareExchangeHeader(Ptr, &NewHeader, Header); in quarantineOrDeallocateChunk()
438 Ptr, EstimatedSize); in quarantineOrDeallocateChunk()
446 void deallocate(void *Ptr, uptr DeleteSize, uptr DeleteAlignment, in deallocate()
456 __sanitizer_free_hook(Ptr); in deallocate()
457 if (UNLIKELY(!Ptr)) in deallocate()
461 if (UNLIKELY(GuardedAlloc.pointerIsMine(Ptr))) { in deallocate()
462 GuardedAlloc.deallocate(Ptr); in deallocate()
467 if (UNLIKELY(!Chunk::isAligned(Ptr))) in deallocate()
468 dieWithMessage("misaligned pointer when deallocating address %p\n", Ptr); in deallocate()
470 Chunk::loadHeader(Ptr, &Header); in deallocate()
472 dieWithMessage("invalid chunk state when deallocating address %p\n", Ptr); in deallocate()
479 "%p\n", Ptr); in deallocate()
482 const uptr Size = Chunk::getSize(Ptr, &Header); in deallocate()
486 Ptr); in deallocate()
489 quarantineOrDeallocateChunk(Ptr, &Header, Size); in deallocate()
545 uptr getUsableSize(const void *Ptr) { in getUsableSize()
547 if (UNLIKELY(!Ptr)) in getUsableSize()
551 if (UNLIKELY(GuardedAlloc.pointerIsMine(Ptr))) in getUsableSize()
552 return GuardedAlloc.getSize(Ptr); in getUsableSize()
556 Chunk::loadHeader(Ptr, &Header); in getUsableSize()
559 dieWithMessage("invalid chunk state when sizing address %p\n", Ptr); in getUsableSize()
560 return Chunk::getUsableSize(Ptr, &Header); in getUsableSize()
711 void scudoDeallocate(void *Ptr, uptr Size, uptr Alignment, AllocType Type) { in scudoDeallocate() argument
712 Instance.deallocate(Ptr, Size, Alignment, Type); in scudoDeallocate()
715 void *scudoRealloc(void *Ptr, uptr Size) { in scudoRealloc() argument
716 if (!Ptr) in scudoRealloc()
719 Instance.deallocate(Ptr, 0, 0, FromMalloc); in scudoRealloc()
722 return SetErrnoOnNull(Instance.reallocate(Ptr, Size)); in scudoRealloc()
753 void *Ptr = Instance.allocate(Size, Alignment, FromMemalign); in scudoPosixMemalign() local
754 if (UNLIKELY(!Ptr)) in scudoPosixMemalign()
756 *MemPtr = Ptr; in scudoPosixMemalign()
770 uptr scudoMallocUsableSize(void *Ptr) { in scudoMallocUsableSize() argument
771 return Instance.getUsableSize(Ptr); in scudoMallocUsableSize()
800 int __sanitizer_get_ownership(const void *Ptr) { in __sanitizer_get_ownership() argument
801 return Instance.isValidPointer(Ptr); in __sanitizer_get_ownership()
804 uptr __sanitizer_get_allocated_size(const void *Ptr) { in __sanitizer_get_allocated_size() argument
805 return Instance.getUsableSize(Ptr); in __sanitizer_get_allocated_size()
810 void *Ptr, uptr Size) { in SANITIZER_INTERFACE_WEAK_DEF() argument
811 (void)Ptr; in SANITIZER_INTERFACE_WEAK_DEF()
815 SANITIZER_INTERFACE_WEAK_DEF(void, __sanitizer_free_hook, void *Ptr) { in SANITIZER_INTERFACE_WEAK_DEF() argument
816 (void)Ptr; in SANITIZER_INTERFACE_WEAK_DEF()