Skip to content
Snippets Groups Projects
Commit 21c807df authored by GHC GitLab CI's avatar GHC GitLab CI Committed by Ben Gamari
Browse files

nonmoving: Fix regression from TSAN work

The TSAN rework (specifically aad1f803) introduced a subtle regression
in GC.c, swapping `g0` in place of `gen`. Whoops!

Fixes #18997.
parent 3e75b0db
No related branches found
No related tags found
No related merge requests found
......@@ -1701,13 +1701,8 @@ collect_gct_blocks (void)
static void
collect_pinned_object_blocks (void)
{
generation *gen;
const bool use_nonmoving = RtsFlags.GcFlags.useNonmoving;
if (use_nonmoving && major_gc) {
gen = oldest_gen;
} else {
gen = g0;
}
generation *const gen = (use_nonmoving && major_gc) ? oldest_gen : g0;
for (uint32_t n = 0; n < n_capabilities; n++) {
bdescr *last = NULL;
......@@ -1732,7 +1727,7 @@ collect_pinned_object_blocks (void)
if (gen->large_objects != NULL) {
gen->large_objects->u.back = last;
}
g0->large_objects = RELAXED_LOAD(&capabilities[n]->pinned_object_blocks);
gen->large_objects = RELAXED_LOAD(&capabilities[n]->pinned_object_blocks);
RELAXED_STORE(&capabilities[n]->pinned_object_blocks, NULL);
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment