diff options
Diffstat (limited to 'libsanitizer/sanitizer_common/sanitizer_allocator_internal.h')
-rw-r--r-- | libsanitizer/sanitizer_common/sanitizer_allocator_internal.h | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/libsanitizer/sanitizer_common/sanitizer_allocator_internal.h b/libsanitizer/sanitizer_common/sanitizer_allocator_internal.h index c033b96e4dd..efdb89e3682 100644 --- a/libsanitizer/sanitizer_common/sanitizer_allocator_internal.h +++ b/libsanitizer/sanitizer_common/sanitizer_allocator_internal.h @@ -25,21 +25,25 @@ static const uptr kInternalAllocatorSpace = 0; #if SANITIZER_WORDSIZE == 32 static const u64 kInternalAllocatorSize = (1ULL << 32); static const uptr kInternalAllocatorRegionSizeLog = 20; +static const uptr kInternalAllocatorNumRegions = + kInternalAllocatorSize >> kInternalAllocatorRegionSizeLog; +typedef FlatByteMap<kInternalAllocatorNumRegions> ByteMap; #else static const u64 kInternalAllocatorSize = (1ULL << 47); static const uptr kInternalAllocatorRegionSizeLog = 24; -#endif -static const uptr kInternalAllocatorFlatByteMapSize = +static const uptr kInternalAllocatorNumRegions = kInternalAllocatorSize >> kInternalAllocatorRegionSizeLog; +typedef TwoLevelByteMap<(kInternalAllocatorNumRegions >> 12), 1 << 12> ByteMap; +#endif typedef SizeClassAllocator32< kInternalAllocatorSpace, kInternalAllocatorSize, 16, InternalSizeClassMap, - kInternalAllocatorRegionSizeLog, - FlatByteMap<kInternalAllocatorFlatByteMapSize> > PrimaryInternalAllocator; + kInternalAllocatorRegionSizeLog, ByteMap> PrimaryInternalAllocator; typedef SizeClassAllocatorLocalCache<PrimaryInternalAllocator> InternalAllocatorCache; -// We don't want our internal allocator to do any map/unmap operations. +// We don't want our internal allocator to do any map/unmap operations from +// LargeMmapAllocator. struct CrashOnMapUnmap { void OnMap(uptr p, uptr size) const { RAW_CHECK_MSG(0, "Unexpected mmap in InternalAllocator!"); |