Index: lib/sanitizer_common/sanitizer_allocator_primary32.h =================================================================== --- lib/sanitizer_common/sanitizer_allocator_primary32.h +++ lib/sanitizer_common/sanitizer_allocator_primary32.h @@ -47,6 +47,10 @@ template class SizeClassAllocator32 { + private: + static const u64 TwoLevelByteMapSize1 = + (Params::kSpaceSize >> Params::kRegionSizeLog) >> 12; + public: using AddressSpaceView = typename Params::AddressSpaceView; static const uptr kSpaceBeg = Params::kSpaceBeg; @@ -58,12 +62,12 @@ typedef typename Params::MapUnmapCallback MapUnmapCallback; #if SANITIZER_WORDSIZE == 32 + static_assert(TwoLevelByteMapSize1 <= 128, "FlatByteMap should be used"); using BM = FlatByteMap<(Params::kSpaceSize >> Params::kRegionSizeLog), AddressSpaceView>; #elif SANITIZER_WORDSIZE == 64 - using BM = - TwoLevelByteMap<((Params::kSpaceSize >> Params::kRegionSizeLog) >> 12), - 1 << 12, AddressSpaceView>; + static_assert(TwoLevelByteMapSize1 > 128, "TwoLevelByteMap should be used"); + using BM = TwoLevelByteMap; #endif static_assert((Params::kFlags & SizeClassAllocator32FlagMasks::kForTest) || is_same::value,