YJIT: Remove unnecessary casts for chain_depth (#9893)
This commit is contained in:
parent
5cbca9110c
commit
e2aa00ca66
@ -2277,7 +2277,7 @@ fn jit_chain_guard(
|
|||||||
jit: &mut JITState,
|
jit: &mut JITState,
|
||||||
asm: &mut Assembler,
|
asm: &mut Assembler,
|
||||||
ocb: &mut OutlinedCb,
|
ocb: &mut OutlinedCb,
|
||||||
depth_limit: i32,
|
depth_limit: u8,
|
||||||
counter: Counter,
|
counter: Counter,
|
||||||
) {
|
) {
|
||||||
let target0_gen_fn = match jcc {
|
let target0_gen_fn = match jcc {
|
||||||
@ -2288,7 +2288,7 @@ fn jit_chain_guard(
|
|||||||
JCC_JO_MUL => BranchGenFn::JOMulToTarget0,
|
JCC_JO_MUL => BranchGenFn::JOMulToTarget0,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (asm.ctx.get_chain_depth() as i32) < depth_limit {
|
if asm.ctx.get_chain_depth() < depth_limit {
|
||||||
// Rewind Context to use the stack_size at the beginning of this instruction.
|
// Rewind Context to use the stack_size at the beginning of this instruction.
|
||||||
let mut deeper = asm.ctx.with_stack_size(jit.stack_size_for_pc);
|
let mut deeper = asm.ctx.with_stack_size(jit.stack_size_for_pc);
|
||||||
deeper.increment_chain_depth();
|
deeper.increment_chain_depth();
|
||||||
@ -2304,22 +2304,22 @@ fn jit_chain_guard(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// up to 8 different shapes for each
|
// up to 8 different shapes for each
|
||||||
pub const GET_IVAR_MAX_DEPTH: i32 = 8;
|
pub const GET_IVAR_MAX_DEPTH: u8 = 8;
|
||||||
|
|
||||||
// up to 8 different shapes for each
|
// up to 8 different shapes for each
|
||||||
pub const SET_IVAR_MAX_DEPTH: i32 = 8;
|
pub const SET_IVAR_MAX_DEPTH: u8 = 8;
|
||||||
|
|
||||||
// hashes and arrays
|
// hashes and arrays
|
||||||
pub const OPT_AREF_MAX_CHAIN_DEPTH: i32 = 2;
|
pub const OPT_AREF_MAX_CHAIN_DEPTH: u8 = 2;
|
||||||
|
|
||||||
// expandarray
|
// expandarray
|
||||||
pub const EXPANDARRAY_MAX_CHAIN_DEPTH: i32 = 4;
|
pub const EXPANDARRAY_MAX_CHAIN_DEPTH: u8 = 4;
|
||||||
|
|
||||||
// up to 5 different methods for send
|
// up to 5 different methods for send
|
||||||
pub const SEND_MAX_DEPTH: i32 = 5;
|
pub const SEND_MAX_DEPTH: u8 = 5;
|
||||||
|
|
||||||
// up to 20 different offsets for case-when
|
// up to 20 different offsets for case-when
|
||||||
pub const CASE_WHEN_MAX_DEPTH: i32 = 20;
|
pub const CASE_WHEN_MAX_DEPTH: u8 = 20;
|
||||||
|
|
||||||
pub const MAX_SPLAT_LENGTH: i32 = 127;
|
pub const MAX_SPLAT_LENGTH: i32 = 127;
|
||||||
|
|
||||||
@ -2374,7 +2374,7 @@ fn gen_get_ivar(
|
|||||||
jit: &mut JITState,
|
jit: &mut JITState,
|
||||||
asm: &mut Assembler,
|
asm: &mut Assembler,
|
||||||
ocb: &mut OutlinedCb,
|
ocb: &mut OutlinedCb,
|
||||||
max_chain_depth: i32,
|
max_chain_depth: u8,
|
||||||
comptime_receiver: VALUE,
|
comptime_receiver: VALUE,
|
||||||
ivar_name: ID,
|
ivar_name: ID,
|
||||||
recv: Opnd,
|
recv: Opnd,
|
||||||
@ -2401,7 +2401,7 @@ fn gen_get_ivar(
|
|||||||
// Check if the comptime receiver is a T_OBJECT
|
// Check if the comptime receiver is a T_OBJECT
|
||||||
let receiver_t_object = unsafe { RB_TYPE_P(comptime_receiver, RUBY_T_OBJECT) };
|
let receiver_t_object = unsafe { RB_TYPE_P(comptime_receiver, RUBY_T_OBJECT) };
|
||||||
// Use a general C call at the last chain to avoid exits on megamorphic shapes
|
// Use a general C call at the last chain to avoid exits on megamorphic shapes
|
||||||
let megamorphic = asm.ctx.get_chain_depth() as i32 >= max_chain_depth;
|
let megamorphic = asm.ctx.get_chain_depth() >= max_chain_depth;
|
||||||
if megamorphic {
|
if megamorphic {
|
||||||
gen_counter_incr(asm, Counter::num_getivar_megamorphic);
|
gen_counter_incr(asm, Counter::num_getivar_megamorphic);
|
||||||
}
|
}
|
||||||
@ -2613,7 +2613,7 @@ fn gen_setinstancevariable(
|
|||||||
// Check if the comptime receiver is a T_OBJECT
|
// Check if the comptime receiver is a T_OBJECT
|
||||||
let receiver_t_object = unsafe { RB_TYPE_P(comptime_receiver, RUBY_T_OBJECT) };
|
let receiver_t_object = unsafe { RB_TYPE_P(comptime_receiver, RUBY_T_OBJECT) };
|
||||||
// Use a general C call at the last chain to avoid exits on megamorphic shapes
|
// Use a general C call at the last chain to avoid exits on megamorphic shapes
|
||||||
let megamorphic = asm.ctx.get_chain_depth() as i32 >= SET_IVAR_MAX_DEPTH;
|
let megamorphic = asm.ctx.get_chain_depth() >= SET_IVAR_MAX_DEPTH;
|
||||||
if megamorphic {
|
if megamorphic {
|
||||||
gen_counter_incr(asm, Counter::num_setivar_megamorphic);
|
gen_counter_incr(asm, Counter::num_setivar_megamorphic);
|
||||||
}
|
}
|
||||||
@ -2865,7 +2865,7 @@ fn gen_definedivar(
|
|||||||
// Specialize base on compile time values
|
// Specialize base on compile time values
|
||||||
let comptime_receiver = jit.peek_at_self();
|
let comptime_receiver = jit.peek_at_self();
|
||||||
|
|
||||||
if comptime_receiver.shape_too_complex() || asm.ctx.get_chain_depth() as i32 >= GET_IVAR_MAX_DEPTH {
|
if comptime_receiver.shape_too_complex() || asm.ctx.get_chain_depth() >= GET_IVAR_MAX_DEPTH {
|
||||||
// Fall back to calling rb_ivar_defined
|
// Fall back to calling rb_ivar_defined
|
||||||
|
|
||||||
// Save the PC and SP because the callee may allocate
|
// Save the PC and SP because the callee may allocate
|
||||||
@ -4321,7 +4321,7 @@ fn jit_guard_known_klass(
|
|||||||
obj_opnd: Opnd,
|
obj_opnd: Opnd,
|
||||||
insn_opnd: YARVOpnd,
|
insn_opnd: YARVOpnd,
|
||||||
sample_instance: VALUE,
|
sample_instance: VALUE,
|
||||||
max_chain_depth: i32,
|
max_chain_depth: u8,
|
||||||
counter: Counter,
|
counter: Counter,
|
||||||
) {
|
) {
|
||||||
let val_type = asm.ctx.get_opnd_type(insn_opnd);
|
let val_type = asm.ctx.get_opnd_type(insn_opnd);
|
||||||
@ -7654,7 +7654,7 @@ fn gen_send_general(
|
|||||||
gen_counter_incr(asm, Counter::num_send_polymorphic);
|
gen_counter_incr(asm, Counter::num_send_polymorphic);
|
||||||
}
|
}
|
||||||
// If megamorphic, let the caller fallback to dynamic dispatch
|
// If megamorphic, let the caller fallback to dynamic dispatch
|
||||||
if asm.ctx.get_chain_depth() as i32 >= SEND_MAX_DEPTH {
|
if asm.ctx.get_chain_depth() >= SEND_MAX_DEPTH {
|
||||||
gen_counter_incr(asm, Counter::send_megamorphic);
|
gen_counter_incr(asm, Counter::send_megamorphic);
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
@ -8173,7 +8173,7 @@ fn gen_invokeblock_specialized(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Fallback to dynamic dispatch if this callsite is megamorphic
|
// Fallback to dynamic dispatch if this callsite is megamorphic
|
||||||
if asm.ctx.get_chain_depth() as i32 >= SEND_MAX_DEPTH {
|
if asm.ctx.get_chain_depth() >= SEND_MAX_DEPTH {
|
||||||
gen_counter_incr(asm, Counter::invokeblock_megamorphic);
|
gen_counter_incr(asm, Counter::invokeblock_megamorphic);
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
@ -8354,7 +8354,7 @@ fn gen_invokesuper_specialized(
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Fallback to dynamic dispatch if this callsite is megamorphic
|
// Fallback to dynamic dispatch if this callsite is megamorphic
|
||||||
if asm.ctx.get_chain_depth() as i32 >= SEND_MAX_DEPTH {
|
if asm.ctx.get_chain_depth() >= SEND_MAX_DEPTH {
|
||||||
gen_counter_incr(asm, Counter::invokesuper_megamorphic);
|
gen_counter_incr(asm, Counter::invokesuper_megamorphic);
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user