diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-03-04 06:24:38 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-03-04 06:24:38 +0000 |
commit | ae34216021b1f627f99f8845c8376ad54ccdfa08 (patch) | |
tree | 507b2073a6687ae7788cbdc3edbef6530c98a34c /vm.c | |
parent | ac44ae58c697971e14e72493da2cfdd9a4e3b458 (diff) |
vm.c: trivial optimization
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62653 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'vm.c')
-rw-r--r-- | vm.c | 7 |
1 files changed, 3 insertions, 4 deletions
@@ -1808,8 +1808,8 @@ vm_exec(rb_execution_context_t *ec, int mjit_enable_p) _tag.retval = Qnil; if ((state = EC_EXEC_TAG()) == TAG_NONE) { - if (mjit_enable_p) - result = mjit_exec(ec); + if (!mjit_enable_p || (result = mjit_exec(ec)) == Qundef) + result = vm_exec_core(ec, initial); goto vm_loop_start; /* fallback to the VM */ } else { @@ -1817,9 +1817,8 @@ vm_exec(rb_execution_context_t *ec, int mjit_enable_p) rb_ec_raised_reset(ec, RAISED_STACKOVERFLOW); while ((result = handle_exception(ec, state, result, &initial)) == Qundef) { /* caught a jump, exec the handler */ + result = vm_exec_core(ec, initial); vm_loop_start: - if (result == Qundef) - result = vm_exec_core(ec, initial); VM_ASSERT(ec->tag == &_tag); /* when caught `throw`, `tag.state` is set. */ if ((state = _tag.state) == TAG_NONE) break; |