summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxime Chevalier-Boisvert <maxime.chevalierboisvert@shopify.com>2022-06-14 15:50:48 -0400
committerTakashi Kokubun <takashikkbn@gmail.com>2022-08-29 08:46:56 -0700
commit9d18e6c300eacfdf11e166326156677e56fc6392 (patch)
treef488a747bcb319049d27869380f3930219ee7ad7
parente72dab304e423ad8c98656c146d52f6a8fa4a2c2 (diff)
Port gen_code_for_exit_from_stub()
-rw-r--r--yjit/src/codegen.rs20
1 files 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);