[compiler-rt] [scudo] Add EnableMultiRegions mode (PR #98076)
Christopher Ferris via llvm-commits
llvm-commits at lists.llvm.org
Fri Sep 6 16:33:42 PDT 2024
================
@@ -117,35 +128,45 @@ template <typename Config> class SizeClassAllocator64 {
SmallerBlockReleasePageDelta =
PagesInGroup * (1 + MinSizeClass / 16U) / 100;
+ RegionInfoManager.init(RegionInfoAllocator);
+
u32 Seed;
const u64 Time = getMonotonicTimeFast();
if (!getRandom(reinterpret_cast<void *>(&Seed), sizeof(Seed)))
Seed = static_cast<u32>(Time ^ (reinterpret_cast<uptr>(&Seed) >> 12));
for (uptr I = 0; I < NumClasses; I++)
- getRegionInfo(I)->RandState = getRandomU32(&Seed);
+ RegionInfoManager.getCurRegionInfo(I)->RandState = getRandomU32(&Seed);
if (Config::getEnableContiguousRegions()) {
ReservedMemoryT ReservedMemory = {};
+ // Block grouping requires the base address of a Region to be aligned
+ // with GrouopSize and pointer is compacted according to the offset to the
+ // base of a region so it always meets the requirement. As a result when
+ // the compaction is disabled, it relies the base address to be aligned.
----------------
cferris1000 wrote:
it relies the base address -> it relies on the base address
https://github.com/llvm/llvm-project/pull/98076
More information about the llvm-commits
mailing list