summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rts/PrimOps.cmm6
1 files changed, 6 insertions, 0 deletions
diff --git a/rts/PrimOps.cmm b/rts/PrimOps.cmm
index 77b5d62cc1..da6b6f16d8 100644
--- a/rts/PrimOps.cmm
+++ b/rts/PrimOps.cmm
@@ -799,6 +799,12 @@ stg_addCFinalizzerToWeakzh ( W_ fptr, // finalizer
return (0);
}
+ // Write barrier for concurrent non-moving collector
+ if (nonmoving_write_barrier_enabled != 0) (likely: False) {
+ ccall updateRemembSetPushClosure(MyCapability() "ptr",
+ StgWeak_cfinalizers(w) "ptr", NULL);
+ }
+
StgCFinalizerList_link(c) = StgWeak_cfinalizers(w);
StgWeak_cfinalizers(w) = c;