diff options
author | Maxime Chevalier-Boisvert <maxime.chevalierboisvert@shopify.com> | 2022-06-14 15:50:48 -0400 |
---|---|---|
committer | Takashi Kokubun <takashikkbn@gmail.com> | 2022-08-29 08:46:56 -0700 |
commit | 9d18e6c300eacfdf11e166326156677e56fc6392 (patch) | |
tree | f488a747bcb319049d27869380f3930219ee7ad7 | |
parent | e72dab304e423ad8c98656c146d52f6a8fa4a2c2 (diff) |
Port gen_code_for_exit_from_stub()
-rw-r--r-- | yjit/src/codegen.rs | 20 |
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); |