diff options
Diffstat (limited to 'vm.c')
-rw-r--r-- | vm.c | 34 |
1 files changed, 9 insertions, 25 deletions
@@ -2685,36 +2685,20 @@ thread_alloc(VALUE klass) return obj; } -inline void -rb_ec_set_vm_stack(rb_execution_context_t *ec, VALUE *stack, size_t size) -{ - ec->vm_stack = stack; - ec->vm_stack_size = size; -} - void rb_ec_initialize_vm_stack(rb_execution_context_t *ec, VALUE *stack, size_t size) { - rb_ec_set_vm_stack(ec, stack, size); - - ec->cfp = (void *)(ec->vm_stack + ec->vm_stack_size); + rb_ec_set_vm_stack(ec, stack, size); - rb_vm_push_frame(ec, - NULL /* dummy iseq */, - VM_FRAME_MAGIC_DUMMY | VM_ENV_FLAG_LOCAL | VM_FRAME_FLAG_FINISH | VM_FRAME_FLAG_CFRAME /* dummy frame */, - Qnil /* dummy self */, VM_BLOCK_HANDLER_NONE /* dummy block ptr */, - 0 /* dummy cref/me */, - 0 /* dummy pc */, ec->vm_stack, 0, 0 - ); -} - -void -rb_ec_clear_vm_stack(rb_execution_context_t *ec) -{ - rb_ec_set_vm_stack(ec, NULL, 0); + ec->cfp = (void *)(ec->vm_stack + ec->vm_stack_size); - // Avoid dangling pointers: - // ec->cfp = NULL; + rb_vm_push_frame(ec, + NULL /* dummy iseq */, + VM_FRAME_MAGIC_DUMMY | VM_ENV_FLAG_LOCAL | VM_FRAME_FLAG_FINISH | VM_FRAME_FLAG_CFRAME /* dummy frame */, + Qnil /* dummy self */, VM_BLOCK_HANDLER_NONE /* dummy block ptr */, + 0 /* dummy cref/me */, + 0 /* dummy pc */, ec->vm_stack, 0, 0 + ); } static void |