summaryrefslogtreecommitdiff
path: root/vm.c
diff options
context:
space:
mode:
authorPeter Zhu <peter@peterzhu.ca>2026-01-19 19:26:47 -0500
committerPeter Zhu <peter@peterzhu.ca>2026-01-20 18:01:22 -0500
commite24b52885feaa87cdb5796c2a08e5995274e83cb (patch)
tree0d57902e326693a4334f42d6bc2ebf6e322b5f99 /vm.c
parent631a5076dabcb846157a4410bcccf202fce76127 (diff)
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.
Diffstat (limited to 'vm.c')
-rw-r--r--vm.c5
1 files 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;