summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxime Chevalier-Boisvert <maxime.chevalierboisvert@shopify.com>2022-06-20 16:06:39 -0400
committerTakashi Kokubun <takashikkbn@gmail.com>2022-08-29 08:46:58 -0700
commit4254174ca76d8e64db29fbcbcfc99a81e2d50211 (patch)
tree78b1affd191b0c81309e5503650164e6f88181e7
parent24db233fc70799642aad09be9170da61332ff010 (diff)
Port over setn
-rw-r--r--yjit/src/codegen.rs21
1 files changed, 10 insertions, 11 deletions
diff --git a/yjit/src/codegen.rs b/yjit/src/codegen.rs
index b97bb01b1b..291851c02e 100644
--- a/yjit/src/codegen.rs
+++ b/yjit/src/codegen.rs
@@ -1046,28 +1046,27 @@ fn gen_putspecialobject(
}
}
-/*
// set Nth stack entry to stack top
fn gen_setn(
jit: &mut JITState,
ctx: &mut Context,
- cb: &mut CodeBlock,
+ asm: &mut Assembler,
_ocb: &mut OutlinedCb,
) -> CodegenStatus {
- let nval: VALUE = jit_get_arg(jit, 0);
- let VALUE(n) = nval;
+ let n: VALUE = jit_get_arg(jit, 0);
- let top_val: X86Opnd = ctx.stack_pop(0);
- let dst_opnd: X86Opnd = ctx.stack_opnd(n.try_into().unwrap());
- mov(cb, REG0, top_val);
- mov(cb, dst_opnd, REG0);
+ let top_val = ctx.stack_pop(0);
+ let dst_opnd = ctx.stack_opnd(n.into());
+ asm.mov(
+ dst_opnd,
+ top_val
+ );
let mapping = ctx.get_opnd_mapping(StackOpnd(0));
- ctx.set_opnd_mapping(StackOpnd(n.try_into().unwrap()), mapping);
+ ctx.set_opnd_mapping(StackOpnd(n.into()), mapping);
KeepCompiling
}
-*/
// get nth stack value, then push it
fn gen_topn(
@@ -5967,7 +5966,7 @@ fn get_gen_fn(opcode: VALUE) -> Option<InsnGenFn> {
YARVINSN_putobject_INT2FIX_1_ => Some(gen_putobject_int2fix),
YARVINSN_putself => Some(gen_putself),
YARVINSN_putspecialobject => Some(gen_putspecialobject),
- //YARVINSN_setn => Some(gen_setn),
+ YARVINSN_setn => Some(gen_setn),
YARVINSN_topn => Some(gen_topn),
YARVINSN_adjuststack => Some(gen_adjuststack),