diff options
| author | Peter Zhu <peter@peterzhu.ca> | 2026-01-19 19:26:47 -0500 |
|---|---|---|
| committer | Peter Zhu <peter@peterzhu.ca> | 2026-01-20 18:01:22 -0500 |
| commit | e24b52885feaa87cdb5796c2a08e5995274e83cb (patch) | |
| tree | 0d57902e326693a4334f42d6bc2ebf6e322b5f99 | |
| parent | 631a5076dabcb846157a4410bcccf202fce76127 (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.
| -rw-r--r-- | vm.c | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -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; |
