From c2a5df6905c9b9afde2c2611a20128220bf1372a Mon Sep 17 00:00:00 2001 From: normal Date: Tue, 9 May 2017 05:06:41 +0000 Subject: rb_execution_context_t: move stack, stack_size and cfp from rb_thread_t The goal is to reduce rb_context_t and rb_fiber_t size by removing the need to store the entire rb_thread_t in there. [ruby-core:81045] Work-in-progress: soon, we will move more fields here. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58614 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- vm_args.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'vm_args.c') diff --git a/vm_args.c b/vm_args.c index f40a649b42..3bf56788b1 100644 --- a/vm_args.c +++ b/vm_args.c @@ -526,7 +526,7 @@ setup_parameters_complex(rb_thread_t * const th, const rb_iseq_t * const iseq, int given_argc; struct args_info args_body, *args; VALUE keyword_hash = Qnil; - VALUE * const orig_sp = th->cfp->sp; + VALUE * const orig_sp = th->ec.cfp->sp; unsigned int i; /* @@ -546,7 +546,7 @@ setup_parameters_complex(rb_thread_t * const th, const rb_iseq_t * const iseq, for (i=calling->argc; ibody->param.size; i++) { locals[i] = Qnil; } - th->cfp->sp = &locals[i]; + th->ec.cfp->sp = &locals[i]; /* setup args */ args = &args_body; @@ -607,7 +607,7 @@ setup_parameters_complex(rb_thread_t * const th, const rb_iseq_t * const iseq, } else { if (arg_setup_type == arg_setup_block) { - CHECK_VM_STACK_OVERFLOW(th->cfp, min_argc); + CHECK_VM_STACK_OVERFLOW(th->ec.cfp, min_argc); given_argc = min_argc; args_extend(args, min_argc); } @@ -693,7 +693,7 @@ setup_parameters_complex(rb_thread_t * const th, const rb_iseq_t * const iseq, } #endif - th->cfp->sp = orig_sp; + th->ec.cfp->sp = orig_sp; return opt_pc; } @@ -705,7 +705,8 @@ raise_argument_error(rb_thread_t *th, const rb_iseq_t *iseq, const VALUE exc) if (iseq) { vm_push_frame(th, iseq, VM_FRAME_MAGIC_DUMMY | VM_ENV_FLAG_LOCAL, Qnil /* self */, VM_BLOCK_HANDLER_NONE /* specval*/, Qfalse /* me or cref */, - iseq->body->iseq_encoded, th->cfp->sp, 0, 0 /* stack_max */); + iseq->body->iseq_encoded, + th->ec.cfp->sp, 0, 0 /* stack_max */); at = rb_threadptr_backtrace_object(th); rb_vm_pop_frame(th); } -- cgit v1.2.3