wingo pushed a commit to branch wip-whippet
in repository guile.

commit 2f13187f629c704ae9bb54a46d44187afe288a1c
Author: Andy Wingo <wi...@igalia.com>
AuthorDate: Thu May 15 11:59:51 2025 +0200

    Add gc_safepoint_signal_number() API
---
 api/gc-api.h | 1 +
 src/bdw.c    | 3 +++
 src/mmc.c    | 1 +
 src/pcc.c    | 1 +
 src/semi.c   | 1 +
 5 files changed, 7 insertions(+)

diff --git a/api/gc-api.h b/api/gc-api.h
index 3de4272e3..2ab063f8d 100644
--- a/api/gc-api.h
+++ b/api/gc-api.h
@@ -307,6 +307,7 @@ static inline void gc_safepoint(struct gc_mutator *mut) {
     gc_safepoint_slow(mut);
 }
 
+GC_API_ int gc_safepoint_signal_number(void);
 GC_API_ void gc_safepoint_signal_inhibit(struct gc_mutator *mut);
 GC_API_ void gc_safepoint_signal_reallow(struct gc_mutator *mut);
 
diff --git a/src/bdw.c b/src/bdw.c
index da63d7ef5..8419df46e 100644
--- a/src/bdw.c
+++ b/src/bdw.c
@@ -203,6 +203,9 @@ void gc_write_barrier_slow(struct gc_mutator *mut, struct 
gc_ref obj,
 int* gc_safepoint_flag_loc(struct gc_mutator *mut) { GC_CRASH(); }
 void gc_safepoint_slow(struct gc_mutator *mut) { GC_CRASH(); }
 
+int gc_safepoint_signal_number(void) {
+  return GC_get_suspend_signal();
+}
 void gc_safepoint_signal_inhibit(struct gc_mutator *mut) {
   GC_alloc_lock();
 }
diff --git a/src/mmc.c b/src/mmc.c
index 26e3e0652..ab0b9f54a 100644
--- a/src/mmc.c
+++ b/src/mmc.c
@@ -872,6 +872,7 @@ gc_safepoint_slow(struct gc_mutator *mut) {
   heap_unlock(heap);
 }
 
+int gc_safepoint_signal_number(void) { GC_CRASH(); }
 void gc_safepoint_signal_inhibit(struct gc_mutator *mut) { GC_CRASH(); }
 void gc_safepoint_signal_reallow(struct gc_mutator *mut) { GC_CRASH(); }
 
diff --git a/src/pcc.c b/src/pcc.c
index 5e3f459c0..6902b3412 100644
--- a/src/pcc.c
+++ b/src/pcc.c
@@ -1084,6 +1084,7 @@ void gc_safepoint_slow(struct gc_mutator *mut) {
   heap_unlock(heap);
 }
   
+int gc_safepoint_signal_number(void) { GC_CRASH(); }
 void gc_safepoint_signal_inhibit(struct gc_mutator *mut) { GC_CRASH(); }
 void gc_safepoint_signal_reallow(struct gc_mutator *mut) { GC_CRASH(); }
 
diff --git a/src/semi.c b/src/semi.c
index cc8eacb50..a1526cec4 100644
--- a/src/semi.c
+++ b/src/semi.c
@@ -487,6 +487,7 @@ void gc_write_barrier_slow(struct gc_mutator *mut, struct 
gc_ref obj,
 
 int* gc_safepoint_flag_loc(struct gc_mutator *mut) { GC_CRASH(); }
 void gc_safepoint_slow(struct gc_mutator *mut) { GC_CRASH(); }
+int gc_safepoint_signal_number(void) { GC_CRASH(); }
 void gc_safepoint_signal_inhibit(struct gc_mutator *mut) { GC_CRASH(); }
 void gc_safepoint_signal_reallow(struct gc_mutator *mut) { GC_CRASH(); }
   

Reply via email to