X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;ds=sidebyside;f=rts%2Fsm%2FScav.c-inc;h=6f852035b5d1a75e5894ec9411d98a50d15146ff;hb=dbbf15c0f141357aa49b583286174867baadb821;hp=09cdf363ad5d67ce2aa927621a077ac933c8e26d;hpb=4b123ceba0c0a2f72494479a03ac9c94b6166c92;p=ghc-hetmet.git diff --git a/rts/sm/Scav.c-inc b/rts/sm/Scav.c-inc index 09cdf36..6f85203 100644 --- a/rts/sm/Scav.c-inc +++ b/rts/sm/Scav.c-inc @@ -15,7 +15,7 @@ // defined, the second time without. #ifndef PARALLEL_GC -#define scavenge_block(a,b) scavenge_block1(a,b) +#define scavenge_block(a) scavenge_block1(a) #define evacuate(a) evacuate1(a) #define recordMutableGen_GC(a,b) recordMutableGen(a,b) #else @@ -24,7 +24,7 @@ #undef recordMutableGen_GC #endif -static void scavenge_block (bdescr *bd, StgPtr scan); +static void scavenge_block (bdescr *bd); /* ----------------------------------------------------------------------------- Scavenge a block from the given scan pointer up to bd->free. @@ -39,7 +39,7 @@ static void scavenge_block (bdescr *bd, StgPtr scan); -------------------------------------------------------------------------- */ static void -scavenge_block (bdescr *bd, StgPtr scan) +scavenge_block (bdescr *bd) { StgPtr p, q; StgInfoTable *info; @@ -47,10 +47,10 @@ scavenge_block (bdescr *bd, StgPtr scan) rtsBool saved_eager_promotion; step_workspace *ws; - p = scan; + p = bd->u.scan; debugTrace(DEBUG_gc, "scavenging block %p (gen %d, step %d) @ %p", - bd->start, bd->gen_no, bd->step->no, scan); + bd->start, bd->gen_no, bd->step->no, p); gct->evac_step = bd->step; saved_evac_step = gct->evac_step; @@ -448,7 +448,12 @@ scavenge_block (bdescr *bd, StgPtr scan) } debugTrace(DEBUG_gc, " scavenged %ld bytes", - (unsigned long)((bd->free - scan) * sizeof(W_))); + (unsigned long)((bd->free - bd->u.scan) * sizeof(W_))); + + // update stats: this is a block that has been copied & scavenged + gct->copied += bd->free - bd->u.scan; + + bd->u.scan = bd->free; } #undef scavenge_block