Keep track of an accurate count of live words in each step
[ghc-hetmet.git] / includes / Storage.h
index c51f51b..d7a8421 100644 (file)
@@ -62,6 +62,7 @@ typedef struct step_ {
 
     bdescr *             blocks;       // blocks in this step
     unsigned int         n_blocks;     // number of blocks
+    unsigned int         n_words;       // number of words
 
     struct step_ *       to;           // destination step for live objects
 
@@ -88,8 +89,12 @@ typedef struct step_ {
     unsigned int n_old_blocks;         // number of blocks in from-space
     
     bdescr *     todos;                        // blocks waiting to be scavenged
+    bdescr *     todos_last;
     unsigned int n_todos;               // count of above
 
+    bdescr *     part_blocks;           // partially-full scanned blocks
+    unsigned int n_part_blocks;         // count of above
+
     bdescr *     scavenged_large_objects;  // live large objs after GC (d-link)
     unsigned int n_scavenged_large_blocks; // size (not count) of above
 
@@ -120,7 +125,7 @@ extern generation * RTS_VAR(g0);
 extern step * RTS_VAR(g0s0);
 extern generation * RTS_VAR(oldest_gen);
 extern step * RTS_VAR(all_steps);
-extern nat total_steps;
+extern nat RTS_VAR(total_steps);
 
 /* -----------------------------------------------------------------------------
    Initialisation / De-initialisation