X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=includes%2FStorage.h;h=90e364cbc493052eaba1a211461e26339f53b3a4;hb=a370654a872838c43e63bdd6cc279c0ee9913cdf;hp=28225d7545113393c430fcb62255de350526e1b7;hpb=2aa877f8588da099351ef51efca3605fd87ea768;p=ghc-hetmet.git diff --git a/includes/Storage.h b/includes/Storage.h index 28225d7..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 @@ -576,7 +583,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);