summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakashi Kokubun <takashikkbn@gmail.com>2022-09-18 21:45:58 +0900
committerTakashi Kokubun <takashikkbn@gmail.com>2022-09-23 06:44:28 +0900
commitf2bea691cd12150a526ddc4be95c5396f07920ba (patch)
tree654431ea4c7f7816b491ba28c77afe83e670410d
parent88bf8ad6e99fa36c7b4a0b5cbb6fc99777360855 (diff)
Builtin RubyVM::MJIT::C
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/6418
-rw-r--r--.gitignore5
-rw-r--r--common.mk12
-rw-r--r--inits.c1
-rw-r--r--lib/mjit/c_32.rb2
-rw-r--r--lib/mjit/c_64.rb2
-rw-r--r--mjit_compiler.c1
-rwxr-xr-xtool/mjit/bindgen.rb2
-rw-r--r--tool/ruby_vm/views/lib/mjit/instruction.rb.erb2
-rw-r--r--tool/ruby_vm/views/mjit_c.rb.erb3
9 files changed, 20 insertions, 10 deletions
diff --git a/.gitignore b/.gitignore
index c15b68f676..b7779c0ef2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -233,10 +233,11 @@ lcov*.info
/win32/*.ico
# MJIT
-/rb_mjit_header.h
-/mjit_config.h
/include/ruby-*/*/rb_mjit_min_header-*.h
/lib/mjit/instruction.rb
+/mjit_c.rb
+/mjit_config.h
+/rb_mjit_header.h
# YJIT
/yjit-bench
diff --git a/common.mk b/common.mk
index bef00d191f..ff0a2ca17f 100644
--- a/common.mk
+++ b/common.mk
@@ -235,7 +235,12 @@ main: $(SHOWFLAGS) exts $(ENCSTATIC:static=lib)encs
main: $(srcdir)/lib/mjit/instruction.rb
srcs: $(srcdir)/lib/mjit/instruction.rb
-$(srcdir)/lib/mjit/instruction.rb: $(tooldir)/ruby_vm/views/lib/mjit/instruction.rb.erb $(srcdir)/insns.def
+$(srcdir)/lib/mjit/instruction.rb: $(tooldir)/insns2vm.rb $(tooldir)/ruby_vm/views/lib/mjit/instruction.rb.erb $(srcdir)/insns.def
+ $(ECHO) generating $@
+ $(Q) $(BASERUBY) -Ku $(tooldir)/insns2vm.rb --basedir="$(srcdir)" $(INSNS2VMOPT) $@
+
+srcs: $(srcdir)/mjit_c.rb
+$(srcdir)/mjit_c.rb: $(tooldir)/insns2vm.rb $(tooldir)/ruby_vm/views/mjit_c.rb.erb
$(ECHO) generating $@
$(Q) $(BASERUBY) -Ku $(tooldir)/insns2vm.rb --basedir="$(srcdir)" $(INSNS2VMOPT) $@
@@ -1094,6 +1099,7 @@ BUILTIN_RB_SRCS = \
$(srcdir)/io.rb \
$(srcdir)/marshal.rb \
$(srcdir)/mjit.rb \
+ $(srcdir)/mjit_c.rb \
$(srcdir)/mjit_compiler.rb \
$(srcdir)/pack.rb \
$(srcdir)/trace_point.rb \
@@ -9310,6 +9316,7 @@ miniinit.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
miniinit.$(OBJEXT): $(CCAN_DIR)/list/list.h
miniinit.$(OBJEXT): $(CCAN_DIR)/str/str.h
miniinit.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+miniinit.$(OBJEXT): $(srcdir)/mjit_c.rb
miniinit.$(OBJEXT): $(top_srcdir)/internal/array.h
miniinit.$(OBJEXT): $(top_srcdir)/internal/compilers.h
miniinit.$(OBJEXT): $(top_srcdir)/internal/gc.h
@@ -9500,6 +9507,7 @@ miniinit.$(OBJEXT): {$(VPATH)}miniinit.c
miniinit.$(OBJEXT): {$(VPATH)}miniprelude.c
miniinit.$(OBJEXT): {$(VPATH)}missing.h
miniinit.$(OBJEXT): {$(VPATH)}mjit.rb
+miniinit.$(OBJEXT): {$(VPATH)}mjit_c.rb
miniinit.$(OBJEXT): {$(VPATH)}mjit_compiler.rb
miniinit.$(OBJEXT): {$(VPATH)}nilclass.rb
miniinit.$(OBJEXT): {$(VPATH)}node.h
@@ -9754,6 +9762,7 @@ mjit_compiler.$(OBJEXT): $(CCAN_DIR)/list/list.h
mjit_compiler.$(OBJEXT): $(CCAN_DIR)/str/str.h
mjit_compiler.$(OBJEXT): $(hdrdir)/ruby.h
mjit_compiler.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+mjit_compiler.$(OBJEXT): $(srcdir)/mjit_c.rb
mjit_compiler.$(OBJEXT): $(top_srcdir)/internal/array.h
mjit_compiler.$(OBJEXT): $(top_srcdir)/internal/class.h
mjit_compiler.$(OBJEXT): $(top_srcdir)/internal/compile.h
@@ -9939,6 +9948,7 @@ mjit_compiler.$(OBJEXT): {$(VPATH)}mjit_compiler.c
mjit_compiler.$(OBJEXT): {$(VPATH)}mjit_compiler.h
mjit_compiler.$(OBJEXT): {$(VPATH)}mjit_compiler.rb
mjit_compiler.$(OBJEXT): {$(VPATH)}mjit_compiler.rbinc
+mjit_compiler.$(OBJEXT): {$(VPATH)}mjit_c.rbinc
mjit_compiler.$(OBJEXT): {$(VPATH)}mjit_unit.h
mjit_compiler.$(OBJEXT): {$(VPATH)}node.h
mjit_compiler.$(OBJEXT): {$(VPATH)}ruby_assert.h
diff --git a/inits.c b/inits.c
index 65a54d8f29..9decba3c11 100644
--- a/inits.c
+++ b/inits.c
@@ -104,6 +104,7 @@ rb_call_builtin_inits(void)
BUILTIN(marshal);
#if USE_MJIT
BUILTIN(mjit);
+ BUILTIN(mjit_c);
BUILTIN(mjit_compiler);
#endif
Init_builtin_prelude();
diff --git a/lib/mjit/c_32.rb b/lib/mjit/c_32.rb
index 9931088271..7d70595ba2 100644
--- a/lib/mjit/c_32.rb
+++ b/lib/mjit/c_32.rb
@@ -1,8 +1,6 @@
require_relative 'c_type'
module RubyVM::MJIT
- C = Object.new
-
def C.NOT_COMPILED_STACK_SIZE = -1
def C.USE_LAZY_LOAD = false
diff --git a/lib/mjit/c_64.rb b/lib/mjit/c_64.rb
index 2746ed13a0..33fb8475d6 100644
--- a/lib/mjit/c_64.rb
+++ b/lib/mjit/c_64.rb
@@ -1,8 +1,6 @@
require_relative 'c_type'
module RubyVM::MJIT
- C = Object.new
-
def C.NOT_COMPILED_STACK_SIZE = -1
def C.USE_LAZY_LOAD = false
diff --git a/mjit_compiler.c b/mjit_compiler.c
index 2594678f77..f04f7b0c03 100644
--- a/mjit_compiler.c
+++ b/mjit_compiler.c
@@ -164,6 +164,7 @@ has_cache_for_send(rb_execution_context_t *ec, VALUE self, VALUE cc_addr, VALUE
extern bool rb_splat_or_kwargs_p(const struct rb_callinfo *restrict ci);
+#include "mjit_c.rbinc"
#include "mjit_compiler.rbinc"
#endif // USE_MJIT
diff --git a/tool/mjit/bindgen.rb b/tool/mjit/bindgen.rb
index 80bdd36c6f..8bc537f0d1 100755
--- a/tool/mjit/bindgen.rb
+++ b/tool/mjit/bindgen.rb
@@ -343,8 +343,6 @@ class BindingGenerator
println "require_relative 'c_type'"
println
println "module RubyVM::MJIT"
- println " C = Object.new"
- println
# Define macros
@macros.each do |macro|
diff --git a/tool/ruby_vm/views/lib/mjit/instruction.rb.erb b/tool/ruby_vm/views/lib/mjit/instruction.rb.erb
index 1c462de53a..dac53668a0 100644
--- a/tool/ruby_vm/views/lib/mjit/instruction.rb.erb
+++ b/tool/ruby_vm/views/lib/mjit/instruction.rb.erb
@@ -37,4 +37,4 @@ module RubyVM::MJIT
}
private_constant(*constants)
-end if RubyVM::MJIT.enabled?
+end
diff --git a/tool/ruby_vm/views/mjit_c.rb.erb b/tool/ruby_vm/views/mjit_c.rb.erb
new file mode 100644
index 0000000000..06cc88c072
--- /dev/null
+++ b/tool/ruby_vm/views/mjit_c.rb.erb
@@ -0,0 +1,3 @@
+module RubyVM::MJIT
+ C = Object.new
+end if RubyVM::MJIT.enabled?