mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
vm_insnhelper.h: rename CI_SET_FASTPATH to CC_SET_FASTPATH
because it's actually setting fastpath to cc instead of ci since r51903. vm_insnhelper.c: ditto mjit_compile.c: ditto tool/ruby_vm/views/_mjit_compile_send.erb: ditto git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64772 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
742df62eb7
commit
62327bb6ff
4 changed files with 18 additions and 18 deletions
|
@ -57,14 +57,14 @@ has_valid_method_type(CALL_CACHE cc)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Returns TRUE if iseq is inlinable, otherwise NULL. This becomes TRUE in the same condition
|
/* Returns TRUE if iseq is inlinable, otherwise NULL. This becomes TRUE in the same condition
|
||||||
as CI_SET_FASTPATH (in vm_callee_setup_arg) is called from vm_call_iseq_setup. */
|
as CC_SET_FASTPATH (in vm_callee_setup_arg) is called from vm_call_iseq_setup. */
|
||||||
static int
|
static int
|
||||||
inlinable_iseq_p(CALL_INFO ci, CALL_CACHE cc, const rb_iseq_t *iseq)
|
inlinable_iseq_p(CALL_INFO ci, CALL_CACHE cc, const rb_iseq_t *iseq)
|
||||||
{
|
{
|
||||||
extern int rb_simple_iseq_p(const rb_iseq_t *iseq);
|
extern int rb_simple_iseq_p(const rb_iseq_t *iseq);
|
||||||
return iseq != NULL
|
return iseq != NULL
|
||||||
&& rb_simple_iseq_p(iseq) && !(ci->flag & VM_CALL_KW_SPLAT) /* Top of vm_callee_setup_arg. In this case, opt_pc is 0. */
|
&& rb_simple_iseq_p(iseq) && !(ci->flag & VM_CALL_KW_SPLAT) /* Top of vm_callee_setup_arg. In this case, opt_pc is 0. */
|
||||||
&& (!IS_ARGS_SPLAT(ci) && !IS_ARGS_KEYWORD(ci) && !(METHOD_ENTRY_VISI(cc->me) == METHOD_VISI_PROTECTED)); /* CI_SET_FASTPATH */
|
&& (!IS_ARGS_SPLAT(ci) && !IS_ARGS_KEYWORD(ci) && !(METHOD_ENTRY_VISI(cc->me) == METHOD_VISI_PROTECTED)); /* CC_SET_FASTPATH */
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
argc += ((ci->flag & VM_CALL_ARGS_BLOCKARG) ? 1 : 0);
|
argc += ((ci->flag & VM_CALL_ARGS_BLOCKARG) ? 1 : 0);
|
||||||
% end
|
% end
|
||||||
|
|
||||||
if (cc->me->def->type == VM_METHOD_TYPE_ISEQ && inlinable_iseq_p(ci, cc, iseq = rb_iseq_check(cc->me->def->body.iseq.iseqptr))) { /* CI_SET_FASTPATH in vm_callee_setup_arg */
|
if (cc->me->def->type == VM_METHOD_TYPE_ISEQ && inlinable_iseq_p(ci, cc, iseq = rb_iseq_check(cc->me->def->body.iseq.iseqptr))) { /* CC_SET_FASTPATH in vm_callee_setup_arg */
|
||||||
int param_size = iseq->body->param.size; /* TODO: check calling->argc for argument_arity_error */
|
int param_size = iseq->body->param.size; /* TODO: check calling->argc for argument_arity_error */
|
||||||
|
|
||||||
fprintf(f, "{\n");
|
fprintf(f, "{\n");
|
||||||
|
|
|
@ -1625,7 +1625,7 @@ vm_callee_setup_arg(rb_execution_context_t *ec, struct rb_calling_info *calling,
|
||||||
argument_arity_error(ec, iseq, calling->argc, iseq->body->param.lead_num, iseq->body->param.lead_num);
|
argument_arity_error(ec, iseq, calling->argc, iseq->body->param.lead_num, iseq->body->param.lead_num);
|
||||||
}
|
}
|
||||||
|
|
||||||
CI_SET_FASTPATH(cc, vm_call_iseq_setup_func(ci, param_size, local_size),
|
CC_SET_FASTPATH(cc, vm_call_iseq_setup_func(ci, param_size, local_size),
|
||||||
(!IS_ARGS_SPLAT(ci) && !IS_ARGS_KEYWORD(ci) &&
|
(!IS_ARGS_SPLAT(ci) && !IS_ARGS_KEYWORD(ci) &&
|
||||||
!(METHOD_ENTRY_VISI(cc->me) == METHOD_VISI_PROTECTED)));
|
!(METHOD_ENTRY_VISI(cc->me) == METHOD_VISI_PROTECTED)));
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -2261,35 +2261,35 @@ vm_call_method_each_type(rb_execution_context_t *ec, rb_control_frame_t *cfp, st
|
||||||
{
|
{
|
||||||
switch (cc->me->def->type) {
|
switch (cc->me->def->type) {
|
||||||
case VM_METHOD_TYPE_ISEQ:
|
case VM_METHOD_TYPE_ISEQ:
|
||||||
CI_SET_FASTPATH(cc, vm_call_iseq_setup, TRUE);
|
CC_SET_FASTPATH(cc, vm_call_iseq_setup, TRUE);
|
||||||
return vm_call_iseq_setup(ec, cfp, calling, ci, cc);
|
return vm_call_iseq_setup(ec, cfp, calling, ci, cc);
|
||||||
|
|
||||||
case VM_METHOD_TYPE_NOTIMPLEMENTED:
|
case VM_METHOD_TYPE_NOTIMPLEMENTED:
|
||||||
case VM_METHOD_TYPE_CFUNC:
|
case VM_METHOD_TYPE_CFUNC:
|
||||||
CI_SET_FASTPATH(cc, vm_call_cfunc, TRUE);
|
CC_SET_FASTPATH(cc, vm_call_cfunc, TRUE);
|
||||||
return vm_call_cfunc(ec, cfp, calling, ci, cc);
|
return vm_call_cfunc(ec, cfp, calling, ci, cc);
|
||||||
|
|
||||||
case VM_METHOD_TYPE_ATTRSET:
|
case VM_METHOD_TYPE_ATTRSET:
|
||||||
CALLER_SETUP_ARG(cfp, calling, ci);
|
CALLER_SETUP_ARG(cfp, calling, ci);
|
||||||
rb_check_arity(calling->argc, 1, 1);
|
rb_check_arity(calling->argc, 1, 1);
|
||||||
cc->aux.index = 0;
|
cc->aux.index = 0;
|
||||||
CI_SET_FASTPATH(cc, vm_call_attrset, !((ci->flag & VM_CALL_ARGS_SPLAT) || (ci->flag & VM_CALL_KWARG)));
|
CC_SET_FASTPATH(cc, vm_call_attrset, !((ci->flag & VM_CALL_ARGS_SPLAT) || (ci->flag & VM_CALL_KWARG)));
|
||||||
return vm_call_attrset(ec, cfp, calling, ci, cc);
|
return vm_call_attrset(ec, cfp, calling, ci, cc);
|
||||||
|
|
||||||
case VM_METHOD_TYPE_IVAR:
|
case VM_METHOD_TYPE_IVAR:
|
||||||
CALLER_SETUP_ARG(cfp, calling, ci);
|
CALLER_SETUP_ARG(cfp, calling, ci);
|
||||||
rb_check_arity(calling->argc, 0, 0);
|
rb_check_arity(calling->argc, 0, 0);
|
||||||
cc->aux.index = 0;
|
cc->aux.index = 0;
|
||||||
CI_SET_FASTPATH(cc, vm_call_ivar, !(ci->flag & VM_CALL_ARGS_SPLAT));
|
CC_SET_FASTPATH(cc, vm_call_ivar, !(ci->flag & VM_CALL_ARGS_SPLAT));
|
||||||
return vm_call_ivar(ec, cfp, calling, ci, cc);
|
return vm_call_ivar(ec, cfp, calling, ci, cc);
|
||||||
|
|
||||||
case VM_METHOD_TYPE_MISSING:
|
case VM_METHOD_TYPE_MISSING:
|
||||||
cc->aux.method_missing_reason = 0;
|
cc->aux.method_missing_reason = 0;
|
||||||
CI_SET_FASTPATH(cc, vm_call_method_missing, TRUE);
|
CC_SET_FASTPATH(cc, vm_call_method_missing, TRUE);
|
||||||
return vm_call_method_missing(ec, cfp, calling, ci, cc);
|
return vm_call_method_missing(ec, cfp, calling, ci, cc);
|
||||||
|
|
||||||
case VM_METHOD_TYPE_BMETHOD:
|
case VM_METHOD_TYPE_BMETHOD:
|
||||||
CI_SET_FASTPATH(cc, vm_call_bmethod, TRUE);
|
CC_SET_FASTPATH(cc, vm_call_bmethod, TRUE);
|
||||||
return vm_call_bmethod(ec, cfp, calling, ci, cc);
|
return vm_call_bmethod(ec, cfp, calling, ci, cc);
|
||||||
|
|
||||||
case VM_METHOD_TYPE_ALIAS:
|
case VM_METHOD_TYPE_ALIAS:
|
||||||
|
@ -2300,13 +2300,13 @@ vm_call_method_each_type(rb_execution_context_t *ec, rb_control_frame_t *cfp, st
|
||||||
case VM_METHOD_TYPE_OPTIMIZED:
|
case VM_METHOD_TYPE_OPTIMIZED:
|
||||||
switch (cc->me->def->body.optimize_type) {
|
switch (cc->me->def->body.optimize_type) {
|
||||||
case OPTIMIZED_METHOD_TYPE_SEND:
|
case OPTIMIZED_METHOD_TYPE_SEND:
|
||||||
CI_SET_FASTPATH(cc, vm_call_opt_send, TRUE);
|
CC_SET_FASTPATH(cc, vm_call_opt_send, TRUE);
|
||||||
return vm_call_opt_send(ec, cfp, calling, ci, cc);
|
return vm_call_opt_send(ec, cfp, calling, ci, cc);
|
||||||
case OPTIMIZED_METHOD_TYPE_CALL:
|
case OPTIMIZED_METHOD_TYPE_CALL:
|
||||||
CI_SET_FASTPATH(cc, vm_call_opt_call, TRUE);
|
CC_SET_FASTPATH(cc, vm_call_opt_call, TRUE);
|
||||||
return vm_call_opt_call(ec, cfp, calling, ci, cc);
|
return vm_call_opt_call(ec, cfp, calling, ci, cc);
|
||||||
case OPTIMIZED_METHOD_TYPE_BLOCK_CALL:
|
case OPTIMIZED_METHOD_TYPE_BLOCK_CALL:
|
||||||
CI_SET_FASTPATH(cc, vm_call_opt_block_call, TRUE);
|
CC_SET_FASTPATH(cc, vm_call_opt_block_call, TRUE);
|
||||||
return vm_call_opt_block_call(ec, cfp, calling, ci, cc);
|
return vm_call_opt_block_call(ec, cfp, calling, ci, cc);
|
||||||
default:
|
default:
|
||||||
rb_bug("vm_call_method: unsupported optimized method type (%d)",
|
rb_bug("vm_call_method: unsupported optimized method type (%d)",
|
||||||
|
@ -2380,7 +2380,7 @@ vm_call_method_nome(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
cc->aux.method_missing_reason = stat;
|
cc->aux.method_missing_reason = stat;
|
||||||
CI_SET_FASTPATH(cc, vm_call_method_missing, 1);
|
CC_SET_FASTPATH(cc, vm_call_method_missing, 1);
|
||||||
return vm_call_method_missing(ec, cfp, calling, ci, cc);
|
return vm_call_method_missing(ec, cfp, calling, ci, cc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2401,7 +2401,7 @@ vm_call_method(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_ca
|
||||||
if (ci->flag & VM_CALL_VCALL) stat |= MISSING_VCALL;
|
if (ci->flag & VM_CALL_VCALL) stat |= MISSING_VCALL;
|
||||||
|
|
||||||
cc->aux.method_missing_reason = stat;
|
cc->aux.method_missing_reason = stat;
|
||||||
CI_SET_FASTPATH(cc, vm_call_method_missing, 1);
|
CC_SET_FASTPATH(cc, vm_call_method_missing, 1);
|
||||||
return vm_call_method_missing(ec, cfp, calling, ci, cc);
|
return vm_call_method_missing(ec, cfp, calling, ci, cc);
|
||||||
}
|
}
|
||||||
return vm_call_method_each_type(ec, cfp, calling, ci, cc);
|
return vm_call_method_each_type(ec, cfp, calling, ci, cc);
|
||||||
|
@ -2511,12 +2511,12 @@ vm_search_super_method(const rb_execution_context_t *ec, rb_control_frame_t *reg
|
||||||
if (!klass) {
|
if (!klass) {
|
||||||
/* bound instance method of module */
|
/* bound instance method of module */
|
||||||
cc->aux.method_missing_reason = MISSING_SUPER;
|
cc->aux.method_missing_reason = MISSING_SUPER;
|
||||||
CI_SET_FASTPATH(cc, vm_call_method_missing, TRUE);
|
CC_SET_FASTPATH(cc, vm_call_method_missing, TRUE);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
/* TODO: use inline cache */
|
/* TODO: use inline cache */
|
||||||
cc->me = rb_callable_method_entry(klass, ci->mid);
|
cc->me = rb_callable_method_entry(klass, ci->mid);
|
||||||
CI_SET_FASTPATH(cc, vm_call_super_method, TRUE);
|
CC_SET_FASTPATH(cc, vm_call_super_method, TRUE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -177,7 +177,7 @@ enum vm_regan_acttype {
|
||||||
* because inline method cache does not care about receiver.
|
* because inline method cache does not care about receiver.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define CI_SET_FASTPATH(cc, func, enabled) do { \
|
#define CC_SET_FASTPATH(cc, func, enabled) do { \
|
||||||
if (LIKELY(enabled)) ((cc)->call = (func)); \
|
if (LIKELY(enabled)) ((cc)->call = (func)); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue