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(); }