summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mjit.h1
-rw-r--r--test/ruby/test_jit.rb4
2 files changed, 5 insertions, 0 deletions
diff --git a/mjit.h b/mjit.h
index 177967a236..06eb300f6c 100644
--- a/mjit.h
+++ b/mjit.h
@@ -108,6 +108,7 @@ static inline int
mjit_target_iseq_p(struct rb_iseq_constant_body *body)
{
return (body->type == ISEQ_TYPE_METHOD || body->type == ISEQ_TYPE_BLOCK)
+ && !body->builtin_inline_p
&& body->iseq_size < JIT_ISEQ_SIZE_THRESHOLD;
}
diff --git a/test/ruby/test_jit.rb b/test/ruby/test_jit.rb
index 90d498c46f..c70a6b2650 100644
--- a/test/ruby/test_jit.rb
+++ b/test/ruby/test_jit.rb
@@ -1007,6 +1007,10 @@ class TestJIT < Test::Unit::TestCase
end;
end
+ def test_builtin_frame_omitted_inlining
+ assert_eval_with_jit('0.zero?; 0.zero?; 3.times { p 0.zero? }', stdout: "true\ntrue\ntrue\n", success_count: 1, min_calls: 2)
+ end
+
def test_program_counter_with_regexpmatch
assert_eval_with_jit("#{<<~"begin;"}\n#{<<~"end;"}", stdout: "aa", success_count: 1)
begin;