From f2bea691cd12150a526ddc4be95c5396f07920ba Mon Sep 17 00:00:00 2001 From: Takashi Kokubun Date: Sun, 18 Sep 2022 21:45:58 +0900 Subject: Builtin RubyVM::MJIT::C --- .gitignore | 5 +++-- common.mk | 12 +++++++++++- inits.c | 1 + lib/mjit/c_32.rb | 2 -- lib/mjit/c_64.rb | 2 -- mjit_compiler.c | 1 + tool/mjit/bindgen.rb | 2 -- tool/ruby_vm/views/lib/mjit/instruction.rb.erb | 2 +- tool/ruby_vm/views/mjit_c.rb.erb | 3 +++ 9 files changed, 20 insertions(+), 10 deletions(-) create mode 100644 tool/ruby_vm/views/mjit_c.rb.erb 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? -- cgit v1.2.3