diff options
-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 |