summaryrefslogtreecommitdiff
path: root/yjit/src/codegen.rs
diff options
context:
space:
mode:
Diffstat (limited to 'yjit/src/codegen.rs')
-rw-r--r--yjit/src/codegen.rs36
1 files changed, 36 insertions, 0 deletions
diff --git a/yjit/src/codegen.rs b/yjit/src/codegen.rs
index 67d3ecd573..22e3c45438 100644
--- a/yjit/src/codegen.rs
+++ b/yjit/src/codegen.rs
@@ -901,6 +901,42 @@ fn gen_dup(
KeepCompiling
}
+
+
+
+
+
+
+use crate::backend::ir::*;
+
+#[allow(dead_code)]
+fn gen_dup_ir(
+ _jit: &mut JITState,
+ ctx: &mut Context,
+ cb: &mut CodeBlock,
+ _ocb: &mut OutlinedCb,
+) -> CodegenStatus {
+
+ let mut asm = Assembler::new();
+
+ let dup_val = ctx.ir_stack_pop(0);
+ let (mapping, tmp_type) = ctx.get_opnd_mapping(StackOpnd(0));
+
+ let loc0 = ctx.ir_stack_push_mapping((mapping, tmp_type));
+ asm.mov(loc0, dup_val);
+
+ asm.compile(cb);
+
+ KeepCompiling
+}
+
+
+
+
+
+
+
+
// duplicate stack top n elements
fn gen_dupn(
jit: &mut JITState,