diff options
Diffstat (limited to 'compiler-rt/lib/sanitizer_common')
| -rw-r--r-- | compiler-rt/lib/sanitizer_common/sanitizer_allocator.h | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_allocator.h b/compiler-rt/lib/sanitizer_common/sanitizer_allocator.h index 093f1fb9333..d24f42b3c04 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_allocator.h +++ b/compiler-rt/lib/sanitizer_common/sanitizer_allocator.h @@ -1043,10 +1043,9 @@ class LargeMmapAllocator { return GetUser(h); } - // This function does the same as GetBlockBegin, but much faster. - // It may be called only in a single-threaded context, e.g. when all other - // threads are suspended or joined. - void *GetBlockBeginFastSingleThreaded(void *ptr) { + // This function does the same as GetBlockBegin, but is much faster. + // Must be called with the allocator locked. + void *GetBlockBeginFastLocked(void *ptr) { uptr p = reinterpret_cast<uptr>(ptr); uptr n = n_chunks_; if (!n) return 0; @@ -1238,6 +1237,14 @@ class CombinedAllocator { return secondary_.GetBlockBegin(p); } + // This function does the same as GetBlockBegin, but is much faster. + // Must be called with the allocator locked. + void *GetBlockBeginFastLocked(void *p) { + if (primary_.PointerIsMine(p)) + return primary_.GetBlockBegin(p); + return secondary_.GetBlockBeginFastLocked(p); + } + uptr GetActuallyAllocatedSize(void *p) { if (primary_.PointerIsMine(p)) return primary_.GetActuallyAllocatedSize(p); |

