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

ruby-changes:68660

From: Maxime <ko1@a...>
Date: Thu, 21 Oct 2021 08:12:01 +0900 (JST)
Subject: [ruby-changes:68660] f761e9ee64 (master): Move code into ujit_iface.c

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

From f761e9ee641cb4bf9250fa97d119a444d239e7b7 Mon Sep 17 00:00:00 2001
From: Maxime Chevalier-Boisvert <maxime.chevalierboisvert@s...>
Date: Tue, 8 Dec 2020 17:19:28 -0500
Subject: Move code into ujit_iface.c

---
 ujit_codegen.c |  7 ++-----
 ujit_iface.c   | 16 ++++++++++++++++
 ujit_iface.h   |  2 ++
 3 files changed, 20 insertions(+), 5 deletions(-)

diff --git a/ujit_codegen.c b/ujit_codegen.c
index 09a0acd76d..03b72ec2c3 100644
--- a/ujit_codegen.c
+++ b/ujit_codegen.c
@@ -14,7 +14,6 @@ https://github.com/ruby/ruby/blob/trunk/ujit_codegen.c#L14
 #include "ujit_codegen.h"
 #include "ujit_asm.h"
 #include "ujit_utils.h"
-#include "ujit_hooks.inc"
 
 // Code generation function signature
 typedef bool (*codegen_fn)(codeblock_t* cb, codeblock_t* ocb, ctx_t* ctx);
@@ -34,8 +33,7 @@ static codeblock_t* ocb = NULL; https://github.com/ruby/ruby/blob/trunk/ujit_codegen.c#L33
 static void
 ujit_gen_entry(codeblock_t* cb)
 {
-    for (size_t i = 0; i < sizeof(ujit_with_ec_pre_call_bytes); ++i)
-        cb_write_byte(cb, ujit_with_ec_pre_call_bytes[i]);
+    cb_write_pre_call_bytes(cb);
 }
 
 /**
@@ -57,8 +55,7 @@ ujit_gen_exit(codeblock_t* cb, ctx_t* ctx, VALUE* exit_pc) https://github.com/ruby/ruby/blob/trunk/ujit_codegen.c#L55
     mov(cb, member_opnd(REG_CFP, rb_control_frame_t, pc), RAX);
 
     // Write the post call bytes
-    for (size_t i = 0; i < sizeof(ujit_with_ec_post_call_bytes); ++i)
-        cb_write_byte(cb, ujit_with_ec_post_call_bytes[i]);
+    cb_write_post_call_bytes(cb);
 }
 
 /**
diff --git a/ujit_iface.c b/ujit_iface.c
index 9b407c82d1..404c75dbee 100644
--- a/ujit_iface.c
+++ b/ujit_iface.c
@@ -19,6 +19,22 @@ bool rb_ujit_enabled; https://github.com/ruby/ruby/blob/trunk/ujit_iface.c#L19
 // Hash table of encoded instructions
 extern st_table *rb_encoded_insn_data;
 
+// Write the uJIT entry point pre-call bytes
+void 
+cb_write_pre_call_bytes(codeblock_t* cb)
+{
+    for (size_t i = 0; i < sizeof(ujit_with_ec_pre_call_bytes); ++i)
+        cb_write_byte(cb, ujit_with_ec_pre_call_bytes[i]);
+}
+
+// Write the uJIT exit post-call bytes
+void 
+cb_write_post_call_bytes(codeblock_t* cb)
+{
+    for (size_t i = 0; i < sizeof(ujit_with_ec_post_call_bytes); ++i)
+        cb_write_byte(cb, ujit_with_ec_post_call_bytes[i]);
+}
+
 // Keep track of mapping from instructions to generated code
 // See comment for rb_encoded_insn_data in iseq.c
 void
diff --git a/ujit_iface.h b/ujit_iface.h
index 1e43c7c60c..920dfd5349 100644
--- a/ujit_iface.h
+++ b/ujit_iface.h
@@ -20,6 +20,8 @@ struct rb_callcache; https://github.com/ruby/ruby/blob/trunk/ujit_iface.h#L20
 #define rb_callcache rb_callcache
 #endif
 
+void cb_write_pre_call_bytes(codeblock_t* cb);
+void cb_write_post_call_bytes(codeblock_t* cb);
 void map_addr2insn(void *code_ptr, int insn);
 int opcode_at_pc(const rb_iseq_t *iseq, const VALUE *pc);
 void assume_method_lookup_stable(const struct rb_callcache *cc, const rb_callable_method_entry_t *cme, ctx_t *ctx);
-- 
cgit v1.2.1


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

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