From 9d18e6c300eacfdf11e166326156677e56fc6392 Mon Sep 17 00:00:00 2001 From: Maxime Chevalier-Boisvert Date: Tue, 14 Jun 2022 15:50:48 -0400 Subject: Port gen_code_for_exit_from_stub() --- yjit/src/codegen.rs | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/yjit/src/codegen.rs b/yjit/src/codegen.rs index 580595d499..95d29689fb 100644 --- a/yjit/src/codegen.rs +++ b/yjit/src/codegen.rs @@ -400,21 +400,19 @@ fn verify_ctx(jit: &JITState, ctx: &Context) { fn gen_code_for_exit_from_stub(ocb: &mut OutlinedCb) -> CodePtr { let ocb = ocb.unwrap(); let code_ptr = ocb.get_write_ptr(); + let mut asm = Assembler::new(); - todo!(); - - /* gen_counter_incr!(asm, exit_from_branch_stub); - cpop(ocb, REG_SP); - cpop(ocb, REG_EC); - cpop(ocb, REG_CFP); + asm.cpop(SP); + asm.cpop(EC); + asm.cpop(CFP); + + asm.cret(Qundef.into()); - mov(ocb, RAX, uimm_opnd(Qundef.into())); - ret(ocb); + asm.compile(ocb); - return code_ptr; - */ + code_ptr } /// Generate an exit to return to the interpreter @@ -6186,7 +6184,7 @@ impl CodegenGlobals { let leave_exit_code = gen_leave_exit(&mut ocb); - //let stub_exit_code = gen_code_for_exit_from_stub(&mut ocb); + let stub_exit_code = gen_code_for_exit_from_stub(&mut ocb); // Generate full exit code for C func //let cfunc_exit_code = gen_full_cfunc_return(&mut ocb); -- cgit v1.2.3