mirror of
https://github.com/ruby/ruby.git
synced 2025-09-15 16:44:01 +02:00
parent
39a96b4344
commit
fc03ba50f1
2 changed files with 11 additions and 1 deletions
|
@ -536,7 +536,7 @@ class RubyVM::MJIT::Compiler # :nodoc: all
|
||||||
when /\A\s+JUMP\((?<dest>[^)]+)\);\s+\z/
|
when /\A\s+JUMP\((?<dest>[^)]+)\);\s+\z/
|
||||||
dest = Regexp.last_match[:dest]
|
dest = Regexp.last_match[:dest]
|
||||||
if insn.name == :opt_case_dispatch # special case... TODO: use another macro to avoid checking name
|
if insn.name == :opt_case_dispatch # special case... TODO: use another macro to avoid checking name
|
||||||
hash_offsets = C.rb_hash_values(operands[0])
|
hash_offsets = C.rb_hash_values(operands[0]).uniq
|
||||||
else_offset = cast_offset(operands[1])
|
else_offset = cast_offset(operands[1])
|
||||||
base_pos = pos + insn_len
|
base_pos = pos + insn_len
|
||||||
|
|
||||||
|
|
|
@ -518,6 +518,16 @@ class TestMJIT < Test::Unit::TestCase
|
||||||
end;
|
end;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_compile_multiple_values_case
|
||||||
|
assert_compile_twice("#{<<~"begin;"}\n#{<<~"end;"}", result_inspect: '"world"', insns: %i[opt_case_dispatch])
|
||||||
|
begin;
|
||||||
|
case 'hello'
|
||||||
|
when 'hello', 'world'
|
||||||
|
'world'
|
||||||
|
end
|
||||||
|
end;
|
||||||
|
end
|
||||||
|
|
||||||
def test_compile_insn_opt_calc
|
def test_compile_insn_opt_calc
|
||||||
assert_compile_twice('4 + 2 - ((2 * 3 / 2) % 2)', result_inspect: '5', insns: %i[opt_plus opt_minus opt_mult opt_div opt_mod])
|
assert_compile_twice('4 + 2 - ((2 * 3 / 2) % 2)', result_inspect: '5', insns: %i[opt_plus opt_minus opt_mult opt_div opt_mod])
|
||||||
assert_compile_twice('4.0 + 2.0 - ((2.0 * 3.0 / 2.0) % 2.0)', result_inspect: '5.0', insns: %i[opt_plus opt_minus opt_mult opt_div opt_mod])
|
assert_compile_twice('4.0 + 2.0 - ((2.0 * 3.0 / 2.0) % 2.0)', result_inspect: '5.0', insns: %i[opt_plus opt_minus opt_mult opt_div opt_mod])
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue