diff options
author | Ben Gamari <ben@smart-cactus.org> | 2019-02-13 15:12:22 -0500 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2019-02-22 11:26:41 -0500 |
commit | ec03303d29ce604660c0e67e5aeb4b1ac8194dfd (patch) | |
tree | 4c990831357c26b82732ee3a294bb874777455e9 | |
parent | a12ac46826cddb4ce798e4d7d80747aa9f8b1d69 (diff) | |
download | haskell-ec03303d29ce604660c0e67e5aeb4b1ac8194dfd.tar.gz |
rts: Add missing write barrier for addCFinalizerToWeak#
Fixes #154.
-rw-r--r-- | rts/PrimOps.cmm | 6 |
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; |