summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Gamari <ben@smart-cactus.org>2022-10-22 21:15:24 +0000
committerBen Gamari <ben@smart-cactus.org>2022-10-22 21:15:50 +0000
commitddbba3ac974de9df4237558391a2ba86c00706f9 (patch)
tree0e389afd5fab796fa74c9ed117d717d6dce652e8
parent0742ec37fd1bf417fc6f01c095a349e5842a56fa (diff)
downloadhaskell-ddbba3ac974de9df4237558391a2ba86c00706f9.tar.gz
nonmoving: Fix tracking of FILLED_SWEEPING segments
Previously we only updated the state of the segment at the head of each allocator's filled list.
-rw-r--r--rts/sm/NonMoving.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/rts/sm/NonMoving.c b/rts/sm/NonMoving.c
index d47faa2b9f..41dc8bfe8c 100644
--- a/rts/sm/NonMoving.c
+++ b/rts/sm/NonMoving.c
@@ -1068,6 +1068,7 @@ static void nonmovingMark_(MarkQueue *mark_queue, StgWeak **dead_weaks, StgTSO *
while (true) {
// Set snapshot
nonmovingSegmentInfo(seg)->next_free_snap = seg->next_free;
+ SET_SEGMENT_STATE(seg, FILLED_SWEEPING);
n_filled++;
if (seg->link)
seg = seg->link;
@@ -1075,7 +1076,6 @@ static void nonmovingMark_(MarkQueue *mark_queue, StgWeak **dead_weaks, StgTSO *
break;
}
// add filled segments to sweep_list
- SET_SEGMENT_STATE(seg, FILLED_SWEEPING);
seg->link = nonmovingHeap.sweep_list;
nonmovingHeap.sweep_list = filled;
}