diff options
Diffstat (limited to 'rts/sm/Evac.c')
-rw-r--r-- | rts/sm/Evac.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/rts/sm/Evac.c b/rts/sm/Evac.c index 816b5deba3..a1dcd03c4e 100644 --- a/rts/sm/Evac.c +++ b/rts/sm/Evac.c @@ -72,6 +72,7 @@ alloc_in_nonmoving_heap (uint32_t size) gct->copied += size; StgPtr to = nonmovingAllocate(gct->cap, size); + // See Note [Scavenging the non-moving heap] in NonMovingScav.c. // Add segment to the todo list unless it's already there // current->todo_link == NULL means not in todo list struct NonmovingSegment *seg = nonmovingGetSegment(to); @@ -79,6 +80,8 @@ alloc_in_nonmoving_heap (uint32_t size) gen_workspace *ws = &gct->gens[oldest_gen->no]; seg->todo_link = ws->todo_seg; ws->todo_seg = seg; + bdescr *seg_bd = Bdescr((StgPtr) seg); + seg_bd->u.scan = to; } // The object which refers to this closure may have been aged (i.e. |