From f0954d1b2b7703e0d5dc89564caa4620305d16c1 Mon Sep 17 00:00:00 2001 From: Max Bernstein Date: Thu, 6 Feb 2025 11:21:40 -0500 Subject: [PATCH] Add Putstring --- zjit/src/ir.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/zjit/src/ir.rs b/zjit/src/ir.rs index 3411f5bcb6..1f9911742f 100644 --- a/zjit/src/ir.rs +++ b/zjit/src/ir.rs @@ -17,6 +17,9 @@ enum Opnd { enum Insn { // SSA block parameter. Also used for function parameters in the function's entry block. Param { idx: usize }, + StringCopy { val: Opnd }, + + // Control flow instructions Return { val: Opnd }, } @@ -53,6 +56,7 @@ impl Function { enum RubyOpcode { Putnil, Putobject(VALUE), + Putstring(VALUE), Setlocal(usize), Getlocal(usize), Leave, @@ -103,6 +107,10 @@ fn to_ssa(opcodes: &Vec) -> Function { match opcode { RubyOpcode::Putnil => { state.push(Opnd::Const(Qnil)); }, RubyOpcode::Putobject(val) => { state.push(Opnd::Const(*val)); }, + RubyOpcode::Putstring(val) => { + let insn_id = Opnd::Insn(result.push_insn(block, Insn::StringCopy { val: Opnd::Const(*val) })); + state.push(insn_id); + } RubyOpcode::Setlocal(idx) => { let val = state.pop(); state.setlocal(*idx, val);