diff options
author | Jeremy Evans <code@jeremyevans.net> | 2021-09-30 13:18:14 -0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-30 15:18:14 -0700 |
commit | 1f5f8a187adb746b01cc95c3f29a0a355f513374 (patch) | |
tree | 9d907b527d60b89f4c9d6402b1bdabb8aec7abf0 /test/ruby/test_optimization.rb | |
parent | a55a5fc68426ed701dace6bc166d18de06d8dcb2 (diff) |
Make Array#min/max optimization respect refined methods
Pass in ec to vm_opt_newarray_{max,min}. Avoids having to
call GET_EC inside the functions, for better performance.
While here, add a test for Array#min/max being redefined to
test_optimization.rb.
Fixes [Bug #18180]
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/4911
Merged-By: jeremyevans <code@jeremyevans.net>
Diffstat (limited to 'test/ruby/test_optimization.rb')
-rw-r--r-- | test/ruby/test_optimization.rb | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/test/ruby/test_optimization.rb b/test/ruby/test_optimization.rb index 2075bf3513..cbae6d5e8c 100644 --- a/test/ruby/test_optimization.rb +++ b/test/ruby/test_optimization.rb @@ -150,6 +150,18 @@ class TestRubyOptimization < Test::Unit::TestCase assert_redefine_method('String', '-@', 'assert_nil(-"foo")') end + def test_array_min + assert_equal 1, [1, 2, 4].min + assert_redefine_method('Array', 'min', 'assert_nil([1, 2, 4].min)') + assert_redefine_method('Array', 'min', 'assert_nil([1 + 0, 2, 4].min)') + end + + def test_array_max + assert_equal 4, [1, 2, 4].max + assert_redefine_method('Array', 'max', 'assert_nil([1, 2, 4].max)') + assert_redefine_method('Array', 'max', 'assert_nil([1 + 0, 2, 4].max)') + end + def test_trace_optimized_methods bug14870 = "[ruby-core:87638]" expected = [:-@, :max, :min, :+, :-, :*, :/, :%, :==, :<, :<=, :>, :>=, :<<, |