summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakashi Kokubun <takashikkbn@gmail.com>2023-07-04 13:02:39 -0700
committerGitHub <noreply@github.com>2023-07-04 16:02:39 -0400
commit6b2abe570f0ecb1ec0e401be0eb4172f35b78307 (patch)
tree378db453ee5a3c2fa955008ce6e625974b446bfc
parenta1d4dada6b99f7762d2a4adcd3784bd63d3a2fd2 (diff)
YJIT: Avoid reloading InsnOut operands (#8021)
Notes
Notes: Merged-By: maximecb <maximecb@ruby-lang.org>
-rw-r--r--yjit/src/codegen.rs12
1 files changed, 6 insertions, 6 deletions
diff --git a/yjit/src/codegen.rs b/yjit/src/codegen.rs
index fcf12be8ef..db40f6912d 100644
--- a/yjit/src/codegen.rs
+++ b/yjit/src/codegen.rs
@@ -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(