From 8bec3e1fe257fa75403be737ca86fba0e5606bf8 Mon Sep 17 00:00:00 2001 From: k0kubun Date: Sat, 7 Jul 2018 14:41:03 +0000 Subject: [PATCH] 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 --- insns.def | 4 +++- test/ruby/test_jit.rb | 20 +++++++++++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/insns.def b/insns.def index f6084429f1..eb3b3410f6 100644 --- a/insns.def +++ b/insns.def @@ -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