pad step_workspace to 64 bytes, to speed up access to gct->steps[]
[ghc-hetmet.git] / includes / Storage.h
index 32d4e9b..90e364c 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
 
@@ -91,6 +92,9 @@ typedef struct step_ {
     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
 
@@ -109,6 +113,7 @@ typedef struct generation_ {
     
     // stats information
     unsigned int collections;
+    unsigned int par_collections;
     unsigned int failed_promotions;
 
     // temporary use during GC:
@@ -121,7 +126,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
@@ -531,16 +536,17 @@ extern void     resizeNurseries      ( nat blocks );
 extern void     resizeNurseriesFixed ( nat blocks );
 extern lnat     countNurseryBlocks   ( void );
 
+
 /* -----------------------------------------------------------------------------
    Functions from GC.c 
    -------------------------------------------------------------------------- */
 
-typedef void (*evac_fn)(StgClosure **);
+typedef void (*evac_fn)(void *user, StgClosure **root);
 
 extern void         threadPaused ( Capability *cap, StgTSO * );
 extern StgClosure * isAlive      ( StgClosure *p );
-extern void         markCAFs     ( evac_fn evac );
-extern void         GetRoots     ( evac_fn evac );
+extern void         markCAFs     ( evac_fn evac, void *user );
+extern void         GetRoots     ( evac_fn evac, void *user );
 
 /* -----------------------------------------------------------------------------
    Stats 'n' DEBUG stuff