[前][次][番号順一覧][スレッド一覧]

ruby-changes:68740

From: Maxime <ko1@a...>
Date: Thu, 21 Oct 2021 08:13:09 +0900 (JST)
Subject: [ruby-changes:68740] a267f45502 (master): Remove superfluous instruction in opt_send_without_block

https://git.ruby-lang.org/ruby.git/commit/?id=a267f45502

From a267f45502358114fa37b0390f894eb480624b67 Mon Sep 17 00:00:00 2001
From: Maxime Chevalier-Boisvert <maxime.chevalierboisvert@s...>
Date: Wed, 10 Feb 2021 19:56:50 -0500
Subject: Remove superfluous instruction in opt_send_without_block

---
 ujit_codegen.c | 52 ++++++++--------------------------------------------
 1 file 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 https://github.com/ruby/ruby/blob/trunk/ujit_codegen.c#L1312
     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 https://github.com/ruby/ruby/blob/trunk/ujit_codegen.c#L1322
     //    .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 https://github.com/ruby/ruby/blob/trunk/ujit_codegen.c#L1354
         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) https://github.com/ruby/ruby/blob/trunk/ujit_codegen.c#L1455
     // 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) https://github.com/ruby/ruby/blob/trunk/ujit_codegen.c#L1470
     // 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) https://github.com/ruby/ruby/blob/trunk/ujit_codegen.c#L1483
     // Fall back to the interpreter
     cb_write_label(cb, FALLBACK_LABEL);
     cb_link_labels(cb);
-
-
-
-
-
     cb_write_post_call_bytes(cb);
 
     return true;
-- 
cgit v1.2.1


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]