From: Fangrui Song Date: Mon, 9 Jan 2023 19:49:08 +0000 (+0000) Subject: [msan] Use SizeClassAllocator64 for AArch64 X-Git-Tag: upstream/17.0.6~21668 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8e0c1aaf6ba315420e8dc136da3f7abd10f5c4ed;p=platform%2Fupstream%2Fllvm.git [msan] Use SizeClassAllocator64 for AArch64 Now that D137666 requires 48-bit VMA for AArch64, we can switch to SizeClassAllocator64 for a slightly more efficient allocator (asan/lsan already switched by default). It seems that we can pick kSpaceBeg = 0xE00000000000ULL to support both Linux ("app-15") and FreeBSD ("high memory"). Reviewed By: #sanitizers, vitalybuka Differential Revision: https://reviews.llvm.org/D140792 --- diff --git a/compiler-rt/lib/msan/msan_allocator.cpp b/compiler-rt/lib/msan/msan_allocator.cpp index 53f47bd..3308ee7 100644 --- a/compiler-rt/lib/msan/msan_allocator.cpp +++ b/compiler-rt/lib/msan/msan_allocator.cpp @@ -109,17 +109,16 @@ typedef SizeClassAllocator64 PrimaryAllocator; #elif defined(__aarch64__) static const uptr kMaxAllowedMallocSize = 8UL << 30; -struct AP32 { - static const uptr kSpaceBeg = 0; - static const u64 kSpaceSize = SANITIZER_MMAP_RANGE_SIZE; +struct AP64 { + static const uptr kSpaceBeg = 0xE00000000000ULL; + static const uptr kSpaceSize = 0x40000000000; // 4T. static const uptr kMetadataSize = sizeof(Metadata); - typedef __sanitizer::CompactSizeClassMap SizeClassMap; - static const uptr kRegionSizeLog = 20; - using AddressSpaceView = LocalAddressSpaceView; + typedef DefaultSizeClassMap SizeClassMap; typedef MsanMapUnmapCallback MapUnmapCallback; static const uptr kFlags = 0; + using AddressSpaceView = LocalAddressSpaceView; }; -typedef SizeClassAllocator32 PrimaryAllocator; +typedef SizeClassAllocator64 PrimaryAllocator; #endif typedef CombinedAllocator Allocator; typedef Allocator::AllocatorCache AllocatorCache;