X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=includes%2FStorage.h;h=90e364cbc493052eaba1a211461e26339f53b3a4;hb=e686d8dc6cd67c35132059d0718d1501f0af1e67;hp=32d4e9ba86a555aa08d751a5959f35980a02f13a;hpb=0b0842005c6c68f5f0d7ab428eb153e5a47334d1;p=ghc-hetmet.git diff --git a/includes/Storage.h b/includes/Storage.h index 32d4e9b..90e364c 100644 --- a/includes/Storage.h +++ b/includes/Storage.h @@ -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