diff options
author | Takashi Kokubun <[email protected]> | 2020-06-24 22:58:22 -0700 |
---|---|---|
committer | Takashi Kokubun <[email protected]> | 2020-06-24 22:59:34 -0700 |
commit | bb4a2351cb86ae7e2603e1280e1eb756c89c7029 (patch) | |
tree | 0bd7fa2ec56ef630497608ef4e93297f9ae786b6 | |
parent | ab62aa7037f30dbab04a9455a328496287c968da (diff) |
Do not JIT inline builtin methods
It's probably not worth it because there's nothing we can optimize in
such builtin methods. It's worth JIT only when inlined.
-rw-r--r-- | mjit.h | 1 | ||||
-rw-r--r-- | test/ruby/test_jit.rb | 4 |
2 files changed, 5 insertions, 0 deletions
@@ -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; |