Skip to content

Commit

Permalink
vm_opts.h: share USE_IC_FOR_IVAR as OPT_IC_FOR_IVAR
Browse files Browse the repository at this point in the history
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
  • Loading branch information
k0kubun committed Oct 14, 2018
1 parent f89fe59 commit 589d80e
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 15 deletions.
5 changes: 0 additions & 5 deletions mjit_compile.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down
4 changes: 2 additions & 2 deletions tool/ruby_vm/views/_mjit_compile_getivar.erb
Original file line number Diff line number Diff line change
Expand Up @@ -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|
Expand Down Expand Up @@ -41,4 +41,4 @@
break;
}
}
#endif /* USE_IC_FOR_IVAR */
#endif /* OPT_IC_FOR_IVAR */
12 changes: 4 additions & 8 deletions vm_insnhelper.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 ?
Expand Down Expand Up @@ -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)
Expand All @@ -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))) {
Expand Down Expand Up @@ -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);
}
Expand Down
4 changes: 4 additions & 0 deletions vm_opts.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 589d80e

Please sign in to comment.