diff options
Diffstat (limited to 'zjit')
-rw-r--r-- | zjit/src/ir.rs | 7 | ||||
-rw-r--r-- | zjit/src/lib.rs | 4 |
2 files changed, 6 insertions, 5 deletions
diff --git a/zjit/src/ir.rs b/zjit/src/ir.rs index 278a1767b7..ea5647e8af 100644 --- a/zjit/src/ir.rs +++ b/zjit/src/ir.rs @@ -158,7 +158,7 @@ fn to_ssa(opcodes: &Vec<RubyOpcode>) -> Function { result } -fn iseq_to_ssa(iseq: *const rb_iseq_t) -> Function { +pub fn iseq_to_ssa(iseq: *const rb_iseq_t) { let mut result = Function::new(); let mut state = FrameState::new(); let block = result.entry_block; @@ -206,13 +206,14 @@ fn iseq_to_ssa(iseq: *const rb_iseq_t) -> Function { YARVINSN_leave => { result.push_insn(block, Insn::Return { val: state.pop() }); } - _ => todo!(), + _ => eprintln!("zjit: unknown opcode {opcode}"), } // Move to the next instruction to compile insn_idx += insn_len(opcode as usize); } - return result; + dbg!(result); + return; fn get_arg(pc: *const VALUE, arg_idx: isize) -> VALUE { unsafe { *(pc.offset(arg_idx + 1)) } diff --git a/zjit/src/lib.rs b/zjit/src/lib.rs index dd036a1ee4..6a4cda6ee3 100644 --- a/zjit/src/lib.rs +++ b/zjit/src/lib.rs @@ -25,7 +25,7 @@ pub extern "C" fn rb_zjit_parse_option() -> bool { } #[no_mangle] -pub extern "C" fn rb_zjit_iseq_gen_entry_point(_iseq: IseqPtr, _ec: EcPtr) -> *const u8 { - println!("compiling zjit"); +pub extern "C" fn rb_zjit_iseq_gen_entry_point(iseq: IseqPtr, _ec: EcPtr) -> *const u8 { + ir::iseq_to_ssa(iseq); std::ptr::null() } |