nat i;
if (RtsFlags.GcFlags.giveStats >= VERBOSE_GC_STATS) {
- statsPrintf(" Alloc Collect Live GC GC TOT TOT Page Flts\n");
+ statsPrintf(" Alloc Copied Live GC GC TOT TOT Page Flts\n");
statsPrintf(" bytes bytes bytes user elap user elap\n");
}
GC_coll_times =
-------------------------------------------------------------------------- */
void
-stat_endGC (lnat alloc, lnat collect, lnat live, lnat copied,
+stat_endGC (lnat alloc, lnat live, lnat copied,
lnat scavd_copied, lnat gen)
{
if (RtsFlags.GcFlags.giveStats != NO_GC_STATS) {
nat faults = getPageFaults();
statsPrintf("%9ld %9ld %9ld",
- alloc*sizeof(W_), collect*sizeof(W_), live*sizeof(W_));
+ alloc*sizeof(W_), (copied+scavd_copied)*sizeof(W_),
+ live*sizeof(W_));
statsPrintf(" %5.2f %5.2f %7.2f %7.2f %4ld %4ld (Gen: %2ld)\n",
TICK_TO_DBL(gc_time),
TICK_TO_DBL(gc_etime),
void
statDescribeGens(void)
{
- nat g, s, mut, lge, live;
+ nat g, s, mut, lge;
+ lnat live;
bdescr *bd;
step *step;
for (s = 0; s < generations[g].n_steps; s++) {
step = &generations[g].steps[s];
- for (bd = step->large_objects, lge = 0; bd; bd = bd->link)
- lge++;
live = 0;
+ for (bd = step->large_objects, lge = 0; bd; bd = bd->link) {
+ lge++;
+ }
+ live = step->n_large_blocks * BLOCK_SIZE;
bd = step->blocks;
+ // This live figure will be slightly less that the "live" figure
+ // given by +RTS -Sstderr, because we take don't count the
+ // slop at the end of each block.
for (; bd; bd = bd->link) {
live += (bd->free - bd->start) * sizeof(W_);
}