diff options
author | Ben Gamari <ben@smart-cactus.org> | 2021-09-24 08:40:40 -0400 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2021-10-12 01:40:29 -0400 |
commit | 2c02ea8dc33fe008675b1c0629c0ffb0e8ca4482 (patch) | |
tree | 7b9becc3dc63a10980bbf3f78c1e7b0ce2106531 | |
parent | aa520ba158d9f73a3e59af4fbce3b9d294254965 (diff) | |
download | haskell-2c02ea8dc33fe008675b1c0629c0ffb0e8ca4482.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.
-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 2211dce391..0cb87242f6 100644 --- a/rts/PrimOps.cmm +++ b/rts/PrimOps.cmm @@ -673,7 +673,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); } @@ -686,7 +686,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); } @@ -758,7 +758,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); @@ -810,7 +810,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); |