aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authork0kubun <k0kubun@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-10-14 11:25:36 +0000
committerk0kubun <k0kubun@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-10-14 11:25:36 +0000
commitd907c7496804fe8d62293a7af081b538f4252ebe (patch)
treeecbdc2b780cbc48e582c134e5852b50d503548c5
parentfc6c5e126dbbea8b9ed2730e61f70356fbdc3a12 (diff)
downloadruby-d907c7496804fe8d62293a7af081b538f4252ebe.tar.gz
vm_opts.h: share USE_IC_FOR_IVAR as OPT_IC_FOR_IVAR
with mjit_compile.c (tool/ruby_vm/views/_mjit_compile_getivar.erb). mjit_compile.c: ditto tool/ruby_vm/views/_mjit_compile_getivar.erb: ditto vm_opts.h: ditto git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65074 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--mjit_compile.c5
-rw-r--r--tool/ruby_vm/views/_mjit_compile_getivar.erb4
-rw-r--r--vm_insnhelper.c12
-rw-r--r--vm_opts.h4
4 files changed, 10 insertions, 15 deletions
diff --git a/mjit_compile.c b/mjit_compile.c
index 89d1a96a10..b2ece0eb77 100644
--- a/mjit_compile.c
+++ b/mjit_compile.c
@@ -108,11 +108,6 @@ comment_id(FILE *f, ID id)
#endif
}
-/* TODO: share this with vm_insnhelper.c */
-#ifndef USE_IC_FOR_IVAR
-#define USE_IC_FOR_IVAR 1
-#endif
-
static void compile_insns(FILE *f, const struct rb_iseq_constant_body *body, unsigned int stack_size,
unsigned int pos, struct compile_status *status);
diff --git a/tool/ruby_vm/views/_mjit_compile_getivar.erb b/tool/ruby_vm/views/_mjit_compile_getivar.erb
index 630fd72959..da45d3715b 100644
--- a/tool/ruby_vm/views/_mjit_compile_getivar.erb
+++ b/tool/ruby_vm/views/_mjit_compile_getivar.erb
@@ -7,7 +7,7 @@
% # details.
%
% # Optimized case of get_instancevariable instruction.
-#if USE_IC_FOR_IVAR
+#if OPT_IC_FOR_IVAR
{
% # compiler: Prepare operands which may be used by `insn.call_attribute`
% insn.opes.each_with_index do |ope, i|
@@ -41,4 +41,4 @@
break;
}
}
-#endif /* USE_IC_FOR_IVAR */
+#endif /* OPT_IC_FOR_IVAR */
diff --git a/vm_insnhelper.c b/vm_insnhelper.c
index d934372b75..7bc868d497 100644
--- a/vm_insnhelper.c
+++ b/vm_insnhelper.c
@@ -950,15 +950,11 @@ vm_search_const_defined_class(const VALUE cbase, ID id)
return 0;
}
-#ifndef USE_IC_FOR_IVAR
-#define USE_IC_FOR_IVAR 1
-#endif
-
ALWAYS_INLINE(static VALUE vm_getivar(VALUE, ID, IC, struct rb_call_cache *, int));
static inline VALUE
vm_getivar(VALUE obj, ID id, IC ic, struct rb_call_cache *cc, int is_attr)
{
-#if USE_IC_FOR_IVAR
+#if OPT_IC_FOR_IVAR
if (LIKELY(RB_TYPE_P(obj, T_OBJECT))) {
VALUE val = Qundef;
if (LIKELY(is_attr ?
@@ -1000,7 +996,7 @@ vm_getivar(VALUE obj, ID id, IC ic, struct rb_call_cache *cc, int is_attr)
else {
RB_DEBUG_COUNTER_INC(ivar_get_ic_miss_noobject);
}
-#endif /* USE_IC_FOR_IVAR */
+#endif /* OPT_IC_FOR_IVAR */
RB_DEBUG_COUNTER_INC(ivar_get_ic_miss);
if (is_attr)
@@ -1011,7 +1007,7 @@ vm_getivar(VALUE obj, ID id, IC ic, struct rb_call_cache *cc, int is_attr)
static inline VALUE
vm_setivar(VALUE obj, ID id, VALUE val, IC ic, struct rb_call_cache *cc, int is_attr)
{
-#if USE_IC_FOR_IVAR
+#if OPT_IC_FOR_IVAR
rb_check_frozen_internal(obj);
if (LIKELY(RB_TYPE_P(obj, T_OBJECT))) {
@@ -1051,7 +1047,7 @@ vm_setivar(VALUE obj, ID id, VALUE val, IC ic, struct rb_call_cache *cc, int is_
else {
RB_DEBUG_COUNTER_INC(ivar_set_ic_miss_noobject);
}
-#endif /* USE_IC_FOR_IVAR */
+#endif /* OPT_IC_FOR_IVAR */
RB_DEBUG_COUNTER_INC(ivar_set_ic_miss);
return rb_ivar_set(obj, id, val);
}
diff --git a/vm_opts.h b/vm_opts.h
index b21db2b5aa..6a7dd3d85d 100644
--- a/vm_opts.h
+++ b/vm_opts.h
@@ -50,6 +50,10 @@
#define OPT_GLOBAL_METHOD_CACHE 1
#define OPT_BLOCKINLINING 0
+#ifndef OPT_IC_FOR_IVAR
+#define OPT_IC_FOR_IVAR 1
+#endif
+
/* architecture independent, affects generated code */
#define OPT_OPERANDS_UNIFICATION 1
#define OPT_INSTRUCTIONS_UNIFICATION 0