diff options
author | k0kubun <k0kubun@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-07-07 14:41:03 +0000 |
---|---|---|
committer | k0kubun <k0kubun@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-07-07 14:41:03 +0000 |
commit | 8bec3e1fe257fa75403be737ca86fba0e5606bf8 (patch) | |
tree | 4be4254be800de689a6c53f6856ca5c29b2d016b | |
parent | c2df63d08a4821213ff12d999260ab36845ef4f5 (diff) | |
download | ruby-8bec3e1fe257fa75403be737ca86fba0e5606bf8.tar.gz |
insns.def: stop pushing unnecessary keys for MJIT
[Bug #14892]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63875 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | insns.def | 4 | ||||
-rw-r--r-- | test/ruby/test_jit.rb | 20 |
2 files changed, 22 insertions, 2 deletions
@@ -1260,7 +1260,9 @@ opt_aset_with } else { PUSH(recv); +#ifndef MJIT_HEADER PUSH(rb_str_resurrect(key)); +#endif PUSH(val); #ifndef MJIT_HEADER ADD_PC(-WIDTH_OF_opt_send_without_block); @@ -1280,8 +1282,8 @@ opt_aref_with if (val == Qundef) { PUSH(recv); - PUSH(rb_str_resurrect(key)); #ifndef MJIT_HEADER + PUSH(rb_str_resurrect(key)); ADD_PC(-WIDTH_OF_opt_send_without_block); #endif DISPATCH_ORIGINAL_INSN(opt_send_without_block); diff --git a/test/ruby/test_jit.rb b/test/ruby/test_jit.rb index 625af12f77..359afe48b4 100644 --- a/test/ruby/test_jit.rb +++ b/test/ruby/test_jit.rb @@ -685,7 +685,7 @@ class TestJIT < Test::Unit::TestCase end; end - def test_stack_pointer_with_regexpmatch + def test_program_pointer_with_regexpmatch assert_eval_with_jit("#{<<~"begin;"}\n#{<<~"end;"}", stdout: "aa", success_count: 1) begin; 2.times do @@ -695,6 +695,24 @@ class TestJIT < Test::Unit::TestCase end; end + def test_pushed_values_with_opt_aset_with + assert_eval_with_jit("#{<<~"begin;"}\n#{<<~"end;"}", stdout: "{}{}", success_count: 1) + begin; + 2.times do + print(Thread.current["a"] = {}) + end + end; + end + + def test_pushed_values_with_opt_aref_with + assert_eval_with_jit("#{<<~"begin;"}\n#{<<~"end;"}", stdout: "nil\nnil\n", success_count: 1) + begin; + 2.times do + p(Thread.current["a"]) + end + end; + end + private # The shortest way to test one proc |