Allow work units smaller than a block to improve load balancing
[ghc-hetmet.git] / includes / Storage.h
index 28225d7..3fcdfeb 100644 (file)
@@ -88,8 +88,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 +124,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
@@ -576,7 +580,6 @@ extern void newDynCAF(StgClosure *);
 extern void move_TSO(StgTSO *src, StgTSO *dest);
 extern StgTSO *relocate_stack(StgTSO *dest, ptrdiff_t diff);
 
-extern StgClosure * RTS_VAR(scavenged_static_objects);
 extern StgWeak    * RTS_VAR(old_weak_ptr_list);
 extern StgWeak    * RTS_VAR(weak_ptr_list);
 extern StgClosure * RTS_VAR(caf_list);