summaryrefslogtreecommitdiff
path: root/compiler-rt
diff options
context:
space:
mode:
authorChristopher Ferris <cferris@google.com>2023-05-08 19:12:32 -0700
committerChristopher Ferris <cferris@google.com>2023-05-09 15:40:57 -0700
commit526027df2d62432db3cfce3a61356369ed13cf5e (patch)
treef034e94e3ef5d580041595b4024fdfca8e0f36ca /compiler-rt
parent41429523521cff12124ec7ec88c92dfe8547a13e (diff)
downloadllvm-526027df2d62432db3cfce3a61356369ed13cf5e.tar.gz
[scudo] Change secondary StatsAllocated update
In the secondary allocation routine, the StatsAllocated stat is increased by BlockSize. However, in the deallocate routine, the stat subtract uses CommitSize. CommitSize can be bigger than BlockSize so this can lead to a negative calculated stat. Since the stats are not guaranteed to be completely accurate, just add CommitSize during allocation. Reviewed By: Chia-hungDuan Differential Revision: https://reviews.llvm.org/D150169
Diffstat (limited to 'compiler-rt')
-rw-r--r--compiler-rt/lib/scudo/standalone/secondary.h5
1 files changed, 2 insertions, 3 deletions
diff --git a/compiler-rt/lib/scudo/standalone/secondary.h b/compiler-rt/lib/scudo/standalone/secondary.h
index 935b48914d00..94009f5fa9c6 100644
--- a/compiler-rt/lib/scudo/standalone/secondary.h
+++ b/compiler-rt/lib/scudo/standalone/secondary.h
@@ -522,13 +522,12 @@ void *MapAllocator<Config>::allocate(Options Options, uptr Size, uptr Alignment,
if (FillContents && !Zeroed)
memset(Ptr, FillContents == ZeroFill ? 0 : PatternFillByte,
BlockEnd - PtrInt);
- const uptr BlockSize = BlockEnd - HInt;
{
ScopedLock L(Mutex);
InUseBlocks.push_back(H);
- AllocatedBytes += BlockSize;
+ AllocatedBytes += H->CommitSize;
NumberOfAllocs++;
- Stats.add(StatAllocated, BlockSize);
+ Stats.add(StatAllocated, H->CommitSize);
Stats.add(StatMapped, H->MemMap.getCapacity());
}
return Ptr;