diff options
author | Ben Gamari <ben@smart-cactus.org> | 2019-09-28 17:37:35 +0000 |
---|---|---|
committer | Moritz Angermann <moritz.angermann@gmail.com> | 2020-09-18 08:08:18 +0000 |
commit | bb3651d6c943270fa8df0d2eb699f91071c6c576 (patch) | |
tree | 0acbcb26d85d8b4d97a87603fb871c8102135e73 | |
parent | c7fd8edb2bfc5b401cd3c5976dd4ecd6b2a09902 (diff) | |
download | haskell-bb3651d6c943270fa8df0d2eb699f91071c6c576.tar.gz |
rts: Use relaxed atomics for whitehole spin stats
-rw-r--r-- | rts/SMPClosureOps.h | 4 | ||||
-rw-r--r-- | rts/ThreadPaused.c | 2 |
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; |