From 52ef2477e41caed01a4edc2f667306740d9b589c Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Wed, 3 Jun 2020 08:31:00 +0900 Subject: [PATCH] Extracted METHOD_ENTRY_CACHEABLE macro --- method.h | 1 + vm_insnhelper.c | 8 ++++---- vm_insnhelper.h | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/method.h b/method.h index cd59963236..6bc494f4b0 100644 --- a/method.h +++ b/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_INVALIDATED(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 METHOD_ENTRY_VISI_SET(rb_method_entry_t *me, rb_method_visibility_t visi) diff --git a/vm_insnhelper.c b/vm_insnhelper.c index 294099b58f..cacddc2b0e 100644 --- a/vm_insnhelper.c +++ b/vm_insnhelper.c @@ -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))) { CC_SET_FASTPATH(cc, vm_call_iseq_setup_normal_opt_start, !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 { CC_SET_FASTPATH(cc, vm_call_iseq_setup_tailcall_opt_start, !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 */ @@ -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); 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; } @@ -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)) { /* copy from default_values */ 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; diff --git a/vm_insnhelper.h b/vm_insnhelper.h index 936778f7f0..53099b26eb 100644 --- a/vm_insnhelper.h +++ b/vm_insnhelper.h @@ -254,7 +254,7 @@ static bool vm_call_iseq_optimizable_p(const struct rb_callinfo *ci, const struct rb_callcache *cc) { 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 */