mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Extracted METHOD_ENTRY_CACHEABLE macro
This commit is contained in:
parent
74ac12830b
commit
52ef2477e4
3 changed files with 6 additions and 5 deletions
1
method.h
1
method.h
|
@ -75,6 +75,7 @@ typedef struct rb_callable_method_entry_struct { /* same fields with rb_method_e
|
||||||
#define METHOD_ENTRY_CACHED_SET(me) ((me)->flags |= IMEMO_FL_USER4)
|
#define METHOD_ENTRY_CACHED_SET(me) ((me)->flags |= IMEMO_FL_USER4)
|
||||||
#define METHOD_ENTRY_INVALIDATED(me) ((me)->flags & IMEMO_FL_USER5)
|
#define METHOD_ENTRY_INVALIDATED(me) ((me)->flags & IMEMO_FL_USER5)
|
||||||
#define METHOD_ENTRY_INVALIDATED_SET(me) ((me)->flags |= IMEMO_FL_USER5)
|
#define METHOD_ENTRY_INVALIDATED_SET(me) ((me)->flags |= IMEMO_FL_USER5)
|
||||||
|
#define METHOD_ENTRY_CACHEABLE(me) !(METHOD_ENTRY_VISI(me) == METHOD_VISI_PROTECTED)
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
METHOD_ENTRY_VISI_SET(rb_method_entry_t *me, rb_method_visibility_t visi)
|
METHOD_ENTRY_VISI_SET(rb_method_entry_t *me, rb_method_visibility_t visi)
|
||||||
|
|
|
@ -2240,12 +2240,12 @@ vm_callee_setup_arg(rb_execution_context_t *ec, struct rb_calling_info *calling,
|
||||||
if (LIKELY(!(vm_ci_flag(ci) & VM_CALL_TAILCALL))) {
|
if (LIKELY(!(vm_ci_flag(ci) & VM_CALL_TAILCALL))) {
|
||||||
CC_SET_FASTPATH(cc, vm_call_iseq_setup_normal_opt_start,
|
CC_SET_FASTPATH(cc, vm_call_iseq_setup_normal_opt_start,
|
||||||
!IS_ARGS_SPLAT(ci) && !IS_ARGS_KEYWORD(ci) &&
|
!IS_ARGS_SPLAT(ci) && !IS_ARGS_KEYWORD(ci) &&
|
||||||
!(METHOD_ENTRY_VISI(vm_cc_cme(cc)) == METHOD_VISI_PROTECTED));
|
METHOD_ENTRY_CACHEABLE(vm_cc_cme(cc)));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
CC_SET_FASTPATH(cc, vm_call_iseq_setup_tailcall_opt_start,
|
CC_SET_FASTPATH(cc, vm_call_iseq_setup_tailcall_opt_start,
|
||||||
!IS_ARGS_SPLAT(ci) && !IS_ARGS_KEYWORD(ci) &&
|
!IS_ARGS_SPLAT(ci) && !IS_ARGS_KEYWORD(ci) &&
|
||||||
!(METHOD_ENTRY_VISI(vm_cc_cme(cc)) == METHOD_VISI_PROTECTED));
|
METHOD_ENTRY_CACHEABLE(vm_cc_cme(cc)));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* initialize opt vars for self-references */
|
/* initialize opt vars for self-references */
|
||||||
|
@ -2273,7 +2273,7 @@ vm_callee_setup_arg(rb_execution_context_t *ec, struct rb_calling_info *calling,
|
||||||
args_setup_kw_parameters(ec, iseq, ci_kws, ci_kw_len, ci_keywords, klocals);
|
args_setup_kw_parameters(ec, iseq, ci_kws, ci_kw_len, ci_keywords, klocals);
|
||||||
|
|
||||||
CC_SET_FASTPATH(cc, vm_call_iseq_setup_kwparm_kwarg,
|
CC_SET_FASTPATH(cc, vm_call_iseq_setup_kwparm_kwarg,
|
||||||
!(METHOD_ENTRY_VISI(vm_cc_cme(cc)) == METHOD_VISI_PROTECTED));
|
METHOD_ENTRY_CACHEABLE(vm_cc_cme(cc)));
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -2286,7 +2286,7 @@ vm_callee_setup_arg(rb_execution_context_t *ec, struct rb_calling_info *calling,
|
||||||
if (klocals[kw_param->num] == INT2FIX(0)) {
|
if (klocals[kw_param->num] == INT2FIX(0)) {
|
||||||
/* copy from default_values */
|
/* copy from default_values */
|
||||||
CC_SET_FASTPATH(cc, vm_call_iseq_setup_kwparm_nokwarg,
|
CC_SET_FASTPATH(cc, vm_call_iseq_setup_kwparm_nokwarg,
|
||||||
!(METHOD_ENTRY_VISI(vm_cc_cme(cc)) == METHOD_VISI_PROTECTED));
|
METHOD_ENTRY_CACHEABLE(vm_cc_cme(cc)));
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -254,7 +254,7 @@ static bool
|
||||||
vm_call_iseq_optimizable_p(const struct rb_callinfo *ci, const struct rb_callcache *cc)
|
vm_call_iseq_optimizable_p(const struct rb_callinfo *ci, const struct rb_callcache *cc)
|
||||||
{
|
{
|
||||||
return !IS_ARGS_SPLAT(ci) && !IS_ARGS_KEYWORD(ci) &&
|
return !IS_ARGS_SPLAT(ci) && !IS_ARGS_KEYWORD(ci) &&
|
||||||
!(METHOD_ENTRY_VISI(vm_cc_cme(cc)) == METHOD_VISI_PROTECTED);
|
METHOD_ENTRY_CACHEABLE(vm_cc_cme(cc));
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* RUBY_INSNHELPER_H */
|
#endif /* RUBY_INSNHELPER_H */
|
||||||
|
|
Loading…
Add table
Reference in a new issue