ruby-changes:73600
From: Takashi <ko1@a...>
Date: Sun, 18 Sep 2022 14:06:08 +0900 (JST)
Subject: [ruby-changes:73600] 0e816e6d30 (master): Demote mjit_instruction.rb from builtin to stdlib
https://git.ruby-lang.org/ruby.git/commit/?id=0e816e6d30 From 0e816e6d3022892da438940b09c4d4b49ceb670f Mon Sep 17 00:00:00 2001 From: Takashi Kokubun <takashikkbn@g...> Date: Sun, 18 Sep 2022 14:02:09 +0900 Subject: Demote mjit_instruction.rb from builtin to stdlib --- .gitignore | 2 +- common.mk | 7 +----- inits.c | 1 - mjit_compiler.c | 1 - mjit_compiler.rb | 1 + template/Makefile.in | 9 ++++--- tool/ruby_vm/views/instruction.rb.erb | 40 ++++++++++++++++++++++++++++++ tool/ruby_vm/views/mjit_instruction.rb.erb | 40 ------------------------------ win32/Makefile.sub | 4 --- 9 files changed, 48 insertions(+), 57 deletions(-) create mode 100644 tool/ruby_vm/views/instruction.rb.erb delete mode 100644 tool/ruby_vm/views/mjit_instruction.rb.erb diff --git a/.gitignore b/.gitignore index 52089ac21c..73012bb3ed 100644 --- a/.gitignore +++ b/.gitignore @@ -236,7 +236,7 @@ lcov*.info https://github.com/ruby/ruby/blob/trunk/.gitignore#L236 /rb_mjit_header.h /mjit_config.h /include/ruby-*/*/rb_mjit_min_header-*.h -/mjit_instruction.rb +/lib/mjit/instruction.rb # /wasm/ /wasm/tests/*.wasm diff --git a/common.mk b/common.mk index 5f016d6fc3..2956e2c93e 100644 --- a/common.mk +++ b/common.mk @@ -1081,7 +1081,6 @@ BUILTIN_RB_SRCS = \ https://github.com/ruby/ruby/blob/trunk/common.mk#L1081 $(srcdir)/marshal.rb \ $(srcdir)/mjit.rb \ $(srcdir)/mjit_compiler.rb \ - $(srcdir)/mjit_instruction.rb \ $(srcdir)/pack.rb \ $(srcdir)/trace_point.rb \ $(srcdir)/warning.rb \ @@ -1173,7 +1172,7 @@ vm_call_iseq_optimized.inc: $(srcdir)/template/call_iseq_optimized.inc.tmpl https://github.com/ruby/ruby/blob/trunk/common.mk#L1172 $(ECHO) generating $@ $(Q) $(BASERUBY) $(tooldir)/generic_erb.rb -c -o $@ $(srcdir)/template/call_iseq_optimized.inc.tmpl -$(MINIPRELUDE_C): $(COMPILE_PRELUDE) $(BUILTIN_RB_SRCS) $(srcdir)/mjit_instruction.rb +$(MINIPRELUDE_C): $(COMPILE_PRELUDE) $(BUILTIN_RB_SRCS) $(ECHO) generating $@ $(Q) $(BASERUBY) $(tooldir)/generic_erb.rb -I$(srcdir) -o $@ \ $(srcdir)/template/prelude.c.tmpl $(BUILTIN_RB_SRCS) @@ -9302,7 +9301,6 @@ miniinit.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h https://github.com/ruby/ruby/blob/trunk/common.mk#L9301 miniinit.$(OBJEXT): $(CCAN_DIR)/list/list.h miniinit.$(OBJEXT): $(CCAN_DIR)/str/str.h miniinit.$(OBJEXT): $(hdrdir)/ruby/ruby.h -miniinit.$(OBJEXT): $(srcdir)/mjit_instruction.rb miniinit.$(OBJEXT): $(top_srcdir)/internal/array.h miniinit.$(OBJEXT): $(top_srcdir)/internal/compilers.h miniinit.$(OBJEXT): $(top_srcdir)/internal/gc.h @@ -9494,7 +9492,6 @@ miniinit.$(OBJEXT): {$(VPATH)}miniprelude.c https://github.com/ruby/ruby/blob/trunk/common.mk#L9492 miniinit.$(OBJEXT): {$(VPATH)}missing.h miniinit.$(OBJEXT): {$(VPATH)}mjit.rb miniinit.$(OBJEXT): {$(VPATH)}mjit_compiler.rb -miniinit.$(OBJEXT): {$(VPATH)}mjit_instruction.rb miniinit.$(OBJEXT): {$(VPATH)}nilclass.rb miniinit.$(OBJEXT): {$(VPATH)}node.h miniinit.$(OBJEXT): {$(VPATH)}numeric.rb @@ -9748,7 +9745,6 @@ mjit_compiler.$(OBJEXT): $(CCAN_DIR)/list/list.h https://github.com/ruby/ruby/blob/trunk/common.mk#L9745 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_instruction.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 @@ -9934,7 +9930,6 @@ mjit_compiler.$(OBJEXT): {$(VPATH)}mjit_compiler.c https://github.com/ruby/ruby/blob/trunk/common.mk#L9930 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_instruction.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 f43ece0e47..65a54d8f29 100644 --- a/inits.c +++ b/inits.c @@ -105,7 +105,6 @@ rb_call_builtin_inits(void) https://github.com/ruby/ruby/blob/trunk/inits.c#L105 #if USE_MJIT BUILTIN(mjit); BUILTIN(mjit_compiler); - BUILTIN(mjit_instruction); #endif Init_builtin_prelude(); } diff --git a/mjit_compiler.c b/mjit_compiler.c index 5163bbcf6b..2594678f77 100644 --- a/mjit_compiler.c +++ b/mjit_compiler.c @@ -165,6 +165,5 @@ has_cache_for_send(rb_execution_context_t *ec, VALUE self, VALUE cc_addr, VALUE https://github.com/ruby/ruby/blob/trunk/mjit_compiler.c#L165 extern bool rb_splat_or_kwargs_p(const struct rb_callinfo *restrict ci); #include "mjit_compiler.rbinc" -#include "mjit_instruction.rbinc" #endif // USE_MJIT diff --git a/mjit_compiler.rb b/mjit_compiler.rb index 9e032fc747..4996e773dc 100644 --- a/mjit_compiler.rb +++ b/mjit_compiler.rb @@ -132,5 +132,6 @@ if RubyVM::MJIT.enabled? https://github.com/ruby/ruby/blob/trunk/mjit_compiler.rb#L132 def rb_cFloat; Primitive.cexpr! 'PTR2NUM(rb_cFloat)' end end + require "mjit/instruction" require "mjit/compiler" end diff --git a/template/Makefile.in b/template/Makefile.in index a644a92754..06878d552f 100644 --- a/template/Makefile.in +++ b/template/Makefile.in @@ -504,6 +504,11 @@ clean-local:: https://github.com/ruby/ruby/blob/trunk/template/Makefile.in#L504 $(Q)$(RM) -r mjit_build_dir.* -$(Q) $(RMDIRS) $(MJIT_HEADER_INSTALL_DIR) $(MJIT_HEADER_BUILD_DIR) $(TIMESTAMPDIR) 2> $(NULL) || $(NULLCMD) +main: $(srcdir)/lib/mjit/instruction.rb +$(srcdir)/lib/mjit/instruction.rb: $(tooldir)/ruby_vm/views/instruction.rb.erb $(srcdir)/insns.def + $(ECHO) generating $@ + $(Q) $(BASERUBY) -Ku $(tooldir)/insns2vm.rb $(INSNS2VMOPT) $@ + # DTrace static library hacks described here: # https://marc.info/?l=opensolaris-dtrace-discuss&m=114761203110734&w=4 ruby-glommed.$(OBJEXT): @@ -669,10 +674,6 @@ $(INSNS): $(srcdir)/insns.def vm_opts.h \ https://github.com/ruby/ruby/blob/trunk/template/Makefile.in#L674 $(ECHO) generating $@ $(Q) $(BASERUBY) -Ku $(tooldir)/insns2vm.rb $(INSNS2VMOPT) $@ -$(srcdir)/mjit_instruction.rb: $(tooldir)/ruby_vm/views/mjit_instruction.rb.erb - $(ECHO) generating $@ - $(Q) $(BASERUBY) -Ku $(tooldir)/insns2vm.rb $(INSNS2VMOPT) $@ - loadpath: verconf.h @$(CPP) $(XCFLAGS) $(CPPFLAGS) $(srcdir)/loadpath.c | \ sed -e '1,/^const char ruby_initial_load_paths/d;/;/,$$d' \ diff --git a/tool/ruby_vm/views/instruction.rb.erb b/tool/ruby_vm/views/instruction.rb.erb new file mode 100644 index 0000000000..1c462de53a --- /dev/null +++ b/tool/ruby_vm/views/instruction.rb.erb @@ -0,0 +1,40 @@ https://github.com/ruby/ruby/blob/trunk/tool/ruby_vm/views/instruction.rb.erb#L1 +module RubyVM::MJIT + Instruction = Struct.new( + :name, + :bin, + :len, + :expr, + :declarations, + :preamble, + :opes, + :pops, + :rets, + :always_leaf?, + :leaf_without_check_ints?, + :handles_sp?, + ) + + INSNS = { +% RubyVM::Instructions.each_with_index do |insn, i| +% next if insn.name.start_with?('trace_') + <%= i %> => Instruction.new( + name: :<%= insn.name %>, + bin: <%= i %>, # BIN(<%= insn.name %>) + len: <%= insn.width %>, # insn_len + expr: <<-EXPR, +<%= insn.expr.expr.dump.sub(/\A"/, '').sub(/"\z/, '').gsub(/\\n/, "\n").gsub(/\\t/, ' ' * 8) %> + EXPR + declarations: <%= insn.declarations.inspect %>, + preamble: <%= insn.preamble.map(&:expr).inspect %>, + opes: <%= insn.opes.inspect %>, + pops: <%= insn.pops.inspect %>, + rets: <%= insn.rets.inspect %>, + always_leaf?: <%= insn.always_leaf? %>, + leaf_without_check_ints?: <%= insn.leaf_without_check_ints? %>, + handles_sp?: <%= insn.handles_sp? %>, + ), +% end + } + + private_constant(*constants) +end if RubyVM::MJIT.enabled? diff --git a/tool/ruby_vm/views/mjit_instruction.rb.erb b/tool/ruby_vm/views/mjit_instruction.rb.erb deleted file mode 100644 index 1c462de53a..0000000000 --- a/tool/ruby_vm/views/mjit_instruction.rb.erb +++ /dev/null @@ -1,40 +0,0 @@ https://github.com/ruby/ruby/blob/trunk/tool/ruby_vm/views/instruction.rb.erb#L0 -module RubyVM::MJIT - Instruction = Struct.new( - :name, - :bin, - :len, - :expr, - :declarations, - :preamble, - :opes, - :pops, - :rets, - :always_leaf?, - :leaf_without_check_ints?, - :handles_sp?, - ) - - INSNS = { -% RubyVM::Instructions.each_with_index do |insn, i| -% next if insn.name.start_with?('trace_') - <%= i %> => Instruction.new( - name: :<%= insn.name %>, - bin: <%= i %>, # BIN(<%= insn.name %>) - len: <%= insn.width %>, # insn_len - expr: <<-EXPR, -<%= insn.expr.expr.dump.sub(/\A"/, '').sub(/"\z/, '').gsub(/\\n/, "\n").gsub(/\\t/, ' ' * 8) %> - EXPR - declarations: <%= insn.declarations.inspect %>, - preamble: <%= insn.preamble.map(&:expr).inspect %>, - opes: <%= insn.opes.inspect %>, - pops: <%= insn.pops.inspect %>, - rets: <%= insn.rets.inspect %>, - always_leaf?: <%= insn.always_leaf? %>, - leaf_without_check_ints?: <%= insn.leaf_without_check_ints? %>, - handles_sp?: <%= insn.handles_sp? %>, - ), -% end - } - - private_constant(*constants) -end if RubyVM::MJIT.enabled? diff --git a/win32/Makefile.sub b/win32/Makefile.sub index 361af556cd..e84f978bb7 100644 --- a/win32/Makefile.sub +++ b/win32/Makefile.sub @@ -1351,10 +1351,6 @@ INSNS = opt_sc.inc optinsn.inc optunifs.inc insns.inc insns_info.inc \ https://github.com/ruby/ruby/blob/trunk/win32/Makefile.sub#L1351 ! endif !endif -$(srcdir)/mjit_instruction.rb: $(tooldir)/ruby_vm/views/mjit_instruction.rb.erb - $(ECHO) generating $@ - $(Q) $(BASERUBY) -Ku $(tooldir)/insns2vm.rb $(INSNS2VMOPT) $@ - verconf.h: verconf.mk loadpath: verconf.h -- cgit v1.2.1 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/