Revert "[scudo] Fix the calculating of memory group usage"
This reverts commit 6130d67f70ad2e063b4407b6ee31c7db19464fee.
GitOrigin-RevId: 69fe7abb393ba7d6ee9c8ff1429316845b5bad37
diff --git a/lib/scudo/standalone/primary32.h b/lib/scudo/standalone/primary32.h
index a3d908c..6e791a1 100644
--- a/lib/scudo/standalone/primary32.h
+++ b/lib/scudo/standalone/primary32.h
@@ -708,10 +708,8 @@
if (AllocatedGroupSize == 0)
continue;
- // TransferBatches are pushed in front of BG.Batches. The first one may
- // not have all caches used.
const uptr NumBlocks = (BG.Batches.size() - 1) * BG.MaxCachedPerBatch +
- BG.Batches.front()->getCount();
+ BG.Batches.back()->getCount();
const uptr BytesInBG = NumBlocks * BlockSize;
// Given the randomness property, we try to release the pages only if the
// bytes used by free blocks exceed certain proportion of allocated
diff --git a/lib/scudo/standalone/primary64.h b/lib/scudo/standalone/primary64.h
index c64f9b8..a3684c9 100644
--- a/lib/scudo/standalone/primary64.h
+++ b/lib/scudo/standalone/primary64.h
@@ -702,49 +702,16 @@
BG.PushedBlocks - BG.PushedBlocksAtLastCheckpoint;
if (PushedBytesDelta * BlockSize < PageSize)
continue;
-
- // Group boundary does not necessarily have the same alignment as Region.
- // It may sit across a Region boundary. Which means that we may have the
- // following two cases,
- //
- // 1. Group boundary sits before RegionBeg.
- //
- // (BatchGroupBeg)
- // batchGroupBase RegionBeg BatchGroupEnd
- // | | |
- // v v v
- // +------------+----------------+
- // \ /
- // ------ GroupSize ------
- //
- // 2. Group boundary sits after RegionBeg.
- //
- // (BatchGroupBeg)
- // RegionBeg batchGroupBase BatchGroupEnd
- // | | |
- // v v v
- // +-----------+-----------------------------+
- // \ /
- // ------ GroupSize ------
- //
- // Note that in the first case, the group range before RegionBeg is never
- // used. Therefore, while calculating the used group size, we should
- // exclude that part to get the correct size.
- const uptr BatchGroupBeg =
- Max(batchGroupBase(BG.GroupId, CompactPtrBase), Region->RegionBeg);
- DCHECK_GE(AllocatedUserEnd, BatchGroupBeg);
const uptr BatchGroupEnd =
batchGroupBase(BG.GroupId, CompactPtrBase) + GroupSize;
const uptr AllocatedGroupSize = AllocatedUserEnd >= BatchGroupEnd
- ? BatchGroupEnd - BatchGroupBeg
- : AllocatedUserEnd - BatchGroupBeg;
+ ? GroupSize
+ : AllocatedUserEnd - BatchGroupEnd;
if (AllocatedGroupSize == 0)
continue;
- // TransferBatches are pushed in front of BG.Batches. The first one may
- // not have all caches used.
const uptr NumBlocks = (BG.Batches.size() - 1) * BG.MaxCachedPerBatch +
- BG.Batches.front()->getCount();
+ BG.Batches.back()->getCount();
const uptr BytesInBG = NumBlocks * BlockSize;
// Given the randomness property, we try to release the pages only if the
// bytes used by free blocks exceed certain proportion of group size. Note