oops, undo accidental patch
[ghc-hetmet.git] / ghc / rts / Stats.c
index 985b774..28d09bd 100644 (file)
@@ -126,7 +126,7 @@ initStats(void)
     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 = 
@@ -251,7 +251,7 @@ stat_startGC(void)
    -------------------------------------------------------------------------- */
 
 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) {
@@ -265,7 +265,8 @@ stat_endGC (lnat alloc, lnat collect, lnat live, lnat copied,
            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),
@@ -542,7 +543,8 @@ stat_exit(int alloc)
 void
 statDescribeGens(void)
 {
-  nat g, s, mut, lge, live;
+  nat g, s, mut, lge;
+  lnat live;
   bdescr *bd;
   step *step;
 
@@ -561,10 +563,15 @@ statDescribeGens(void)
 
     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_);
       }