summaryrefslogtreecommitdiff
path: root/rts/sm/Evac.c
diff options
context:
space:
mode:
Diffstat (limited to 'rts/sm/Evac.c')
-rw-r--r--rts/sm/Evac.c3
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.