YJIT: Avoid reloading InsnOut operands (#8021)
This commit is contained in:
parent
a1d4dada6b
commit
6b2abe570f
Notes:
git
2023-07-04 20:02:58 +00:00
Merged-By: maximecb <maximecb@ruby-lang.org>
@ -1375,7 +1375,7 @@ fn guard_object_is_array(
|
||||
}
|
||||
|
||||
let object_reg = match object {
|
||||
Opnd::Reg(_) => object,
|
||||
Opnd::InsnOut { .. } => object,
|
||||
_ => asm.load(object),
|
||||
};
|
||||
guard_object_is_heap(asm, object_reg, object_opnd, counter);
|
||||
@ -1407,7 +1407,7 @@ fn guard_object_is_string(
|
||||
}
|
||||
|
||||
let object_reg = match object {
|
||||
Opnd::Reg(_) => object,
|
||||
Opnd::InsnOut { .. } => object,
|
||||
_ => asm.load(object),
|
||||
};
|
||||
guard_object_is_heap(asm, object_reg, object_opnd, counter);
|
||||
@ -1954,7 +1954,7 @@ fn gen_get_ivar(
|
||||
|
||||
// If recv isn't already a register, load it.
|
||||
let recv = match recv {
|
||||
Opnd::Reg(_) => recv,
|
||||
Opnd::InsnOut { .. } => recv,
|
||||
_ => asm.load(recv),
|
||||
};
|
||||
|
||||
@ -3910,7 +3910,7 @@ fn jit_guard_known_klass(
|
||||
|
||||
// If obj_opnd isn't already a register, load it.
|
||||
let obj_opnd = match obj_opnd {
|
||||
Opnd::Reg(_) => obj_opnd,
|
||||
Opnd::InsnOut { .. } => obj_opnd,
|
||||
_ => asm.load(obj_opnd),
|
||||
};
|
||||
let klass_opnd = Opnd::mem(64, obj_opnd, RUBY_OFFSET_RBASIC_KLASS);
|
||||
@ -5209,7 +5209,7 @@ fn get_array_len(asm: &mut Assembler, array_opnd: Opnd) -> Opnd {
|
||||
|
||||
// Pull out the embed flag to check if it's an embedded array.
|
||||
let array_reg = match array_opnd {
|
||||
Opnd::Reg(_) => array_opnd,
|
||||
Opnd::InsnOut { .. } => array_opnd,
|
||||
_ => asm.load(array_opnd),
|
||||
};
|
||||
let flags_opnd = Opnd::mem(VALUE_BITS, array_reg, RUBY_OFFSET_RBASIC_FLAGS);
|
||||
@ -5223,7 +5223,7 @@ fn get_array_len(asm: &mut Assembler, array_opnd: Opnd) -> Opnd {
|
||||
asm.test(flags_opnd, (RARRAY_EMBED_FLAG as u64).into());
|
||||
|
||||
let array_reg = match array_opnd {
|
||||
Opnd::Reg(_) => array_opnd,
|
||||
Opnd::InsnOut { .. } => array_opnd,
|
||||
_ => asm.load(array_opnd),
|
||||
};
|
||||
let array_len_opnd = Opnd::mem(
|
||||
|
Loading…
x
Reference in New Issue
Block a user