mirror of
https://github.com/ruby/ruby.git
synced 2025-08-15 13:39:04 +02:00
RJIT: Skip a class guard if known to be T_STRING
This commit is contained in:
parent
9bef39de74
commit
65d27d3c0a
1 changed files with 6 additions and 3 deletions
|
@ -3878,9 +3878,12 @@ module RubyVM::RJIT
|
|||
asm.je(equal_label)
|
||||
|
||||
# Otherwise guard that b is a T_STRING (from type info) or String (from runtime guard)
|
||||
# Note: any T_STRING is valid here, but we check for a ::String for simplicity
|
||||
# To pass a mutable static variable (rb_cString) requires an unsafe block
|
||||
jit_guard_known_klass(jit, ctx, asm, C.rb_class_of(comptime_b), b_opnd, StackOpnd[0], comptime_b, side_exit)
|
||||
btype = ctx.get_opnd_type(StackOpnd[0])
|
||||
unless btype.string?
|
||||
# Note: any T_STRING is valid here, but we check for a ::String for simplicity
|
||||
# To pass a mutable static variable (rb_cString) requires an unsafe block
|
||||
jit_guard_known_klass(jit, ctx, asm, C.rb_class_of(comptime_b), b_opnd, StackOpnd[0], comptime_b, side_exit)
|
||||
end
|
||||
|
||||
asm.comment('call rb_str_eql_internal')
|
||||
asm.mov(C_ARGS[0], a_opnd)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue