From ae34216021b1f627f99f8845c8376ad54ccdfa08 Mon Sep 17 00:00:00 2001 From: nobu Date: Sun, 4 Mar 2018 06:24:38 +0000 Subject: vm.c: trivial optimization git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62653 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- vm.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/vm.c b/vm.c index fdd6fabe4b..f333b51f67 100644 --- a/vm.c +++ b/vm.c @@ -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; -- cgit v1.2.3