diff options
Diffstat (limited to 'tool')
-rw-r--r-- | tool/ruby_vm/views/mjit_compile.inc.erb | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/tool/ruby_vm/views/mjit_compile.inc.erb b/tool/ruby_vm/views/mjit_compile.inc.erb index 3c4dba6786..a23537e4bc 100644 --- a/tool/ruby_vm/views/mjit_compile.inc.erb +++ b/tool/ruby_vm/views/mjit_compile.inc.erb @@ -21,6 +21,11 @@ % 'opt_call_c_function', # low priority % ] % +% opt_send_without_block = RubyVM::Instructions.find { |i| i.name == 'opt_send_without_block' } +% if opt_send_without_block.nil? +% raise 'opt_send_without_block not found' +% end +% % # Available variables and macros in JIT-ed function: % # ec: the first argument of _mjitXXX % # reg_cfp: the second argument of _mjitXXX @@ -46,6 +51,8 @@ switch (insn) { case BIN(<%= insn.name %>): % if %w[opt_send_without_block send].include?(insn.name) <%= render 'mjit_compile_send', locals: { insn: insn } -%> +% elsif %w[opt_aref].include?(insn.name) # experimental. TODO: increase insns and make the list automatically by finding DISPATCH_ORIGINAL_INSN +<%= render 'mjit_compile_send', locals: { insn: opt_send_without_block } -%> % end <%= render 'mjit_compile_insn', locals: { insn: insn, dispatched: false } -%> break; |