From e24b52885feaa87cdb5796c2a08e5995274e83cb Mon Sep 17 00:00:00 2001 From: Peter Zhu Date: Mon, 19 Jan 2026 19:26:47 -0500 Subject: Allow objects on Ruby stack to be GC movable Objects on the Ruby stack can be GC movable and there is corresponding code in rb_execution_context_update to update references for moved objects. --- vm.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/vm.c b/vm.c index 7c86c0ff54..2cae6779d9 100644 --- a/vm.c +++ b/vm.c @@ -3682,8 +3682,9 @@ rb_execution_context_mark(const rb_execution_context_t *ec) rb_control_frame_t *cfp = ec->cfp; rb_control_frame_t *limit_cfp = (void *)(ec->vm_stack + ec->vm_stack_size); - VM_ASSERT(sp == ec->cfp->sp); - rb_gc_mark_vm_stack_values((long)(sp - p), p); + for (long i = 0; i < (long)(sp - p); i++) { + rb_gc_mark_movable(p[i]); + } while (cfp != limit_cfp) { const VALUE *ep = cfp->ep; -- cgit v1.2.3