diff options
author | Ben Gamari <ben@smart-cactus.org> | 2021-09-24 08:40:40 -0400 |
---|---|---|
committer | Cheng Shao <cheng.shao@tweag.io> | 2021-10-28 17:28:18 +0000 |
commit | 452b4f555a69a51e7d28f2c45c217c083cc3ec25 (patch) | |
tree | f069e0a6382afb75f83e703db06662f1c5a35d3d | |
parent | 8c3bf8af42a3891e28a8edde20f31655cc2a4654 (diff) | |
download | haskell-452b4f555a69a51e7d28f2c45c217c083cc3ec25.tar.gz |
rts/primops: Fix write barrier in stg_atomicModifyMutVarzuzh
Previously the call to dirty_MUT_VAR in stg_atomicModifyMutVarzuzh was
missing its final argument.
Fixes #20414.
(cherry picked from commit 2c02ea8dc33fe008675b1c0629c0ffb0e8ca4482)
-rw-r--r-- | rts/PrimOps.cmm | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/rts/PrimOps.cmm b/rts/PrimOps.cmm index 1bf5b4adae..e97187fe29 100644 --- a/rts/PrimOps.cmm +++ b/rts/PrimOps.cmm @@ -625,7 +625,7 @@ stg_casMutVarzh ( gcptr mv, gcptr old, gcptr new ) return (1,h); } else { if (GET_INFO(mv) == stg_MUT_VAR_CLEAN_info) { - ccall dirty_MUT_VAR(BaseReg "ptr", mv "ptr", old); + ccall dirty_MUT_VAR(BaseReg "ptr", mv "ptr", old "ptr"); } return (0,new); } @@ -638,7 +638,7 @@ stg_casMutVarzh ( gcptr mv, gcptr old, gcptr new ) } else { StgMutVar_var(mv) = new; if (GET_INFO(mv) == stg_MUT_VAR_CLEAN_info) { - ccall dirty_MUT_VAR(BaseReg "ptr", mv "ptr", old); + ccall dirty_MUT_VAR(BaseReg "ptr", mv "ptr", old "ptr"); } return (0,new); } @@ -710,7 +710,7 @@ stg_atomicModifyMutVar2zh ( gcptr mv, gcptr f ) #endif if (GET_INFO(mv) == stg_MUT_VAR_CLEAN_info) { - ccall dirty_MUT_VAR(BaseReg "ptr", mv "ptr", h); + ccall dirty_MUT_VAR(BaseReg "ptr", mv "ptr", h "ptr"); } return (x,z); @@ -762,7 +762,7 @@ stg_atomicModifyMutVarzuzh ( gcptr mv, gcptr f ) #endif if (GET_INFO(mv) == stg_MUT_VAR_CLEAN_info) { - ccall dirty_MUT_VAR(BaseReg "ptr", mv "ptr"); + ccall dirty_MUT_VAR(BaseReg "ptr", mv "ptr", x "ptr"); } return (x,z); |