diff --git a/rts/sm/GCUtils.c b/rts/sm/GCUtils.c index f491fdd992a97a5e4e8a938eea0a0b0a2f327201..30ed8e62597e3e9cfc197501c6cba6846fb09174 100644 --- a/rts/sm/GCUtils.c +++ b/rts/sm/GCUtils.c @@ -341,7 +341,7 @@ alloc_todo_block (gen_workspace *ws, uint32_t size) ws->todo_bd = bd; ws->todo_free = bdescr_free(bd); ws->todo_lim = stg_min(bdescr_start(bd) + bd->blocks * BLOCK_SIZE_W, - bdescr_free(bd) + stg_max(WORK_UNIT_WORDS,size)); + ws->todo_free + stg_max(WORK_UNIT_WORDS,size)); // See Note [big objects] debugTrace(DEBUG_gc, "alloc new todo block %p for gen %d", diff --git a/rts/sm/Scav.c b/rts/sm/Scav.c index 86dd58bbb44a7adbfa31e3015da02f203319321d..13ed14673ab56e4c7677a2886dd5de7369de403c 100644 --- a/rts/sm/Scav.c +++ b/rts/sm/Scav.c @@ -838,11 +838,11 @@ scavenge_block (bdescr *bd) } debugTrace(DEBUG_gc, " scavenged %ld bytes", - (unsigned long)((bdescr_free(bd) - bd->u.scan) * sizeof(W_))); + (unsigned long)((free - bd->u.scan) * sizeof(W_))); // update stats: this is a block that has been scavenged - gct->scanned += bdescr_free(bd) - bd->u.scan; - bd->u.scan = bdescr_free(bd); + gct->scanned += free - bd->u.scan; + bd->u.scan = free; if (bd != ws->todo_bd) { // we're not going to evac any more objects into