summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUbuntu <ubuntu@ip-172-31-25-209.ec2.internal>2023-04-18 10:53:15 +0000
committerBen Gamari <ben@smart-cactus.org>2023-04-24 06:04:18 -0400
commitb20f33cf3230c4b49f5b012312c7a76ea68c63bd (patch)
tree3ab020da406e9388ba9ffe0ccf9a0422fb8a003c
parent59793d312cc0a8d4cc2bc9544eb14db49b20d3a7 (diff)
downloadhaskell-b20f33cf3230c4b49f5b012312c7a76ea68c63bd.tar.gz
Add acquire fence in WHITEHOLE
-rw-r--r--rts/StgMiscClosures.cmm3
1 files changed, 2 insertions, 1 deletions
diff --git a/rts/StgMiscClosures.cmm b/rts/StgMiscClosures.cmm
index 201e76d58a..dff15133b9 100644
--- a/rts/StgMiscClosures.cmm
+++ b/rts/StgMiscClosures.cmm
@@ -658,7 +658,7 @@ INFO_TABLE(stg_WHITEHOLE, 0,0, WHITEHOLE, "WHITEHOLE", "WHITEHOLE")
i = 0;
loop:
// spin until the WHITEHOLE is updated
- info = StgHeader_info(node);
+ info = %relaxed StgHeader_info(node);
if (info == stg_WHITEHOLE_info) {
#if defined(PROF_SPIN)
W_[whitehole_lockClosure_spin] =
@@ -677,6 +677,7 @@ loop:
// defined in CMM.
goto loop;
}
+ ACQUIRE_FENCE;
jump %ENTRY_CODE(info) (node);
#else
ccall barf("WHITEHOLE object (%p) entered!", R1) never returns;