summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Gamari <ben@smart-cactus.org>2019-10-21 14:20:15 -0400
committerBen Gamari <ben@smart-cactus.org>2022-11-16 21:46:49 -0500
commit1e9ad6321618fd351d4ae2a460e0b1bbe2f1b1c4 (patch)
treeef2ad14dc59cd90d3216b7a002722c7b4b7c603a
parenta222757605aed368054b0ccd4d40bbc5bfa559f3 (diff)
downloadhaskell-1e9ad6321618fd351d4ae2a460e0b1bbe2f1b1c4.tar.gz
Hi
-rw-r--r--rts/Arena.c1
-rw-r--r--rts/include/Rts.h1
-rw-r--r--rts/sm/GC.c1
3 files changed, 3 insertions, 0 deletions
diff --git a/rts/Arena.c b/rts/Arena.c
index 8129475332..154769fb04 100644
--- a/rts/Arena.c
+++ b/rts/Arena.c
@@ -98,6 +98,7 @@ arenaAlloc( Arena *arena, size_t size )
}
// Free an entire arena
+WARD_NEED(may_take_sm_lock)
void
arenaFree( Arena *arena )
{
diff --git a/rts/include/Rts.h b/rts/include/Rts.h
index 09a0adab49..86dbe022db 100644
--- a/rts/include/Rts.h
+++ b/rts/include/Rts.h
@@ -91,6 +91,7 @@ extern "C" {
#define WARD_USES(perm) WARD_ANN(uses(perm))
#define WARD_GRANT(perm) WARD_ANN(grant(perm))
#define WARD_REVOKE(perm) WARD_ANN(revoke(perm))
+#define WARD_WAIVE(perm) WARD_ANN(waive(perm))
/* __builtin_unreachable is supported since GNU C 4.5 */
#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)
diff --git a/rts/sm/GC.c b/rts/sm/GC.c
index e7e0e80150..ba7bc82039 100644
--- a/rts/sm/GC.c
+++ b/rts/sm/GC.c
@@ -251,6 +251,7 @@ SHARE_SM_LOCK(void)
}
WARD_GRANT(may_take_sm_lock)
+WARD_WAIVE(may_take_sm_lock)
WARD_NEED(sharing_sm_lock)
WARD_REVOKE(sharing_sm_lock)
WARD_NEED(sm_lock_held)