X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=includes%2FStorage.h;h=90e364cbc493052eaba1a211461e26339f53b3a4;hb=e686d8dc6cd67c35132059d0718d1501f0af1e67;hp=c51f51b4ba62a4840971134ad1554edf791b683f;hpb=4c394999264d602f10e7623cefa7588423c4f68b;p=ghc-hetmet.git diff --git a/includes/Storage.h b/includes/Storage.h index c51f51b..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 @@ -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 @@ -108,6 +113,7 @@ typedef struct generation_ { // stats information unsigned int collections; + unsigned int par_collections; unsigned int failed_promotions; // temporary use during GC: @@ -120,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 @@ -530,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