diff options
author | Ben Gamari <ben@smart-cactus.org> | 2019-10-20 11:58:00 -0400 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2022-11-16 21:37:06 -0500 |
commit | fd91365dece868fc77592764cf3383b8e72ec7d8 (patch) | |
tree | 258d6548a4e61dac2b85028d9c7f6c4246e2ed9f | |
parent | 2312f856cc9537f473096cf404f807f6a1fb23c8 (diff) | |
download | haskell-fd91365dece868fc77592764cf3383b8e72ec7d8.tar.gz |
Annotate the stable pointer lock
-rw-r--r-- | rts/StablePtr.c | 4 | ||||
-rw-r--r-- | rts/ward.config | 3 |
2 files changed, 7 insertions, 0 deletions
diff --git a/rts/StablePtr.c b/rts/StablePtr.c index c2e7cda2c3..e4d2c8ed12 100644 --- a/rts/StablePtr.c +++ b/rts/StablePtr.c @@ -131,6 +131,7 @@ static void enlargeStablePtrTable(void); * calls to freeStablePtr(). * -------------------------------------------------------------------------- */ +WARD_GRANT(stable_ptr_lock_held) void stablePtrLock(void) { @@ -138,6 +139,8 @@ stablePtrLock(void) ACQUIRE_LOCK(&stable_ptr_mutex); } +WARD_REVOKE(stable_ptr_lock_held) +WARD_NEED(stable_ptr_lock_held) void stablePtrUnlock(void) { @@ -178,6 +181,7 @@ initStablePtrTable(void) * -------------------------------------------------------------------------- */ // Must be holding stable_ptr_mutex +WARD_NEED(stable_ptr_lock_held) static void enlargeStablePtrTable(void) { diff --git a/rts/ward.config b/rts/ward.config index 0ca5b41f08..91aead362d 100644 --- a/rts/ward.config +++ b/rts/ward.config @@ -12,6 +12,8 @@ sharing_sm_lock "the storage manager lock is held by the GC and mediated via gc_ gc_block_alloc_spin_held "gc_block_alloc_spin is held" -> sharing_sm_lock; +stable_ptr_lock_held "the stable pointer lock is held"; + .enforce "Storage.c"; .enforce "GC.c"; .enforce "MarkWeak.c"; @@ -22,3 +24,4 @@ gc_block_alloc_spin_held "gc_block_alloc_spin is held" .enforce "BlockAlloc.c"; .enforce "Schedule.c"; .enforce "RaiseAsync.c"; +.enforce "StablePtr.c"; |