diff --git a/mps/code/arenavm.c b/mps/code/arenavm.c index 399145f3629..f29d860dfae 100644 --- a/mps/code/arenavm.c +++ b/mps/code/arenavm.c @@ -1675,6 +1675,7 @@ static void VMCompact(Arena arena, Trace trace) } DIAG( + Size vmem0 = trace->preTraceArenaReserved; Size vmem2 = VMArenaReserved(arena); Size vmemD = vmem1 - vmem2; Size live = trace->forwardedSize + trace->preservedInPlaceSize; @@ -1684,7 +1685,8 @@ static void VMCompact(Arena arena, Trace trace) || trace->why == TraceStartWhyCLIENTFULL_INCREMENTAL || trace->why == TraceStartWhyCLIENTFULL_BLOCK) { DIAG_SINGLEF(( "VMCompact", - "vmem was $Um$3, ", M_whole(vmem1), M_frac(vmem1), + "pre-collection vmem was $Um$3, ", M_whole(vmem0), M_frac(vmem0), + "peaked at $Um$3, ", M_whole(vmem1), M_frac(vmem1), "released $Um$3, ", M_whole(vmemD), M_frac(vmemD), "now $Um$3", M_whole(vmem2), M_frac(vmem2), " (why $U", trace->why, diff --git a/mps/code/mpmst.h b/mps/code/mpmst.h index c5a4fe0e3f3..488a6d1b54b 100644 --- a/mps/code/mpmst.h +++ b/mps/code/mpmst.h @@ -506,6 +506,7 @@ typedef struct TraceStruct { Bool firstStretch; /* in first stretch of band (see accessor) */ Bool emergency; /* ran out of memory during trace */ Chain chain; /* chain being incrementally collected */ + STATISTIC_DECL(Size preTraceArenaReserved); /* ArenaReserved before this trace */ Size condemned; /* condemned bytes */ Size notCondemned; /* collectable but not condemned */ Size foundation; /* initial grey set size */ diff --git a/mps/code/trace.c b/mps/code/trace.c index 5cffa818009..e553d160318 100644 --- a/mps/code/trace.c +++ b/mps/code/trace.c @@ -663,6 +663,7 @@ found: trace->band = RankAMBIG; /* Required to be the earliest rank. */ trace->emergency = FALSE; trace->chain = NULL; + STATISTIC(trace->preTraceArenaReserved = ArenaReserved(arena)); trace->condemned = (Size)0; /* nothing condemned yet */ trace->notCondemned = (Size)0; trace->foundation = (Size)0; /* nothing grey yet */