diff options
author | k0kubun <k0kubun@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-07-07 14:28:34 +0000 |
---|---|---|
committer | k0kubun <k0kubun@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-07-07 14:28:34 +0000 |
commit | c2df63d08a4821213ff12d999260ab36845ef4f5 (patch) | |
tree | 8513d47b294ddf88bf0d28d58fc3297696310c13 | |
parent | 886cfe49625751f2ca513f61f2649f24f2c5502d (diff) |
_mjit_compile_insn_body: rollback pc correctly
for catch_except_p case
Partially solving Bug#14892
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63874 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | test/ruby/test_jit.rb | 8 | ||||
-rw-r--r-- | tool/ruby_vm/views/_mjit_compile_insn_body.erb | 4 |
2 files changed, 6 insertions, 6 deletions
diff --git a/test/ruby/test_jit.rb b/test/ruby/test_jit.rb index c70bf962c0..625af12f77 100644 --- a/test/ruby/test_jit.rb +++ b/test/ruby/test_jit.rb @@ -686,10 +686,12 @@ class TestJIT < Test::Unit::TestCase end def test_stack_pointer_with_regexpmatch - skip - assert_eval_with_jit("#{<<~"begin;"}\n#{<<~"end;"}", stdout: "nil\nnil\n", success_count: 1) + assert_eval_with_jit("#{<<~"begin;"}\n#{<<~"end;"}", stdout: "aa", success_count: 1) begin; - 1000.times { break if /a/ =~ "ab" && !$~[0] } + 2.times do + break if /a/ =~ "ab" && !$~[0] + print $~[0] + end end; end diff --git a/tool/ruby_vm/views/_mjit_compile_insn_body.erb b/tool/ruby_vm/views/_mjit_compile_insn_body.erb index 66c4314380..0fef07da25 100644 --- a/tool/ruby_vm/views/_mjit_compile_insn_body.erb +++ b/tool/ruby_vm/views/_mjit_compile_insn_body.erb @@ -69,9 +69,7 @@ % end % when /\A\s+DISPATCH_ORIGINAL_INSN\([^)]+\);\s+\z/ % # For `opt_xxx`'s fallbacks. - if (!body->catch_except_p) { - fprintf(f, " reg_cfp->pc = original_body_iseq + %d;\n", pos); - } + fprintf(f, " reg_cfp->pc = original_body_iseq + %d;\n", pos); fprintf(f, " goto cancel;\n"); % else fprintf(f, <%= to_cstr.call(line) %>); |