summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Gamari <ben@smart-cactus.org>2019-09-28 17:37:35 +0000
committerMoritz Angermann <moritz.angermann@gmail.com>2020-09-18 08:08:18 +0000
commitbb3651d6c943270fa8df0d2eb699f91071c6c576 (patch)
tree0acbcb26d85d8b4d97a87603fb871c8102135e73
parentc7fd8edb2bfc5b401cd3c5976dd4ecd6b2a09902 (diff)
downloadhaskell-bb3651d6c943270fa8df0d2eb699f91071c6c576.tar.gz
rts: Use relaxed atomics for whitehole spin stats
-rw-r--r--rts/SMPClosureOps.h4
-rw-r--r--rts/ThreadPaused.c2
2 files changed, 3 insertions, 3 deletions
diff --git a/rts/SMPClosureOps.h b/rts/SMPClosureOps.h
index 3191a8c600..2df88db06c 100644
--- a/rts/SMPClosureOps.h
+++ b/rts/SMPClosureOps.h
@@ -62,12 +62,12 @@ EXTERN_INLINE StgInfoTable *reallyLockClosure(StgClosure *p)
info = xchg((P_)(void *)&p->header.info, (W_)&stg_WHITEHOLE_info);
if (info != (W_)&stg_WHITEHOLE_info) return (StgInfoTable *)info;
#if defined(PROF_SPIN)
- ++whitehole_lockClosure_spin;
+ NONATOMIC_ADD(&whitehole_lockClosure_spin, 1);
#endif
busy_wait_nop();
} while (++i < SPIN_COUNT);
#if defined(PROF_SPIN)
- ++whitehole_lockClosure_yield;
+ NONATOMIC_ADD(&whitehole_lockClosure_yield, 1);
#endif
yieldThread();
} while (1);
diff --git a/rts/ThreadPaused.c b/rts/ThreadPaused.c
index be0edecbb3..327161b3c6 100644
--- a/rts/ThreadPaused.c
+++ b/rts/ThreadPaused.c
@@ -334,7 +334,7 @@ threadPaused(Capability *cap, StgTSO *tso)
if (cur_bh_info != bh_info) {
bh_info = cur_bh_info;
#if defined(PROF_SPIN)
- ++whitehole_threadPaused_spin;
+ NONATOMIC_ADD(&whitehole_threadPaused_spin, 1);
#endif
busy_wait_nop();
goto retry;