diff --git a/gc.c b/gc.c index d39d14d709..ce80ccff7f 100644 --- a/gc.c +++ b/gc.c @@ -6651,6 +6651,13 @@ rb_during_gc(void) return during_gc; } +int +rb_threadptr_during_gc(rb_thread_t *th) +{ + rb_objspace_t *objspace = rb_objspace_of(th->vm); + return during_gc; +} + #if RGENGC_PROFILE >= 2 static const char *type_name(int type, VALUE obj); diff --git a/gc.h b/gc.h index c723106137..f5e3731d24 100644 --- a/gc.h +++ b/gc.h @@ -90,6 +90,9 @@ const char *rb_obj_info(VALUE obj); const char *rb_raw_obj_info(char *buff, const int buff_size, VALUE obj); void rb_obj_info_dump(VALUE obj); +struct rb_thread_struct; +int rb_threadptr_during_gc(struct rb_thread_struct *th); + RUBY_SYMBOL_EXPORT_BEGIN /* exports for objspace module */ diff --git a/thread.c b/thread.c index c34565e9a1..a93c6100bf 100644 --- a/thread.c +++ b/thread.c @@ -2171,7 +2171,7 @@ ruby_thread_stack_overflow(rb_thread_t *th) { th->raised_flag = 0; #ifdef USE_SIGALTSTACK - if (!rb_during_gc()) { + if (!rb_threadptr_during_gc(th)) { rb_exc_raise(sysstack_error); } #endif