diff options
author | k0kubun <k0kubun@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2019-04-16 17:02:16 +0000 |
---|---|---|
committer | k0kubun <k0kubun@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2019-04-16 17:02:16 +0000 |
commit | d71b78575b08f55d35194b2c091719b2c4463ea3 (patch) | |
tree | dd0dba7549e3bc80ddc70c24c7e10120b5acf54e /tool/ruby_vm/views/mjit_compile.inc.erb | |
parent | b914166fcdba3faf5d4cb5e3a18d49691546ce21 (diff) |
Introduce frame-omitted method inlining
for ISeq including only leaf and no-handles_sp insns except leaf.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67574 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'tool/ruby_vm/views/mjit_compile.inc.erb')
-rw-r--r-- | tool/ruby_vm/views/mjit_compile.inc.erb | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/tool/ruby_vm/views/mjit_compile.inc.erb b/tool/ruby_vm/views/mjit_compile.inc.erb index a3e29116cf..1812dabf4a 100644 --- a/tool/ruby_vm/views/mjit_compile.inc.erb +++ b/tool/ruby_vm/views/mjit_compile.inc.erb @@ -71,6 +71,12 @@ switch (insn) { fprintf(stderr, "MJIT warning: Unexpected JIT stack_size on leave: %d\n", b->stack_size); status->success = false; } +% # Special leave for an inlined call. + if (status->inlined_iseqs == NULL) { // the current ISeq is being inlined + fprintf(f, " return stack[0];\n"); + b->stack_size += <%= insn.call_attribute('sp_inc') %>; + break; + } % end % % # Main insn implementation generated by insns.def |