summaryrefslogtreecommitdiff
path: root/tool
diff options
context:
space:
mode:
Diffstat (limited to 'tool')
-rw-r--r--tool/ruby_vm/views/mjit_compile.inc.erb7
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;