diff options
| author | Takashi Kokubun <takashikkbn@gmail.com> | 2023-07-04 13:02:39 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-07-04 16:02:39 -0400 |
| commit | 6b2abe570f0ecb1ec0e401be0eb4172f35b78307 (patch) | |
| tree | 378db453ee5a3c2fa955008ce6e625974b446bfc | |
| parent | a1d4dada6b99f7762d2a4adcd3784bd63d3a2fd2 (diff) | |
YJIT: Avoid reloading InsnOut operands (#8021)
Notes
Notes:
Merged-By: maximecb <maximecb@ruby-lang.org>
| -rw-r--r-- | yjit/src/codegen.rs | 12 |
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( |
