From 12e20a446e4df75a6aa147dd322ba6a34545c2bc Mon Sep 17 00:00:00 2001 From: Petr Hosek Date: Wed, 30 Nov 2022 02:34:46 +0000 Subject: [PATCH] [scudo] Do not consider releasing unallocated pages We already know that there are no free blocks above Region->AllocatedUser. This results in a smaller RegionPageMap and faster releaseFreeMemoryToOS. Patch By: fabio-d Differential Revision: https://reviews.llvm.org/D138794 --- compiler-rt/lib/scudo/standalone/primary64.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/compiler-rt/lib/scudo/standalone/primary64.h b/compiler-rt/lib/scudo/standalone/primary64.h index d06a047fa659..b653bc802022 100644 --- a/compiler-rt/lib/scudo/standalone/primary64.h +++ b/compiler-rt/lib/scudo/standalone/primary64.h @@ -691,7 +691,8 @@ private: const uptr GroupSize = (1U << GroupSizeLog); const uptr AllocatedUserEnd = Region->AllocatedUser + Region->RegionBeg; ReleaseRecorder Recorder(Region->RegionBeg, &Region->Data); - PageReleaseContext Context(BlockSize, RegionSize, /*NumberOfRegions=*/1U); + PageReleaseContext Context(BlockSize, Region->AllocatedUser, + /*NumberOfRegions=*/1U); const uptr CompactPtrBase = getCompactPtrBaseByClassId(ClassId); auto DecompactPtr = [CompactPtrBase](CompactPtrT CompactPtr) {