From 661f64e87643f7a7f5042b0454b751215df8b40f Mon Sep 17 00:00:00 2001 From: Peter Zhu Date: Thu, 12 Sep 2024 10:23:16 -0400 Subject: [PATCH] Add variable objspace in RB_GC_MARK_OR_TRAVERSE --- gc.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/gc.c b/gc.c index ecfba4b58b..43ace78f21 100644 --- a/gc.c +++ b/gc.c @@ -2039,14 +2039,15 @@ ruby_stack_check(void) #define RB_GC_MARK_OR_TRAVERSE(func, obj_or_ptr, obj, check_obj) do { \ if (!RB_SPECIAL_CONST_P(obj)) { \ rb_vm_t *vm = GET_VM(); \ + void *objspace = vm->gc.objspace; \ if (LIKELY(vm->gc.mark_func_data == NULL)) { \ - (func)(vm->gc.objspace, (obj_or_ptr)); \ + (func)(objspace, (obj_or_ptr)); \ } \ else if (check_obj ? \ - rb_gc_impl_pointer_to_heap_p(vm->gc.objspace, (const void *)obj) && \ - !rb_gc_impl_garbage_object_p(vm->gc.objspace, obj) : \ + rb_gc_impl_pointer_to_heap_p(objspace, (const void *)obj) && \ + !rb_gc_impl_garbage_object_p(objspace, obj) : \ true) { \ - GC_ASSERT(!rb_gc_impl_during_gc_p(vm->gc.objspace)); \ + GC_ASSERT(!rb_gc_impl_during_gc_p(objspace)); \ struct gc_mark_func_data_struct *mark_func_data = vm->gc.mark_func_data; \ vm->gc.mark_func_data = NULL; \ mark_func_data->mark_func((obj), mark_func_data->data); \