summaryrefslogtreecommitdiff
path: root/ujit_codegen.c
diff options
context:
space:
mode:
authorMaxime Chevalier-Boisvert <maxime.chevalierboisvert@shopify.com>2021-02-10 19:56:50 -0500
committerAlan Wu <XrXr@users.noreply.github.com>2021-10-20 18:19:28 -0400
commita267f45502358114fa37b0390f894eb480624b67 (patch)
tree0176db0cde911c20c26b1e747a5675891043e1f2 /ujit_codegen.c
parent75b623776b920b0711c0c458997467d19a32ef8e (diff)
downloadruby-a267f45502358114fa37b0390f894eb480624b67.tar.gz
Remove superfluous instruction in opt_send_without_block
Diffstat (limited to 'ujit_codegen.c')
-rw-r--r--ujit_codegen.c52
1 files changed, 8 insertions, 44 deletions
diff --git a/ujit_codegen.c b/ujit_codegen.c
index 33cf1b84d8..14d6b305c1 100644
--- a/ujit_codegen.c
+++ b/ujit_codegen.c
@@ -1312,15 +1312,6 @@ gen_opt_swb_iseq(jitstate_t* jit, ctx_t* ctx, struct rb_call_data * cd, const rb
sub(cb, REG_CFP, imm_opnd(sizeof(rb_control_frame_t)));
mov(cb, member_opnd(REG_EC, rb_execution_context_t, cfp), REG_CFP);
-
-
-
-
- // FIXME
- // FIXME: we could use REG_CFP here instead of REG1???
- // FIXME: no need to reload from CFP
-
-
// Setup the new frame
// *cfp = (const struct rb_control_frame_struct) {
// .pc = pc,
@@ -1331,23 +1322,17 @@ gen_opt_swb_iseq(jitstate_t* jit, ctx_t* ctx, struct rb_call_data * cd, const rb
// .block_code = 0,
// .__bp__ = sp,
// };
- mov(cb, REG1, member_opnd(REG_EC, rb_execution_context_t, cfp));
- mov(cb, member_opnd(REG1, rb_control_frame_t, block_code), imm_opnd(0));
- mov(cb, member_opnd(REG1, rb_control_frame_t, sp), REG0);
- mov(cb, member_opnd(REG1, rb_control_frame_t, __bp__), REG0);
+ mov(cb, member_opnd(REG_CFP, rb_control_frame_t, block_code), imm_opnd(0));
+ mov(cb, member_opnd(REG_CFP, rb_control_frame_t, sp), REG0);
+ mov(cb, member_opnd(REG_CFP, rb_control_frame_t, __bp__), REG0);
sub(cb, REG0, imm_opnd(sizeof(VALUE)));
- mov(cb, member_opnd(REG1, rb_control_frame_t, ep), REG0);
+ mov(cb, member_opnd(REG_CFP, rb_control_frame_t, ep), REG0);
mov(cb, REG0, recv);
- mov(cb, member_opnd(REG1, rb_control_frame_t, self), REG0);
+ mov(cb, member_opnd(REG_CFP, rb_control_frame_t, self), REG0);
mov(cb, REG0, const_ptr_opnd(iseq));
- mov(cb, member_opnd(REG1, rb_control_frame_t, iseq), REG0);
+ mov(cb, member_opnd(REG_CFP, rb_control_frame_t, iseq), REG0);
mov(cb, REG0, const_ptr_opnd(start_pc));
- mov(cb, member_opnd(REG1, rb_control_frame_t, pc), REG0);
-
-
-
-
-
+ mov(cb, member_opnd(REG_CFP, rb_control_frame_t, pc), REG0);
// Stub so we can return to JITted code
blockid_t return_block = { jit->iseq, jit_next_insn_idx(jit) };
@@ -1369,8 +1354,6 @@ gen_opt_swb_iseq(jitstate_t* jit, ctx_t* ctx, struct rb_call_data * cd, const rb
gen_return_branch
);
-
-
//print_str(cb, "calling Ruby func:");
//print_str(cb, rb_id2name(vm_ci_mid(cd->ci)));
@@ -1472,19 +1455,12 @@ gen_leave(jitstate_t* jit, ctx_t* ctx)
// TODO:
// RUBY_VM_CHECK_INTS(ec);
-
-
- // FIXME: not needed for interpreter
// Load the return value
mov(cb, REG0, ctx_stack_pop(ctx, 1));
-
-
// Load the JIT return address
mov(cb, REG1, member_opnd(REG_CFP, rb_control_frame_t, jit_return));
-
-
// Pop the current frame (ec->cfp++)
// Note: the return PC is already in the previous CFP
add(cb, REG_CFP, imm_opnd(sizeof(rb_control_frame_t)));
@@ -1494,14 +1470,7 @@ gen_leave(jitstate_t* jit, ctx_t* ctx)
// The SP points one above the topmost value
add(cb, member_opnd(REG_CFP, rb_control_frame_t, sp), imm_opnd(SIZEOF_VALUE));
mov(cb, REG_SP, member_opnd(REG_CFP, rb_control_frame_t, sp));
- mov(cb, mem_opnd(64, REG_SP, -SIZEOF_VALUE), REG0);
-
-
-
-
-
-
-
+ mov(cb, mem_opnd(64, REG_SP, -SIZEOF_VALUE), REG0);
// If the return address is NULL, fall back to the interpreter
int FALLBACK_LABEL = cb_new_label(cb, "FALLBACK");
@@ -1514,11 +1483,6 @@ gen_leave(jitstate_t* jit, ctx_t* ctx)
// Fall back to the interpreter
cb_write_label(cb, FALLBACK_LABEL);
cb_link_labels(cb);
-
-
-
-
-
cb_write_post_call_bytes(cb);
return true;