anyWork(): count the number of times we don't find any work
[ghc-hetmet.git] / rts / sm / Scav.c
index b22f244..4ba80c4 100644 (file)
@@ -1405,6 +1405,8 @@ scavenge_find_global_work (void)
     rtsBool flag;
     step_workspace *ws;
 
+    gct->scav_global_work++;
+
     flag = rtsFalse;
     for (s = total_steps-1; s>=0; s--)
     {
@@ -1457,6 +1459,8 @@ scavenge_find_local_work (void)
     step_workspace *ws;
     rtsBool flag;
 
+    gct->scav_local_work++;
+
     flag = rtsFalse;
     for (s = total_steps-1; s >= 0; s--) {
         if (s == 0 && RtsFlags.GcFlags.generations > 1) { 
@@ -1551,6 +1555,8 @@ any_work (void)
     int s;
     step_workspace *ws;
 
+    gct->any_work++;
+
     write_barrier();
 
     // scavenge static objects 
@@ -1576,5 +1582,7 @@ any_work (void)
         if (ws->stp->todos) return rtsTrue;
     }
 
+    gct->no_work++;
+
     return rtsFalse;
 }