diff options
-rw-r--r-- | .gitignore | 4 | ||||
-rw-r--r-- | common.mk | 1644 | ||||
-rw-r--r-- | inits.c | 2 | ||||
-rw-r--r-- | iseq.c | 12 | ||||
-rw-r--r-- | iseq.h | 2 | ||||
-rw-r--r-- | mjit.h | 9 | ||||
-rw-r--r-- | ractor.c | 4 | ||||
-rw-r--r-- | ruby.c | 28 | ||||
-rw-r--r-- | template/Makefile.in | 2 | ||||
-rwxr-xr-x | test_asm.sh | 2 | ||||
-rw-r--r-- | tool/ruby_vm/models/micro_jit.rb | 6 | ||||
-rw-r--r-- | tool/ruby_vm/models/micro_jit/example_instructions.rb | 2 | ||||
-rw-r--r-- | tool/ruby_vm/views/vm.inc.erb | 8 | ||||
-rw-r--r-- | tool/ruby_vm/views/yjit_hooks.inc.erb (renamed from tool/ruby_vm/views/ujit_hooks.inc.erb) | 2 | ||||
-rwxr-xr-x | tool/runruby.rb | 8 | ||||
-rw-r--r-- | ujit.h | 61 | ||||
-rw-r--r-- | version.c | 4 | ||||
-rw-r--r-- | vm.c | 12 | ||||
-rw-r--r-- | vm_core.h | 8 | ||||
-rw-r--r-- | vm_exec.h | 2 | ||||
-rw-r--r-- | vm_insnhelper.h | 4 | ||||
-rw-r--r-- | vm_method.c | 8 | ||||
-rw-r--r-- | win32/Makefile.sub | 2 | ||||
-rw-r--r-- | yjit.h | 61 | ||||
-rw-r--r-- | yjit.rb (renamed from ujit.rb) | 16 | ||||
-rw-r--r-- | yjit_asm.c (renamed from ujit_asm.c) | 2 | ||||
-rw-r--r-- | yjit_asm.h (renamed from ujit_asm.h) | 4 | ||||
-rw-r--r-- | yjit_asm_tests.c (renamed from ujit_asm_tests.c) | 2 | ||||
-rw-r--r-- | yjit_codegen.c (renamed from ujit_codegen.c) | 307 | ||||
-rw-r--r-- | yjit_codegen.h (renamed from ujit_codegen.h) | 20 | ||||
-rw-r--r-- | yjit_core.c (renamed from ujit_core.c) | 62 | ||||
-rw-r--r-- | yjit_core.h (renamed from ujit_core.h) | 22 | ||||
-rw-r--r-- | yjit_iface.c (renamed from ujit_iface.c) | 258 | ||||
-rw-r--r-- | yjit_iface.h (renamed from ujit_iface.h) | 30 | ||||
-rw-r--r-- | yjit_utils.c (renamed from ujit_utils.c) | 4 | ||||
-rw-r--r-- | yjit_utils.h (renamed from ujit_utils.h) | 8 |
36 files changed, 1312 insertions, 1320 deletions
diff --git a/.gitignore b/.gitignore index 4fa89e9dfa..84a924930e 100644 --- a/.gitignore +++ b/.gitignore @@ -229,5 +229,5 @@ lcov*.info /mjit_config.h /include/ruby-*/*/rb_mjit_min_header-*.h -# UJIT -/ujit_hooks.inc +# YJIT +/yjit_hooks.inc @@ -150,11 +150,11 @@ COMMONOBJS = array.$(OBJEXT) \ vm_dump.$(OBJEXT) \ vm_sync.$(OBJEXT) \ vm_trace.$(OBJEXT) \ - ujit_asm.$(OBJEXT) \ - ujit_utils.$(OBJEXT) \ - ujit_core.$(OBJEXT) \ - ujit_codegen.$(OBJEXT) \ - ujit_iface.$(OBJEXT) \ + yjit_asm.$(OBJEXT) \ + yjit_utils.$(OBJEXT) \ + yjit_core.$(OBJEXT) \ + yjit_codegen.$(OBJEXT) \ + yjit_iface.$(OBJEXT) \ $(COROUTINE_OBJ) \ $(DTRACE_OBJ) \ $(BUILTIN_ENCOBJS) \ @@ -1063,7 +1063,7 @@ BUILTIN_RB_SRCS = \ $(srcdir)/nilclass.rb \ $(srcdir)/prelude.rb \ $(srcdir)/gem_prelude.rb \ - $(srcdir)/ujit.rb \ + $(srcdir)/yjit.rb \ $(empty) BUILTIN_RB_INCS = $(BUILTIN_RB_SRCS:.rb=.rbinc) @@ -1111,7 +1111,7 @@ incs: $(INSNS) {$(VPATH)}node_name.inc {$(VPATH)}known_errors.inc \ insns: $(INSNS) -ujit_hooks.inc: vm.$(OBJEXT) +yjit_hooks.inc: vm.$(OBJEXT) id.h: $(tooldir)/generic_erb.rb $(srcdir)/template/id.h.tmpl $(srcdir)/defs/id.def $(ECHO) generating $@ @@ -3102,7 +3102,7 @@ compile.$(OBJEXT): {$(VPATH)}st.h compile.$(OBJEXT): {$(VPATH)}subst.h compile.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h compile.$(OBJEXT): {$(VPATH)}thread_native.h -compile.$(OBJEXT): {$(VPATH)}ujit.h +compile.$(OBJEXT): {$(VPATH)}yjit.h compile.$(OBJEXT): {$(VPATH)}util.h compile.$(OBJEXT): {$(VPATH)}vm_callinfo.h compile.$(OBJEXT): {$(VPATH)}vm_core.h @@ -3483,7 +3483,7 @@ cont.$(OBJEXT): {$(VPATH)}st.h cont.$(OBJEXT): {$(VPATH)}subst.h cont.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h cont.$(OBJEXT): {$(VPATH)}thread_native.h -cont.$(OBJEXT): {$(VPATH)}ujit.h +cont.$(OBJEXT): {$(VPATH)}yjit.h cont.$(OBJEXT): {$(VPATH)}vm_core.h cont.$(OBJEXT): {$(VPATH)}vm_debug.h cont.$(OBJEXT): {$(VPATH)}vm_opts.h @@ -5577,7 +5577,7 @@ eval.$(OBJEXT): {$(VPATH)}st.h eval.$(OBJEXT): {$(VPATH)}subst.h eval.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h eval.$(OBJEXT): {$(VPATH)}thread_native.h -eval.$(OBJEXT): {$(VPATH)}ujit.h +eval.$(OBJEXT): {$(VPATH)}yjit.h eval.$(OBJEXT): {$(VPATH)}vm.h eval.$(OBJEXT): {$(VPATH)}vm_core.h eval.$(OBJEXT): {$(VPATH)}vm_debug.h @@ -6027,7 +6027,7 @@ gc.$(OBJEXT): {$(VPATH)}thread.h gc.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h gc.$(OBJEXT): {$(VPATH)}thread_native.h gc.$(OBJEXT): {$(VPATH)}transient_heap.h -gc.$(OBJEXT): {$(VPATH)}ujit.h +gc.$(OBJEXT): {$(VPATH)}yjit.h gc.$(OBJEXT): {$(VPATH)}util.h gc.$(OBJEXT): {$(VPATH)}vm_callinfo.h gc.$(OBJEXT): {$(VPATH)}vm_core.h @@ -7020,8 +7020,8 @@ iseq.$(OBJEXT): {$(VPATH)}st.h iseq.$(OBJEXT): {$(VPATH)}subst.h iseq.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h iseq.$(OBJEXT): {$(VPATH)}thread_native.h -iseq.$(OBJEXT): {$(VPATH)}ujit.h -iseq.$(OBJEXT): {$(VPATH)}ujit_asm.h +iseq.$(OBJEXT): {$(VPATH)}yjit.h +iseq.$(OBJEXT): {$(VPATH)}yjit_asm.h iseq.$(OBJEXT): {$(VPATH)}util.h iseq.$(OBJEXT): {$(VPATH)}vm_callinfo.h iseq.$(OBJEXT): {$(VPATH)}vm_core.h @@ -8474,7 +8474,7 @@ miniinit.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h miniinit.$(OBJEXT): {$(VPATH)}thread_native.h miniinit.$(OBJEXT): {$(VPATH)}timev.rb miniinit.$(OBJEXT): {$(VPATH)}trace_point.rb -miniinit.$(OBJEXT): {$(VPATH)}ujit.rb +miniinit.$(OBJEXT): {$(VPATH)}yjit.rb miniinit.$(OBJEXT): {$(VPATH)}vm_core.h miniinit.$(OBJEXT): {$(VPATH)}vm_opts.h miniinit.$(OBJEXT): {$(VPATH)}warning.rb @@ -8723,7 +8723,7 @@ mjit.$(OBJEXT): {$(VPATH)}subst.h mjit.$(OBJEXT): {$(VPATH)}thread.h mjit.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h mjit.$(OBJEXT): {$(VPATH)}thread_native.h -mjit.$(OBJEXT): {$(VPATH)}ujit.h +mjit.$(OBJEXT): {$(VPATH)}yjit.h mjit.$(OBJEXT): {$(VPATH)}util.h mjit.$(OBJEXT): {$(VPATH)}vm_callinfo.h mjit.$(OBJEXT): {$(VPATH)}vm_core.h @@ -8937,7 +8937,7 @@ mjit_compile.$(OBJEXT): {$(VPATH)}st.h mjit_compile.$(OBJEXT): {$(VPATH)}subst.h mjit_compile.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h mjit_compile.$(OBJEXT): {$(VPATH)}thread_native.h -mjit_compile.$(OBJEXT): {$(VPATH)}ujit.h +mjit_compile.$(OBJEXT): {$(VPATH)}yjit.h mjit_compile.$(OBJEXT): {$(VPATH)}vm_callinfo.h mjit_compile.$(OBJEXT): {$(VPATH)}vm_core.h mjit_compile.$(OBJEXT): {$(VPATH)}vm_exec.h @@ -10372,7 +10372,7 @@ process.$(OBJEXT): {$(VPATH)}subst.h process.$(OBJEXT): {$(VPATH)}thread.h process.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h process.$(OBJEXT): {$(VPATH)}thread_native.h -process.$(OBJEXT): {$(VPATH)}ujit.h +process.$(OBJEXT): {$(VPATH)}yjit.h process.$(OBJEXT): {$(VPATH)}util.h process.$(OBJEXT): {$(VPATH)}vm_core.h process.$(OBJEXT): {$(VPATH)}vm_opts.h @@ -10590,7 +10590,7 @@ ractor.$(OBJEXT): {$(VPATH)}thread.h ractor.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h ractor.$(OBJEXT): {$(VPATH)}thread_native.h ractor.$(OBJEXT): {$(VPATH)}transient_heap.h -ractor.$(OBJEXT): {$(VPATH)}ujit.h +ractor.$(OBJEXT): {$(VPATH)}yjit.h ractor.$(OBJEXT): {$(VPATH)}variable.h ractor.$(OBJEXT): {$(VPATH)}vm_core.h ractor.$(OBJEXT): {$(VPATH)}vm_debug.h @@ -12533,7 +12533,7 @@ ruby.$(OBJEXT): {$(VPATH)}subst.h ruby.$(OBJEXT): {$(VPATH)}thread.h ruby.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h ruby.$(OBJEXT): {$(VPATH)}thread_native.h -ruby.$(OBJEXT): {$(VPATH)}ujit.h +ruby.$(OBJEXT): {$(VPATH)}yjit.h ruby.$(OBJEXT): {$(VPATH)}util.h ruby.$(OBJEXT): {$(VPATH)}vm_core.h ruby.$(OBJEXT): {$(VPATH)}vm_opts.h @@ -14500,7 +14500,7 @@ thread.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h thread.$(OBJEXT): {$(VPATH)}thread_native.h thread.$(OBJEXT): {$(VPATH)}thread_sync.c thread.$(OBJEXT): {$(VPATH)}timev.h -thread.$(OBJEXT): {$(VPATH)}ujit.h +thread.$(OBJEXT): {$(VPATH)}yjit.h thread.$(OBJEXT): {$(VPATH)}vm_core.h thread.$(OBJEXT): {$(VPATH)}vm_debug.h thread.$(OBJEXT): {$(VPATH)}vm_opts.h @@ -15077,802 +15077,802 @@ transient_heap.$(OBJEXT): {$(VPATH)}vm_core.h transient_heap.$(OBJEXT): {$(VPATH)}vm_debug.h transient_heap.$(OBJEXT): {$(VPATH)}vm_opts.h transient_heap.$(OBJEXT): {$(VPATH)}vm_sync.h -ujit_asm.$(OBJEXT): {$(VPATH)}ujit_asm.c -ujit_asm.$(OBJEXT): {$(VPATH)}ujit_asm.h -ujit_codegen.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h -ujit_codegen.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h -ujit_codegen.$(OBJEXT): $(CCAN_DIR)/list/list.h -ujit_codegen.$(OBJEXT): $(CCAN_DIR)/str/str.h -ujit_codegen.$(OBJEXT): $(hdrdir)/ruby/ruby.h -ujit_codegen.$(OBJEXT): $(top_srcdir)/internal/array.h -ujit_codegen.$(OBJEXT): $(top_srcdir)/internal/class.h -ujit_codegen.$(OBJEXT): $(top_srcdir)/internal/compile.h -ujit_codegen.$(OBJEXT): $(top_srcdir)/internal/compilers.h -ujit_codegen.$(OBJEXT): $(top_srcdir)/internal/gc.h -ujit_codegen.$(OBJEXT): $(top_srcdir)/internal/imemo.h -ujit_codegen.$(OBJEXT): $(top_srcdir)/internal/serial.h -ujit_codegen.$(OBJEXT): $(top_srcdir)/internal/static_assert.h -ujit_codegen.$(OBJEXT): $(top_srcdir)/internal/vm.h -ujit_codegen.$(OBJEXT): $(top_srcdir)/internal/warnings.h -ujit_codegen.$(OBJEXT): {$(VPATH)}assert.h -ujit_codegen.$(OBJEXT): {$(VPATH)}atomic.h -ujit_codegen.$(OBJEXT): {$(VPATH)}backward/2/assume.h -ujit_codegen.$(OBJEXT): {$(VPATH)}backward/2/attributes.h -ujit_codegen.$(OBJEXT): {$(VPATH)}backward/2/bool.h -ujit_codegen.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h -ujit_codegen.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h -ujit_codegen.$(OBJEXT): {$(VPATH)}backward/2/limits.h -ujit_codegen.$(OBJEXT): {$(VPATH)}backward/2/long_long.h -ujit_codegen.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h -ujit_codegen.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h -ujit_codegen.$(OBJEXT): {$(VPATH)}builtin.h -ujit_codegen.$(OBJEXT): {$(VPATH)}config.h -ujit_codegen.$(OBJEXT): {$(VPATH)}darray.h -ujit_codegen.$(OBJEXT): {$(VPATH)}debug_counter.h -ujit_codegen.$(OBJEXT): {$(VPATH)}defines.h -ujit_codegen.$(OBJEXT): {$(VPATH)}id.h -ujit_codegen.$(OBJEXT): {$(VPATH)}id_table.h -ujit_codegen.$(OBJEXT): {$(VPATH)}insns.def -ujit_codegen.$(OBJEXT): {$(VPATH)}insns.inc -ujit_codegen.$(OBJEXT): {$(VPATH)}insns_info.inc -ujit_codegen.$(OBJEXT): {$(VPATH)}intern.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/anyargs.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/arithmetic.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/assume.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/cold.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/const.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/error.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/format.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/pure.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/warning.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/cast.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/compiler_is.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/compiler_since.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/config.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/constant_p.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/core.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/core/rarray.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/core/rclass.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/core/rdata.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/core/rfile.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/core/rhash.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/core/robject.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/core/rstring.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/ctype.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/dllexport.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/dosish.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/error.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/eval.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/event.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/fl_type.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/gc.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/glob.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/globals.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/has/attribute.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/has/builtin.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/has/extension.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/has/feature.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/has/warning.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/array.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/class.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/compar.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/complex.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/cont.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/dir.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/enum.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/error.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/eval.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/file.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/gc.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/hash.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/io.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/load.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/object.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/parse.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/proc.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/process.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/random.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/range.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/rational.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/re.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/select.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/signal.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/string.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/struct.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/thread.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/time.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/variable.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/vm.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/interpreter.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/iterator.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/memory.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/method.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/module.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/newobj.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/rgengc.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/scan_args.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/special_consts.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/static_assert.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/stdalign.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/stdbool.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/symbol.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/token_paste.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/value.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/value_type.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/variable.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/warning_push.h -ujit_codegen.$(OBJEXT): {$(VPATH)}internal/xmalloc.h -ujit_codegen.$(OBJEXT): {$(VPATH)}iseq.h -ujit_codegen.$(OBJEXT): {$(VPATH)}method.h -ujit_codegen.$(OBJEXT): {$(VPATH)}missing.h -ujit_codegen.$(OBJEXT): {$(VPATH)}node.h -ujit_codegen.$(OBJEXT): {$(VPATH)}ruby_assert.h -ujit_codegen.$(OBJEXT): {$(VPATH)}ruby_atomic.h -ujit_codegen.$(OBJEXT): {$(VPATH)}st.h -ujit_codegen.$(OBJEXT): {$(VPATH)}subst.h -ujit_codegen.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h -ujit_codegen.$(OBJEXT): {$(VPATH)}thread_native.h -ujit_codegen.$(OBJEXT): {$(VPATH)}ujit.h -ujit_codegen.$(OBJEXT): {$(VPATH)}ujit_asm.h -ujit_codegen.$(OBJEXT): {$(VPATH)}ujit_codegen.c -ujit_codegen.$(OBJEXT): {$(VPATH)}ujit_codegen.h -ujit_codegen.$(OBJEXT): {$(VPATH)}ujit_core.h -ujit_codegen.$(OBJEXT): {$(VPATH)}ujit_iface.h -ujit_codegen.$(OBJEXT): {$(VPATH)}ujit_utils.h -ujit_codegen.$(OBJEXT): {$(VPATH)}vm_callinfo.h -ujit_codegen.$(OBJEXT): {$(VPATH)}vm_core.h -ujit_codegen.$(OBJEXT): {$(VPATH)}vm_debug.h -ujit_codegen.$(OBJEXT): {$(VPATH)}vm_opts.h -ujit_codegen.$(OBJEXT): {$(VPATH)}vm_sync.h -ujit_compile.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h -ujit_compile.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h -ujit_compile.$(OBJEXT): $(CCAN_DIR)/list/list.h -ujit_compile.$(OBJEXT): $(CCAN_DIR)/str/str.h -ujit_compile.$(OBJEXT): $(hdrdir)/ruby/ruby.h -ujit_compile.$(OBJEXT): $(top_srcdir)/internal/array.h -ujit_compile.$(OBJEXT): $(top_srcdir)/internal/compile.h -ujit_compile.$(OBJEXT): $(top_srcdir)/internal/compilers.h -ujit_compile.$(OBJEXT): $(top_srcdir)/internal/gc.h -ujit_compile.$(OBJEXT): $(top_srcdir)/internal/imemo.h -ujit_compile.$(OBJEXT): $(top_srcdir)/internal/serial.h -ujit_compile.$(OBJEXT): $(top_srcdir)/internal/static_assert.h -ujit_compile.$(OBJEXT): $(top_srcdir)/internal/vm.h -ujit_compile.$(OBJEXT): $(top_srcdir)/internal/warnings.h -ujit_compile.$(OBJEXT): {$(VPATH)}assert.h -ujit_compile.$(OBJEXT): {$(VPATH)}backward/2/assume.h -ujit_compile.$(OBJEXT): {$(VPATH)}backward/2/attributes.h -ujit_compile.$(OBJEXT): {$(VPATH)}backward/2/bool.h -ujit_compile.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h -ujit_compile.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h -ujit_compile.$(OBJEXT): {$(VPATH)}backward/2/limits.h -ujit_compile.$(OBJEXT): {$(VPATH)}backward/2/long_long.h -ujit_compile.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h -ujit_compile.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h -ujit_compile.$(OBJEXT): {$(VPATH)}builtin.h -ujit_compile.$(OBJEXT): {$(VPATH)}config.h -ujit_compile.$(OBJEXT): {$(VPATH)}debug_counter.h -ujit_compile.$(OBJEXT): {$(VPATH)}defines.h -ujit_compile.$(OBJEXT): {$(VPATH)}id.h -ujit_compile.$(OBJEXT): {$(VPATH)}insns.def -ujit_compile.$(OBJEXT): {$(VPATH)}insns.inc -ujit_compile.$(OBJEXT): {$(VPATH)}insns_info.inc -ujit_compile.$(OBJEXT): {$(VPATH)}intern.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/anyargs.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/arithmetic.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/assume.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/attr/cold.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/attr/const.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/attr/error.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/attr/format.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/attr/pure.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/attr/warning.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/cast.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/compiler_is.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/compiler_since.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/config.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/constant_p.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/core.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/core/rarray.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/core/rclass.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/core/rdata.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/core/rfile.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/core/rhash.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/core/robject.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/core/rstring.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/ctype.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/dllexport.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/dosish.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/error.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/eval.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/event.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/fl_type.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/gc.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/glob.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/globals.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/has/attribute.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/has/builtin.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/has/extension.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/has/feature.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/has/warning.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/intern/array.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/intern/class.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/intern/compar.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/intern/complex.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/intern/cont.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/intern/dir.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/intern/enum.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/intern/error.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/intern/eval.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/intern/file.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/intern/gc.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/intern/hash.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/intern/io.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/intern/load.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/intern/object.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/intern/parse.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/intern/proc.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/intern/process.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/intern/random.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/intern/range.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/intern/rational.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/intern/re.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/intern/select.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/intern/signal.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/intern/string.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/intern/struct.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/intern/thread.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/intern/time.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/intern/variable.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/intern/vm.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/interpreter.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/iterator.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/memory.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/method.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/module.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/newobj.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/rgengc.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/scan_args.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/special_consts.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/static_assert.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/stdalign.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/stdbool.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/symbol.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/token_paste.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/value.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/value_type.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/variable.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/warning_push.h -ujit_compile.$(OBJEXT): {$(VPATH)}internal/xmalloc.h -ujit_compile.$(OBJEXT): {$(VPATH)}iseq.h -ujit_compile.$(OBJEXT): {$(VPATH)}method.h -ujit_compile.$(OBJEXT): {$(VPATH)}missing.h -ujit_compile.$(OBJEXT): {$(VPATH)}node.h -ujit_compile.$(OBJEXT): {$(VPATH)}ruby_assert.h -ujit_compile.$(OBJEXT): {$(VPATH)}ruby_atomic.h -ujit_compile.$(OBJEXT): {$(VPATH)}st.h -ujit_compile.$(OBJEXT): {$(VPATH)}subst.h -ujit_compile.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h -ujit_compile.$(OBJEXT): {$(VPATH)}thread_native.h -ujit_compile.$(OBJEXT): {$(VPATH)}ujit.h -ujit_compile.$(OBJEXT): {$(VPATH)}ujit_asm.h -ujit_compile.$(OBJEXT): {$(VPATH)}ujit_compile.c -ujit_compile.$(OBJEXT): {$(VPATH)}ujit_hooks.inc -ujit_compile.$(OBJEXT): {$(VPATH)}ujit_utils.h -ujit_compile.$(OBJEXT): {$(VPATH)}vm_callinfo.h -ujit_compile.$(OBJEXT): {$(VPATH)}vm_core.h -ujit_compile.$(OBJEXT): {$(VPATH)}vm_debug.h -ujit_compile.$(OBJEXT): {$(VPATH)}vm_opts.h -ujit_compile.$(OBJEXT): {$(VPATH)}vm_sync.h -ujit_core.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h -ujit_core.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h -ujit_core.$(OBJEXT): $(CCAN_DIR)/list/list.h -ujit_core.$(OBJEXT): $(CCAN_DIR)/str/str.h -ujit_core.$(OBJEXT): $(hdrdir)/ruby/ruby.h -ujit_core.$(OBJEXT): $(top_srcdir)/internal/array.h -ujit_core.$(OBJEXT): $(top_srcdir)/internal/compilers.h -ujit_core.$(OBJEXT): $(top_srcdir)/internal/gc.h -ujit_core.$(OBJEXT): $(top_srcdir)/internal/imemo.h -ujit_core.$(OBJEXT): $(top_srcdir)/internal/serial.h -ujit_core.$(OBJEXT): $(top_srcdir)/internal/static_assert.h -ujit_core.$(OBJEXT): $(top_srcdir)/internal/vm.h -ujit_core.$(OBJEXT): $(top_srcdir)/internal/warnings.h -ujit_core.$(OBJEXT): {$(VPATH)}assert.h -ujit_core.$(OBJEXT): {$(VPATH)}atomic.h -ujit_core.$(OBJEXT): {$(VPATH)}backward/2/assume.h -ujit_core.$(OBJEXT): {$(VPATH)}backward/2/attributes.h -ujit_core.$(OBJEXT): {$(VPATH)}backward/2/bool.h -ujit_core.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h -ujit_core.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h -ujit_core.$(OBJEXT): {$(VPATH)}backward/2/limits.h -ujit_core.$(OBJEXT): {$(VPATH)}backward/2/long_long.h -ujit_core.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h -ujit_core.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h -ujit_core.$(OBJEXT): {$(VPATH)}builtin.h -ujit_core.$(OBJEXT): {$(VPATH)}config.h -ujit_core.$(OBJEXT): {$(VPATH)}darray.h -ujit_core.$(OBJEXT): {$(VPATH)}debug_counter.h -ujit_core.$(OBJEXT): {$(VPATH)}defines.h -ujit_core.$(OBJEXT): {$(VPATH)}id.h -ujit_core.$(OBJEXT): {$(VPATH)}insns.def -ujit_core.$(OBJEXT): {$(VPATH)}insns.inc -ujit_core.$(OBJEXT): {$(VPATH)}insns_info.inc -ujit_core.$(OBJEXT): {$(VPATH)}intern.h -ujit_core.$(OBJEXT): {$(VPATH)}internal.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/anyargs.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/arithmetic.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/assume.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/attr/cold.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/attr/const.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/attr/error.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/attr/format.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/attr/pure.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/attr/warning.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/cast.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/compiler_is.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/compiler_since.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/config.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/constant_p.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/core.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/core/rarray.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/core/rclass.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/core/rdata.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/core/rfile.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/core/rhash.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/core/robject.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/core/rstring.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/ctype.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/dllexport.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/dosish.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/error.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/eval.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/event.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/fl_type.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/gc.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/glob.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/globals.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/has/attribute.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/has/builtin.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/has/extension.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/has/feature.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/has/warning.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/intern/array.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/intern/class.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/intern/compar.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/intern/complex.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/intern/cont.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/intern/dir.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/intern/enum.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/intern/error.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/intern/eval.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/intern/file.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/intern/gc.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/intern/hash.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/intern/io.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/intern/load.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/intern/object.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/intern/parse.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/intern/proc.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/intern/process.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/intern/random.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/intern/range.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/intern/rational.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/intern/re.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/intern/select.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/intern/signal.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/intern/string.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/intern/struct.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/intern/thread.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/intern/time.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/intern/variable.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/intern/vm.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/interpreter.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/iterator.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/memory.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/method.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/module.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/newobj.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/rgengc.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/scan_args.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/special_consts.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/static_assert.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/stdalign.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/stdbool.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/symbol.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/token_paste.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/value.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/value_type.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/variable.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/warning_push.h -ujit_core.$(OBJEXT): {$(VPATH)}internal/xmalloc.h -ujit_core.$(OBJEXT): {$(VPATH)}iseq.h -ujit_core.$(OBJEXT): {$(VPATH)}method.h -ujit_core.$(OBJEXT): {$(VPATH)}missing.h -ujit_core.$(OBJEXT): {$(VPATH)}node.h -ujit_core.$(OBJEXT): {$(VPATH)}ruby_assert.h -ujit_core.$(OBJEXT): {$(VPATH)}ruby_atomic.h -ujit_core.$(OBJEXT): {$(VPATH)}st.h -ujit_core.$(OBJEXT): {$(VPATH)}subst.h -ujit_core.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h -ujit_core.$(OBJEXT): {$(VPATH)}thread_native.h -ujit_core.$(OBJEXT): {$(VPATH)}ujit_asm.h -ujit_core.$(OBJEXT): {$(VPATH)}ujit_codegen.h -ujit_core.$(OBJEXT): {$(VPATH)}ujit_core.c -ujit_core.$(OBJEXT): {$(VPATH)}ujit_core.h -ujit_core.$(OBJEXT): {$(VPATH)}ujit_iface.h -ujit_core.$(OBJEXT): {$(VPATH)}ujit_utils.h -ujit_core.$(OBJEXT): {$(VPATH)}vm_callinfo.h -ujit_core.$(OBJEXT): {$(VPATH)}vm_core.h -ujit_core.$(OBJEXT): {$(VPATH)}vm_debug.h -ujit_core.$(OBJEXT): {$(VPATH)}vm_opts.h -ujit_core.$(OBJEXT): {$(VPATH)}vm_sync.h -ujit_iface.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h -ujit_iface.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h -ujit_iface.$(OBJEXT): $(CCAN_DIR)/list/list.h -ujit_iface.$(OBJEXT): $(CCAN_DIR)/str/str.h -ujit_iface.$(OBJEXT): $(hdrdir)/ruby/ruby.h -ujit_iface.$(OBJEXT): $(top_srcdir)/internal/array.h -ujit_iface.$(OBJEXT): $(top_srcdir)/internal/class.h -ujit_iface.$(OBJEXT): $(top_srcdir)/internal/compile.h -ujit_iface.$(OBJEXT): $(top_srcdir)/internal/compilers.h -ujit_iface.$(OBJEXT): $(top_srcdir)/internal/gc.h -ujit_iface.$(OBJEXT): $(top_srcdir)/internal/imemo.h -ujit_iface.$(OBJEXT): $(top_srcdir)/internal/serial.h -ujit_iface.$(OBJEXT): $(top_srcdir)/internal/static_assert.h -ujit_iface.$(OBJEXT): $(top_srcdir)/internal/vm.h -ujit_iface.$(OBJEXT): $(top_srcdir)/internal/warnings.h -ujit_iface.$(OBJEXT): {$(VPATH)}assert.h -ujit_iface.$(OBJEXT): {$(VPATH)}atomic.h -ujit_iface.$(OBJEXT): {$(VPATH)}backward/2/assume.h -ujit_iface.$(OBJEXT): {$(VPATH)}backward/2/attributes.h -ujit_iface.$(OBJEXT): {$(VPATH)}backward/2/bool.h -ujit_iface.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h -ujit_iface.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h -ujit_iface.$(OBJEXT): {$(VPATH)}backward/2/limits.h -ujit_iface.$(OBJEXT): {$(VPATH)}backward/2/long_long.h -ujit_iface.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h -ujit_iface.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h -ujit_iface.$(OBJEXT): {$(VPATH)}builtin.h -ujit_iface.$(OBJEXT): {$(VPATH)}config.h -ujit_iface.$(OBJEXT): {$(VPATH)}darray.h -ujit_iface.$(OBJEXT): {$(VPATH)}debug_counter.h -ujit_iface.$(OBJEXT): {$(VPATH)}defines.h -ujit_iface.$(OBJEXT): {$(VPATH)}id.h -ujit_iface.$(OBJEXT): {$(VPATH)}id_table.h -ujit_iface.$(OBJEXT): {$(VPATH)}insns.def -ujit_iface.$(OBJEXT): {$(VPATH)}insns.inc -ujit_iface.$(OBJEXT): {$(VPATH)}insns_info.inc -ujit_iface.$(OBJEXT): {$(VPATH)}intern.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/anyargs.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/arithmetic.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/assume.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/attr/cold.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/attr/const.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/attr/error.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/attr/format.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/attr/pure.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/attr/warning.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/cast.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/compiler_is.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/compiler_since.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/config.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/constant_p.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/core.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/core/rarray.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/core/rclass.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/core/rdata.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/core/rfile.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/core/rhash.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/core/robject.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/core/rstring.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/ctype.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/dllexport.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/dosish.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/error.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/eval.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/event.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/fl_type.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/gc.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/glob.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/globals.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/has/attribute.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/has/builtin.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/has/extension.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/has/feature.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/has/warning.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/intern/array.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/intern/class.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/intern/compar.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/intern/complex.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/intern/cont.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/intern/dir.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/intern/enum.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/intern/error.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/intern/eval.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/intern/file.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/intern/gc.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/intern/hash.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/intern/io.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/intern/load.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/intern/object.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/intern/parse.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/intern/proc.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/intern/process.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/intern/random.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/intern/range.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/intern/rational.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/intern/re.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/intern/select.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/intern/signal.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/intern/string.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/intern/struct.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/intern/thread.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/intern/time.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/intern/variable.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/intern/vm.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/interpreter.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/iterator.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/memory.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/method.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/module.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/newobj.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/rgengc.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/scan_args.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/special_consts.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/static_assert.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/stdalign.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/stdbool.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/symbol.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/token_paste.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/value.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/value_type.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/variable.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/warning_push.h -ujit_iface.$(OBJEXT): {$(VPATH)}internal/xmalloc.h -ujit_iface.$(OBJEXT): {$(VPATH)}iseq.h -ujit_iface.$(OBJEXT): {$(VPATH)}method.h -ujit_iface.$(OBJEXT): {$(VPATH)}missing.h -ujit_iface.$(OBJEXT): {$(VPATH)}node.h -ujit_iface.$(OBJEXT): {$(VPATH)}ruby_assert.h -ujit_iface.$(OBJEXT): {$(VPATH)}ruby_atomic.h -ujit_iface.$(OBJEXT): {$(VPATH)}st.h -ujit_iface.$(OBJEXT): {$(VPATH)}subst.h -ujit_iface.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h -ujit_iface.$(OBJEXT): {$(VPATH)}thread_native.h -ujit_iface.$(OBJEXT): {$(VPATH)}ujit.h -ujit_iface.$(OBJEXT): {$(VPATH)}ujit.rbinc -ujit_iface.$(OBJEXT): {$(VPATH)}ujit_asm.h -ujit_iface.$(OBJEXT): {$(VPATH)}ujit_codegen.h -ujit_iface.$(OBJEXT): {$(VPATH)}ujit_core.h -ujit_iface.$(OBJEXT): {$(VPATH)}ujit_hooks.inc -ujit_iface.$(OBJEXT): {$(VPATH)}ujit_iface.c -ujit_iface.$(OBJEXT): {$(VPATH)}ujit_iface.h -ujit_iface.$(OBJEXT): {$(VPATH)}vm_callinfo.h -ujit_iface.$(OBJEXT): {$(VPATH)}vm_core.h -ujit_iface.$(OBJEXT): {$(VPATH)}vm_debug.h -ujit_iface.$(OBJEXT): {$(VPATH)}vm_opts.h -ujit_iface.$(OBJEXT): {$(VPATH)}vm_sync.h -ujit_utils.$(OBJEXT): {$(VPATH)}ujit_asm.h -ujit_utils.$(OBJEXT): {$(VPATH)}ujit_utils.c -ujit_utils.$(OBJEXT): {$(VPATH)}ujit_utils.h +yjit_asm.$(OBJEXT): {$(VPATH)}yjit_asm.c +yjit_asm.$(OBJEXT): {$(VPATH)}yjit_asm.h +yjit_codegen.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h +yjit_codegen.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h +yjit_codegen.$(OBJEXT): $(CCAN_DIR)/list/list.h +yjit_codegen.$(OBJEXT): $(CCAN_DIR)/str/str.h +yjit_codegen.$(OBJEXT): $(hdrdir)/ruby/ruby.h +yjit_codegen.$(OBJEXT): $(top_srcdir)/internal/array.h +yjit_codegen.$(OBJEXT): $(top_srcdir)/internal/class.h +yjit_codegen.$(OBJEXT): $(top_srcdir)/internal/compile.h +yjit_codegen.$(OBJEXT): $(top_srcdir)/internal/compilers.h +yjit_codegen.$(OBJEXT): $(top_srcdir)/internal/gc.h +yjit_codegen.$(OBJEXT): $(top_srcdir)/internal/imemo.h +yjit_codegen.$(OBJEXT): $(top_srcdir)/internal/serial.h +yjit_codegen.$(OBJEXT): $(top_srcdir)/internal/static_assert.h +yjit_codegen.$(OBJEXT): $(top_srcdir)/internal/vm.h +yjit_codegen.$(OBJEXT): $(top_srcdir)/internal/warnings.h +yjit_codegen.$(OBJEXT): {$(VPATH)}assert.h +yjit_codegen.$(OBJEXT): {$(VPATH)}atomic.h +yjit_codegen.$(OBJEXT): {$(VPATH)}backward/2/assume.h +yjit_codegen.$(OBJEXT): {$(VPATH)}backward/2/attributes.h +yjit_codegen.$(OBJEXT): {$(VPATH)}backward/2/bool.h +yjit_codegen.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h +yjit_codegen.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h +yjit_codegen.$(OBJEXT): {$(VPATH)}backward/2/limits.h +yjit_codegen.$(OBJEXT): {$(VPATH)}backward/2/long_long.h +yjit_codegen.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h +yjit_codegen.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h +yjit_codegen.$(OBJEXT): {$(VPATH)}builtin.h +yjit_codegen.$(OBJEXT): {$(VPATH)}config.h +yjit_codegen.$(OBJEXT): {$(VPATH)}darray.h +yjit_codegen.$(OBJEXT): {$(VPATH)}debug_counter.h +yjit_codegen.$(OBJEXT): {$(VPATH)}defines.h +yjit_codegen.$(OBJEXT): {$(VPATH)}id.h +yjit_codegen.$(OBJEXT): {$(VPATH)}id_table.h +yjit_codegen.$(OBJEXT): {$(VPATH)}insns.def +yjit_codegen.$(OBJEXT): {$(VPATH)}insns.inc +yjit_codegen.$(OBJEXT): {$(VPATH)}insns_info.inc +yjit_codegen.$(OBJEXT): {$(VPATH)}intern.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/anyargs.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/arithmetic.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/assume.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/cold.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/const.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/error.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/format.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/pure.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/warning.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/cast.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/compiler_is.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/compiler_since.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/config.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/constant_p.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/core.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/core/rarray.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/core/rclass.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/core/rdata.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/core/rfile.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/core/rhash.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/core/robject.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/core/rstring.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/ctype.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/dllexport.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/dosish.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/error.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/eval.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/event.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/fl_type.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/gc.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/glob.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/globals.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/has/attribute.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/has/builtin.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/has/extension.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/has/feature.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/has/warning.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/array.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/class.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/compar.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/complex.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/cont.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/dir.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/enum.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/error.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/eval.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/file.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/gc.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/hash.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/io.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/load.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/object.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/parse.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/proc.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/process.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/random.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/range.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/rational.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/re.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/select.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/signal.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/string.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/struct.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/thread.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/time.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/variable.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/intern/vm.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/interpreter.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/iterator.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/memory.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/method.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/module.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/newobj.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/rgengc.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/scan_args.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/special_consts.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/static_assert.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/stdalign.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/stdbool.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/symbol.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/token_paste.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/value.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/value_type.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/variable.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/warning_push.h +yjit_codegen.$(OBJEXT): {$(VPATH)}internal/xmalloc.h +yjit_codegen.$(OBJEXT): {$(VPATH)}iseq.h +yjit_codegen.$(OBJEXT): {$(VPATH)}method.h +yjit_codegen.$(OBJEXT): {$(VPATH)}missing.h +yjit_codegen.$(OBJEXT): {$(VPATH)}node.h +yjit_codegen.$(OBJEXT): {$(VPATH)}ruby_assert.h +yjit_codegen.$(OBJEXT): {$(VPATH)}ruby_atomic.h +yjit_codegen.$(OBJEXT): {$(VPATH)}st.h +yjit_codegen.$(OBJEXT): {$(VPATH)}subst.h +yjit_codegen.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h +yjit_codegen.$(OBJEXT): {$(VPATH)}thread_native.h +yjit_codegen.$(OBJEXT): {$(VPATH)}yjit.h +yjit_codegen.$(OBJEXT): {$(VPATH)}yjit_asm.h +yjit_codegen.$(OBJEXT): {$(VPATH)}yjit_codegen.c +yjit_codegen.$(OBJEXT): {$(VPATH)}yjit_codegen.h +yjit_codegen.$(OBJEXT): {$(VPATH)}yjit_core.h +yjit_codegen.$(OBJEXT): {$(VPATH)}yjit_iface.h +yjit_codegen.$(OBJEXT): {$(VPATH)}yjit_utils.h +yjit_codegen.$(OBJEXT): {$(VPATH)}vm_callinfo.h +yjit_codegen.$(OBJEXT): {$(VPATH)}vm_core.h +yjit_codegen.$(OBJEXT): {$(VPATH)}vm_debug.h +yjit_codegen.$(OBJEXT): {$(VPATH)}vm_opts.h +yjit_codegen.$(OBJEXT): {$(VPATH)}vm_sync.h +yjit_compile.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h +yjit_compile.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h +yjit_compile.$(OBJEXT): $(CCAN_DIR)/list/list.h +yjit_compile.$(OBJEXT): $(CCAN_DIR)/str/str.h +yjit_compile.$(OBJEXT): $(hdrdir)/ruby/ruby.h +yjit_compile.$(OBJEXT): $(top_srcdir)/internal/array.h +yjit_compile.$(OBJEXT): $(top_srcdir)/internal/compile.h +yjit_compile.$(OBJEXT): $(top_srcdir)/internal/compilers.h +yjit_compile.$(OBJEXT): $(top_srcdir)/internal/gc.h +yjit_compile.$(OBJEXT): $(top_srcdir)/internal/imemo.h +yjit_compile.$(OBJEXT): $(top_srcdir)/internal/serial.h +yjit_compile.$(OBJEXT): $(top_srcdir)/internal/static_assert.h +yjit_compile.$(OBJEXT): $(top_srcdir)/internal/vm.h +yjit_compile.$(OBJEXT): $(top_srcdir)/internal/warnings.h +yjit_compile.$(OBJEXT): {$(VPATH)}assert.h +yjit_compile.$(OBJEXT): {$(VPATH)}backward/2/assume.h +yjit_compile.$(OBJEXT): {$(VPATH)}backward/2/attributes.h +yjit_compile.$(OBJEXT): {$(VPATH)}backward/2/bool.h +yjit_compile.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h +yjit_compile.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h +yjit_compile.$(OBJEXT): {$(VPATH)}backward/2/limits.h +yjit_compile.$(OBJEXT): {$(VPATH)}backward/2/long_long.h +yjit_compile.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h +yjit_compile.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h +yjit_compile.$(OBJEXT): {$(VPATH)}builtin.h +yjit_compile.$(OBJEXT): {$(VPATH)}config.h +yjit_compile.$(OBJEXT): {$(VPATH)}debug_counter.h +yjit_compile.$(OBJEXT): {$(VPATH)}defines.h +yjit_compile.$(OBJEXT): {$(VPATH)}id.h +yjit_compile.$(OBJEXT): {$(VPATH)}insns.def +yjit_compile.$(OBJEXT): {$(VPATH)}insns.inc +yjit_compile.$(OBJEXT): {$(VPATH)}insns_info.inc +yjit_compile.$(OBJEXT): {$(VPATH)}intern.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/anyargs.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/arithmetic.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/assume.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/attr/cold.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/attr/const.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/attr/error.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/attr/format.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/attr/pure.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/attr/warning.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/cast.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/compiler_is.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/compiler_since.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/config.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/constant_p.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/core.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/core/rarray.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/core/rclass.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/core/rdata.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/core/rfile.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/core/rhash.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/core/robject.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/core/rstring.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/ctype.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/dllexport.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/dosish.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/error.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/eval.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/event.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/fl_type.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/gc.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/glob.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/globals.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/has/attribute.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/has/builtin.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/has/extension.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/has/feature.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/has/warning.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/intern/array.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/intern/class.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/intern/compar.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/intern/complex.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/intern/cont.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/intern/dir.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/intern/enum.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/intern/error.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/intern/eval.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/intern/file.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/intern/gc.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/intern/hash.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/intern/io.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/intern/load.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/intern/object.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/intern/parse.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/intern/proc.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/intern/process.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/intern/random.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/intern/range.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/intern/rational.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/intern/re.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/intern/select.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/intern/signal.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/intern/string.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/intern/struct.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/intern/thread.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/intern/time.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/intern/variable.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/intern/vm.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/interpreter.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/iterator.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/memory.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/method.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/module.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/newobj.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/rgengc.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/scan_args.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/special_consts.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/static_assert.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/stdalign.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/stdbool.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/symbol.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/token_paste.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/value.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/value_type.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/variable.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/warning_push.h +yjit_compile.$(OBJEXT): {$(VPATH)}internal/xmalloc.h +yjit_compile.$(OBJEXT): {$(VPATH)}iseq.h +yjit_compile.$(OBJEXT): {$(VPATH)}method.h +yjit_compile.$(OBJEXT): {$(VPATH)}missing.h +yjit_compile.$(OBJEXT): {$(VPATH)}node.h +yjit_compile.$(OBJEXT): {$(VPATH)}ruby_assert.h +yjit_compile.$(OBJEXT): {$(VPATH)}ruby_atomic.h +yjit_compile.$(OBJEXT): {$(VPATH)}st.h +yjit_compile.$(OBJEXT): {$(VPATH)}subst.h +yjit_compile.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h +yjit_compile.$(OBJEXT): {$(VPATH)}thread_native.h +yjit_compile.$(OBJEXT): {$(VPATH)}yjit.h +yjit_compile.$(OBJEXT): {$(VPATH)}yjit_asm.h +yjit_compile.$(OBJEXT): {$(VPATH)}yjit_compile.c +yjit_compile.$(OBJEXT): {$(VPATH)}yjit_hooks.inc +yjit_compile.$(OBJEXT): {$(VPATH)}yjit_utils.h +yjit_compile.$(OBJEXT): {$(VPATH)}vm_callinfo.h +yjit_compile.$(OBJEXT): {$(VPATH)}vm_core.h +yjit_compile.$(OBJEXT): {$(VPATH)}vm_debug.h +yjit_compile.$(OBJEXT): {$(VPATH)}vm_opts.h +yjit_compile.$(OBJEXT): {$(VPATH)}vm_sync.h +yjit_core.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h +yjit_core.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h +yjit_core.$(OBJEXT): $(CCAN_DIR)/list/list.h +yjit_core.$(OBJEXT): $(CCAN_DIR)/str/str.h +yjit_core.$(OBJEXT): $(hdrdir)/ruby/ruby.h +yjit_core.$(OBJEXT): $(top_srcdir)/internal/array.h +yjit_core.$(OBJEXT): $(top_srcdir)/internal/compilers.h +yjit_core.$(OBJEXT): $(top_srcdir)/internal/gc.h +yjit_core.$(OBJEXT): $(top_srcdir)/internal/imemo.h +yjit_core.$(OBJEXT): $(top_srcdir)/internal/serial.h +yjit_core.$(OBJEXT): $(top_srcdir)/internal/static_assert.h +yjit_core.$(OBJEXT): $(top_srcdir)/internal/vm.h +yjit_core.$(OBJEXT): $(top_srcdir)/internal/warnings.h +yjit_core.$(OBJEXT): {$(VPATH)}assert.h +yjit_core.$(OBJEXT): {$(VPATH)}atomic.h +yjit_core.$(OBJEXT): {$(VPATH)}backward/2/assume.h +yjit_core.$(OBJEXT): {$(VPATH)}backward/2/attributes.h +yjit_core.$(OBJEXT): {$(VPATH)}backward/2/bool.h +yjit_core.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h +yjit_core.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h +yjit_core.$(OBJEXT): {$(VPATH)}backward/2/limits.h +yjit_core.$(OBJEXT): {$(VPATH)}backward/2/long_long.h +yjit_core.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h +yjit_core.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h +yjit_core.$(OBJEXT): {$(VPATH)}builtin.h +yjit_core.$(OBJEXT): {$(VPATH)}config.h +yjit_core.$(OBJEXT): {$(VPATH)}darray.h +yjit_core.$(OBJEXT): {$(VPATH)}debug_counter.h +yjit_core.$(OBJEXT): {$(VPATH)}defines.h +yjit_core.$(OBJEXT): {$(VPATH)}id.h +yjit_core.$(OBJEXT): {$(VPATH)}insns.def +yjit_core.$(OBJEXT): {$(VPATH)}insns.inc +yjit_core.$(OBJEXT): {$(VPATH)}insns_info.inc +yjit_core.$(OBJEXT): {$(VPATH)}intern.h +yjit_core.$(OBJEXT): {$(VPATH)}internal.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/anyargs.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/arithmetic.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/assume.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/attr/cold.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/attr/const.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/attr/error.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/attr/format.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/attr/pure.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/attr/warning.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/cast.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/compiler_is.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/compiler_since.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/config.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/constant_p.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/core.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/core/rarray.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/core/rclass.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/core/rdata.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/core/rfile.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/core/rhash.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/core/robject.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/core/rstring.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/ctype.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/dllexport.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/dosish.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/error.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/eval.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/event.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/fl_type.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/gc.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/glob.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/globals.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/has/attribute.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/has/builtin.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/has/extension.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/has/feature.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/has/warning.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/intern/array.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/intern/class.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/intern/compar.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/intern/complex.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/intern/cont.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/intern/dir.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/intern/enum.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/intern/error.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/intern/eval.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/intern/file.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/intern/gc.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/intern/hash.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/intern/io.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/intern/load.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/intern/object.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/intern/parse.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/intern/proc.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/intern/process.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/intern/random.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/intern/range.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/intern/rational.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/intern/re.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/intern/select.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/intern/signal.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/intern/string.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/intern/struct.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/intern/thread.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/intern/time.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/intern/variable.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/intern/vm.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/interpreter.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/iterator.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/memory.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/method.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/module.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/newobj.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/rgengc.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/scan_args.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/special_consts.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/static_assert.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/stdalign.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/stdbool.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/symbol.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/token_paste.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/value.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/value_type.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/variable.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/warning_push.h +yjit_core.$(OBJEXT): {$(VPATH)}internal/xmalloc.h +yjit_core.$(OBJEXT): {$(VPATH)}iseq.h +yjit_core.$(OBJEXT): {$(VPATH)}method.h +yjit_core.$(OBJEXT): {$(VPATH)}missing.h +yjit_core.$(OBJEXT): {$(VPATH)}node.h +yjit_core.$(OBJEXT): {$(VPATH)}ruby_assert.h +yjit_core.$(OBJEXT): {$(VPATH)}ruby_atomic.h +yjit_core.$(OBJEXT): {$(VPATH)}st.h +yjit_core.$(OBJEXT): {$(VPATH)}subst.h +yjit_core.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h +yjit_core.$(OBJEXT): {$(VPATH)}thread_native.h +yjit_core.$(OBJEXT): {$(VPATH)}yjit_asm.h +yjit_core.$(OBJEXT): {$(VPATH)}yjit_codegen.h +yjit_core.$(OBJEXT): {$(VPATH)}yjit_core.c +yjit_core.$(OBJEXT): {$(VPATH)}yjit_core.h +yjit_core.$(OBJEXT): {$(VPATH)}yjit_iface.h +yjit_core.$(OBJEXT): {$(VPATH)}yjit_utils.h +yjit_core.$(OBJEXT): {$(VPATH)}vm_callinfo.h +yjit_core.$(OBJEXT): {$(VPATH)}vm_core.h +yjit_core.$(OBJEXT): {$(VPATH)}vm_debug.h +yjit_core.$(OBJEXT): {$(VPATH)}vm_opts.h +yjit_core.$(OBJEXT): {$(VPATH)}vm_sync.h +yjit_iface.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h +yjit_iface.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h +yjit_iface.$(OBJEXT): $(CCAN_DIR)/list/list.h +yjit_iface.$(OBJEXT): $(CCAN_DIR)/str/str.h +yjit_iface.$(OBJEXT): $(hdrdir)/ruby/ruby.h +yjit_iface.$(OBJEXT): $(top_srcdir)/internal/array.h +yjit_iface.$(OBJEXT): $(top_srcdir)/internal/class.h +yjit_iface.$(OBJEXT): $(top_srcdir)/internal/compile.h +yjit_iface.$(OBJEXT): $(top_srcdir)/internal/compilers.h +yjit_iface.$(OBJEXT): $(top_srcdir)/internal/gc.h +yjit_iface.$(OBJEXT): $(top_srcdir)/internal/imemo.h +yjit_iface.$(OBJEXT): $(top_srcdir)/internal/serial.h +yjit_iface.$(OBJEXT): $(top_srcdir)/internal/static_assert.h +yjit_iface.$(OBJEXT): $(top_srcdir)/internal/vm.h +yjit_iface.$(OBJEXT): $(top_srcdir)/internal/warnings.h +yjit_iface.$(OBJEXT): {$(VPATH)}assert.h +yjit_iface.$(OBJEXT): {$(VPATH)}atomic.h +yjit_iface.$(OBJEXT): {$(VPATH)}backward/2/assume.h +yjit_iface.$(OBJEXT): {$(VPATH)}backward/2/attributes.h +yjit_iface.$(OBJEXT): {$(VPATH)}backward/2/bool.h +yjit_iface.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h +yjit_iface.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h +yjit_iface.$(OBJEXT): {$(VPATH)}backward/2/limits.h +yjit_iface.$(OBJEXT): {$(VPATH)}backward/2/long_long.h +yjit_iface.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h +yjit_iface.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h +yjit_iface.$(OBJEXT): {$(VPATH)}builtin.h +yjit_iface.$(OBJEXT): {$(VPATH)}config.h +yjit_iface.$(OBJEXT): {$(VPATH)}darray.h +yjit_iface.$(OBJEXT): {$(VPATH)}debug_counter.h +yjit_iface.$(OBJEXT): {$(VPATH)}defines.h +yjit_iface.$(OBJEXT): {$(VPATH)}id.h +yjit_iface.$(OBJEXT): {$(VPATH)}id_table.h +yjit_iface.$(OBJEXT): {$(VPATH)}insns.def +yjit_iface.$(OBJEXT): {$(VPATH)}insns.inc +yjit_iface.$(OBJEXT): {$(VPATH)}insns_info.inc +yjit_iface.$(OBJEXT): {$(VPATH)}intern.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/anyargs.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/arithmetic.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/assume.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/attr/cold.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/attr/const.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/attr/error.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/attr/format.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/attr/pure.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/attr/warning.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/cast.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/compiler_is.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/compiler_since.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/config.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/constant_p.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/core.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/core/rarray.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/core/rclass.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/core/rdata.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/core/rfile.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/core/rhash.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/core/robject.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/core/rstring.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/ctype.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/dllexport.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/dosish.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/error.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/eval.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/event.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/fl_type.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/gc.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/glob.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/globals.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/has/attribute.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/has/builtin.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/has/extension.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/has/feature.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/has/warning.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/intern/array.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/intern/class.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/intern/compar.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/intern/complex.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/intern/cont.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/intern/dir.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/intern/enum.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/intern/error.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/intern/eval.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/intern/file.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/intern/gc.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/intern/hash.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/intern/io.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/intern/load.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/intern/object.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/intern/parse.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/intern/proc.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/intern/process.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/intern/random.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/intern/range.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/intern/rational.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/intern/re.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/intern/select.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/intern/signal.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/intern/string.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/intern/struct.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/intern/thread.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/intern/time.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/intern/variable.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/intern/vm.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/interpreter.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/iterator.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/memory.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/method.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/module.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/newobj.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/rgengc.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/scan_args.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/special_consts.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/static_assert.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/stdalign.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/stdbool.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/symbol.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/token_paste.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/value.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/value_type.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/variable.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/warning_push.h +yjit_iface.$(OBJEXT): {$(VPATH)}internal/xmalloc.h +yjit_iface.$(OBJEXT): {$(VPATH)}iseq.h +yjit_iface.$(OBJEXT): {$(VPATH)}method.h +yjit_iface.$(OBJEXT): {$(VPATH)}missing.h +yjit_iface.$(OBJEXT): {$(VPATH)}node.h +yjit_iface.$(OBJEXT): {$(VPATH)}ruby_assert.h +yjit_iface.$(OBJEXT): {$(VPATH)}ruby_atomic.h +yjit_iface.$(OBJEXT): {$(VPATH)}st.h +yjit_iface.$(OBJEXT): {$(VPATH)}subst.h +yjit_iface.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h +yjit_iface.$(OBJEXT): {$(VPATH)}thread_native.h +yjit_iface.$(OBJEXT): {$(VPATH)}yjit.h +yjit_iface.$(OBJEXT): {$(VPATH)}yjit.rbinc +yjit_iface.$(OBJEXT): {$(VPATH)}yjit_asm.h +yjit_iface.$(OBJEXT): {$(VPATH)}yjit_codegen.h +yjit_iface.$(OBJEXT): {$(VPATH)}yjit_core.h +yjit_iface.$(OBJEXT): {$(VPATH)}yjit_hooks.inc +yjit_iface.$(OBJEXT): {$(VPATH)}yjit_iface.c +yjit_iface.$(OBJEXT): {$(VPATH)}yjit_iface.h +yjit_iface.$(OBJEXT): {$(VPATH)}vm_callinfo.h +yjit_iface.$(OBJEXT): {$(VPATH)}vm_core.h +yjit_iface.$(OBJEXT): {$(VPATH)}vm_debug.h +yjit_iface.$(OBJEXT): {$(VPATH)}vm_opts.h +yjit_iface.$(OBJEXT): {$(VPATH)}vm_sync.h +yjit_utils.$(OBJEXT): {$(VPATH)}yjit_asm.h +yjit_utils.$(OBJEXT): {$(VPATH)}yjit_utils.c +yjit_utils.$(OBJEXT): {$(VPATH)}yjit_utils.h util.$(OBJEXT): $(hdrdir)/ruby.h util.$(OBJEXT): $(hdrdir)/ruby/ruby.h util.$(OBJEXT): $(top_srcdir)/internal/compilers.h @@ -16439,10 +16439,10 @@ version.$(OBJEXT): {$(VPATH)}st.h version.$(OBJEXT): {$(VPATH)}subst.h version.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h version.$(OBJEXT): {$(VPATH)}thread_native.h -version.$(OBJEXT): {$(VPATH)}ujit.h -version.$(OBJEXT): {$(VPATH)}ujit_asm.h -version.$(OBJEXT): {$(VPATH)}ujit_core.h -version.$(OBJEXT): {$(VPATH)}ujit_iface.h +version.$(OBJEXT): {$(VPATH)}yjit.h +version.$(OBJEXT): {$(VPATH)}yjit_asm.h +version.$(OBJEXT): {$(VPATH)}yjit_core.h +version.$(OBJEXT): {$(VPATH)}yjit_iface.h version.$(OBJEXT): {$(VPATH)}version.c version.$(OBJEXT): {$(VPATH)}vm_callinfo.h version.$(OBJEXT): {$(VPATH)}vm_core.h @@ -16677,7 +16677,7 @@ vm.$(OBJEXT): {$(VPATH)}st.h vm.$(OBJEXT): {$(VPATH)}subst.h vm.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h vm.$(OBJEXT): {$(VPATH)}thread_native.h -vm.$(OBJEXT): {$(VPATH)}ujit.h +vm.$(OBJEXT): {$(VPATH)}yjit.h vm.$(OBJEXT): {$(VPATH)}variable.h vm.$(OBJEXT): {$(VPATH)}vm.c vm.$(OBJEXT): {$(VPATH)}vm.h @@ -17487,7 +17487,7 @@ vm_trace.$(OBJEXT): {$(VPATH)}subst.h vm_trace.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h vm_trace.$(OBJEXT): {$(VPATH)}thread_native.h vm_trace.$(OBJEXT): {$(VPATH)}trace_point.rbinc -vm_trace.$(OBJEXT): {$(VPATH)}ujit.h +vm_trace.$(OBJEXT): {$(VPATH)}yjit.h vm_trace.$(OBJEXT): {$(VPATH)}vm_core.h vm_trace.$(OBJEXT): {$(VPATH)}vm_opts.h vm_trace.$(OBJEXT): {$(VPATH)}vm_trace.c @@ -99,7 +99,7 @@ rb_call_builtin_inits(void) BUILTIN(timev); BUILTIN(nilclass); BUILTIN(marshal); - BUILTIN(ujit); + BUILTIN(yjit); Init_builtin_prelude(); } #undef CALL @@ -38,7 +38,7 @@ #include "ruby/util.h" #include "vm_core.h" #include "vm_callinfo.h" -#include "ujit.h" +#include "yjit.h" #include "builtin.h" #include "insns.inc" @@ -110,7 +110,7 @@ rb_iseq_free(const rb_iseq_t *iseq) if (iseq && iseq->body) { struct rb_iseq_constant_body *const body = iseq->body; mjit_free_iseq(iseq); /* Notify MJIT */ - rb_ujit_iseq_free(body); + rb_yjit_iseq_free(body); ruby_xfree((void *)body->iseq_encoded); ruby_xfree((void *)body->insns_info.body); if (body->insns_info.positions) ruby_xfree((void *)body->insns_info.positions); @@ -323,7 +323,7 @@ rb_iseq_update_references(rb_iseq_t *iseq) #if USE_MJIT mjit_update_references(iseq); #endif - rb_ujit_iseq_update_references(body); + rb_yjit_iseq_update_references(body); } } @@ -404,7 +404,7 @@ rb_iseq_mark(const rb_iseq_t *iseq) #if USE_MJIT mjit_mark_cc_entries(body); #endif - rb_ujit_iseq_mark(body); + rb_yjit_iseq_mark(body); } if (FL_TEST_RAW((VALUE)iseq, ISEQ_NOT_LOADED_YET)) { @@ -3184,7 +3184,7 @@ static insn_data_t insn_data[VM_INSTRUCTION_SIZE/2]; -#include "ujit_asm.h" +#include "yjit_asm.h" @@ -3490,7 +3490,7 @@ trace_set_i(void *vstart, void *vend, size_t stride, void *data) } void -rb_ujit_empty_func_with_ec(rb_control_frame_t *cfp, rb_execution_context_t *ec) +rb_yjit_empty_func_with_ec(rb_control_frame_t *cfp, rb_execution_context_t *ec) { // it's put in this file instead of say, compile.c to dodge long C compile time. // it just needs to be in a different unit from vm.o so the compiler can't see the definition @@ -315,7 +315,7 @@ VALUE rb_iseq_defined_string(enum defined_type type); /* vm.c */ VALUE rb_iseq_local_variables(const rb_iseq_t *iseq); -NOINLINE(void rb_ujit_empty_func_with_ec(rb_control_frame_t *cfp, rb_execution_context_t *ec)); +NOINLINE(void rb_yjit_empty_func_with_ec(rb_control_frame_t *cfp, rb_execution_context_t *ec)); RUBY_SYMBOL_EXPORT_END @@ -16,7 +16,8 @@ #include "debug_counter.h" #include "ruby.h" -#include "ujit.h" +#include "vm_core.h" +#include "yjit.h" // Special address values of a function generated from the // corresponding iseq by MJIT: @@ -143,15 +144,15 @@ mjit_exec(rb_execution_context_t *ec) const rb_iseq_t *iseq; struct rb_iseq_constant_body *body; - if (mjit_call_p || rb_ujit_enabled_p()) { + if (mjit_call_p || rb_yjit_enabled_p()) { iseq = ec->cfp->iseq; body = iseq->body; body->total_calls++; } #ifndef MJIT_HEADER - if (rb_ujit_enabled_p() && !mjit_call_p && body->total_calls == rb_ujit_call_threshold()) { - rb_ujit_compile_iseq(iseq, ec); + if (rb_yjit_enabled_p() && !mjit_call_p && body->total_calls == rb_yjit_call_threshold()) { + rb_yjit_compile_iseq(iseq, ec); return Qundef; } #endif @@ -16,7 +16,7 @@ #include "variable.h" #include "gc.h" #include "transient_heap.h" -#include "ujit.h" +#include "yjit.h" VALUE rb_cRactor; @@ -1605,7 +1605,7 @@ ractor_create(rb_execution_context_t *ec, VALUE self, VALUE loc, VALUE name, VAL r->verbose = cr->verbose; r->debug = cr->debug; - rb_ujit_before_ractor_spawn(); + rb_yjit_before_ractor_spawn(); rb_thread_create_ractor(r, args, block); RB_GC_GUARD(rv); @@ -59,7 +59,7 @@ #include "internal/process.h" #include "internal/variable.h" #include "mjit.h" -#include "ujit.h" +#include "yjit.h" #include "ruby/encoding.h" #include "ruby/thread.h" #include "ruby/util.h" @@ -105,7 +105,7 @@ void rb_warning_category_update(unsigned int mask, unsigned int bits); SEP \ X(jit) \ SEP \ - X(ujit) + X(yjit) /* END OF FEATURES */ #define EACH_DEBUG_FEATURES(X, SEP) \ X(frozen_string_literal) \ @@ -189,7 +189,7 @@ struct ruby_cmdline_options { #if USE_MJIT struct mjit_options mjit; #endif - struct rb_ujit_options ujit; + struct rb_yjit_options yjit; int sflag, xflag; unsigned int warning: 1; @@ -234,7 +234,7 @@ cmdline_options_init(ruby_cmdline_options_t *opt) #ifdef MJIT_FORCE_ENABLE /* to use with: ./configure cppflags="-DMJIT_FORCE_ENABLE" */ opt->features.set |= FEATURE_BIT(jit); #endif - opt->features.set |= FEATURE_BIT(ujit); + opt->features.set |= FEATURE_BIT(yjit); return opt; } @@ -333,7 +333,7 @@ usage(const char *name, int help, int highlight, int columns) M("rubyopt", "", "RUBYOPT environment variable (default: enabled)"), M("frozen-string-literal", "", "freeze all string literals (default: disabled)"), M("jit", "", "JIT compiler (default: disabled)"), - M("ujit", "", "in-process JIT compiler (default: enabled)"), + M("yjit", "", "in-process JIT compiler (default: enabled)"), }; static const struct message warn_categories[] = { M("deprecated", "", "deprecated features"), @@ -1031,20 +1031,20 @@ set_option_encoding_once(const char *type, VALUE *name, const char *e, long elen opt_match(s, l, name) && (*(s) ? 1 : (rb_raise(rb_eRuntimeError, "--jit-" name " needs an argument"), 0)) static void -setup_ujit_options(const char *s, struct rb_ujit_options *ujit_opt) +setup_yjit_options(const char *s, struct rb_yjit_options *yjit_opt) { if (*s != '-') return; const size_t l = strlen(++s); if (opt_match_arg(s, l, "call-threshold")) { - ujit_opt->call_threshold = atoi(s + 1); + yjit_opt->call_threshold = atoi(s + 1); } else if (opt_match_noarg(s, l, "stats")) { - ujit_opt->gen_stats = true; + yjit_opt->gen_stats = true; } else { rb_raise(rb_eRuntimeError, - "invalid ujit option `%s' (--help will show valid ujit options)", s); + "invalid yjit option `%s' (--help will show valid yjit options)", s); } } @@ -1461,9 +1461,9 @@ proc_options(long argc, char **argv, ruby_cmdline_options_t *opt, int envopt) rb_warn("MJIT support is disabled."); #endif } - else if (strncmp("ujit", s, 4) == 0) { - FEATURE_SET(opt->features, FEATURE_BIT(ujit)); - setup_ujit_options(s + 4, &opt->ujit); + else if (strncmp("yjit", s, 4) == 0) { + FEATURE_SET(opt->features, FEATURE_BIT(yjit)); + setup_yjit_options(s + 4, &opt->yjit); } else if (strcmp("yydebug", s) == 0) { if (envopt) goto noenvopt_long; @@ -1825,8 +1825,8 @@ process_options(int argc, char **argv, ruby_cmdline_options_t *opt) */ rb_warning("-K is specified; it is for 1.8 compatibility and may cause odd behavior"); - if (opt->features.set & FEATURE_BIT(ujit)) - rb_ujit_init(&opt->ujit); + if (opt->features.set & FEATURE_BIT(yjit)) + rb_yjit_init(&opt->yjit); #if USE_MJIT if (opt->features.set & FEATURE_BIT(jit)) { opt->mjit.on = TRUE; /* set mjit.on for ruby_show_version() API and check to call mjit_init() */ diff --git a/template/Makefile.in b/template/Makefile.in index c71681b4c4..730ad942c7 100644 --- a/template/Makefile.in +++ b/template/Makefile.in @@ -590,7 +590,7 @@ update-known-errors: $(IFCHANGE) $(srcdir)/defs/known_errors.def - INSNS = opt_sc.inc optinsn.inc optunifs.inc insns.inc insns_info.inc \ - vmtc.inc vm.inc mjit_compile.inc ujit_hooks.inc + vmtc.inc vm.inc mjit_compile.inc yjit_hooks.inc $(INSNS): $(srcdir)/insns.def vm_opts.h \ $(srcdir)/defs/opt_operand.def $(srcdir)/defs/opt_insn_unif.def \ diff --git a/test_asm.sh b/test_asm.sh index 1726a6a4e5..e7f6ce9761 100755 --- a/test_asm.sh +++ b/test_asm.sh @@ -3,7 +3,7 @@ clear -clang -std=gnu99 -Wall -Werror -Wshorten-64-to-32 ujit_asm.c ujit_asm_tests.c -o asm_test +clang -std=gnu99 -Wall -Werror -Wshorten-64-to-32 yjit_asm.c yjit_asm_tests.c -o asm_test ./asm_test diff --git a/tool/ruby_vm/models/micro_jit.rb b/tool/ruby_vm/models/micro_jit.rb index 5e376ebb3a..83b463a367 100644 --- a/tool/ruby_vm/models/micro_jit.rb +++ b/tool/ruby_vm/models/micro_jit.rb @@ -179,7 +179,7 @@ module RubyVM::MicroJIT def make_result(success, with_pc) [success ? 1 : 0, [ - ['ujit_with_ec', with_pc], + ['yjit_with_ec', with_pc], ] ] end @@ -197,7 +197,7 @@ module RubyVM::MicroJIT end def scrape - with_ec = scrape_instruction(RubyVM::Instructions.find_index { |insn| insn.name == 'ujit_call_example_with_ec' }) + with_ec = scrape_instruction(RubyVM::Instructions.find_index { |insn| insn.name == 'yjit_call_example_with_ec' }) make_result(true, with_ec) rescue => e print_warning("scrape failed: #{e.message}") @@ -207,7 +207,7 @@ module RubyVM::MicroJIT end def print_warning(text) - text = "ujit warning: #{text}" + text = "yjit warning: #{text}" text = "\x1b[1m#{text}\x1b[0m" if STDOUT.tty? STDOUT.puts(text) end diff --git a/tool/ruby_vm/models/micro_jit/example_instructions.rb b/tool/ruby_vm/models/micro_jit/example_instructions.rb index 23ecf72a3b..5dd40fef65 100644 --- a/tool/ruby_vm/models/micro_jit/example_instructions.rb +++ b/tool/ruby_vm/models/micro_jit/example_instructions.rb @@ -64,6 +64,6 @@ class RubyVM::MicroJIT::ExampleInstructions end def self.to_a - [new('ujit_call_example_with_ec')] + [new('yjit_call_example_with_ec')] end end diff --git a/tool/ruby_vm/views/vm.inc.erb b/tool/ruby_vm/views/vm.inc.erb index 57a860efcf..c49c785df6 100644 --- a/tool/ruby_vm/views/vm.inc.erb +++ b/tool/ruby_vm/views/vm.inc.erb @@ -26,16 +26,16 @@ % end % % RubyVM::MicroJIT::ExampleInstructions.to_a.each do |insn| -INSN_ENTRY(ujit_call_example_with_ec) +INSN_ENTRY(yjit_call_example_with_ec) { - START_OF_ORIGINAL_INSN(ujit_call_example_with_ec); + START_OF_ORIGINAL_INSN(yjit_call_example_with_ec); #if USE_MACHINE_REGS // assumes USE_MACHINE_REGS, aka reg_pc setup, // aka #define SET_PC(x) (reg_cfp->pc = reg_pc = (x)) - rb_ujit_empty_func_with_ec(GET_CFP(), ec); + rb_yjit_empty_func_with_ec(GET_CFP(), ec); RESTORE_REGS(); #endif - END_INSN(ujit_call_example_with_ec); + END_INSN(yjit_call_example_with_ec); } % end % diff --git a/tool/ruby_vm/views/ujit_hooks.inc.erb b/tool/ruby_vm/views/yjit_hooks.inc.erb index 9409c996b1..faca2050c6 100644 --- a/tool/ruby_vm/views/ujit_hooks.inc.erb +++ b/tool/ruby_vm/views/yjit_hooks.inc.erb @@ -13,7 +13,7 @@ } -%> % success, byte_arrays = RubyVM::MicroJIT.scrape -static const uint8_t ujit_scrape_successful = <%= success %>; +static const uint8_t yjit_scrape_successful = <%= success %>; % byte_arrays.each do |(prefix, scrape_result)| // Disassembly: % scrape_result.disassembly_lines.each do |line| diff --git a/tool/runruby.rb b/tool/runruby.rb index 835e772735..bff5d031cc 100755 --- a/tool/runruby.rb +++ b/tool/runruby.rb @@ -11,8 +11,8 @@ when ENV['RUNRUBY_USE_GDB'] == 'true' debugger = :gdb when ENV['RUNRUBY_USE_LLDB'] == 'true' debugger = :lldb -when ENV['RUNRUBY_UJIT_STATS'] - use_ujit_stat = true +when ENV['RUNRUBY_YJIT_STATS'] + use_yjit_stat = true end while arg = ARGV[0] break ARGV.shift if arg == '--' @@ -166,8 +166,8 @@ if debugger end cmd = [runner || ruby] -if use_ujit_stat - cmd << '--ujit-stats' +if use_yjit_stat + cmd << '--yjit-stats' end cmd.concat(ARGV) cmd.unshift(*precommand) unless precommand.empty? diff --git a/ujit.h b/ujit.h deleted file mode 100644 index e7ff96e64d..0000000000 --- a/ujit.h +++ /dev/null @@ -1,61 +0,0 @@ -// -// This file contains definitions uJIT exposes to the CRuby codebase -// - -#ifndef UJIT_H -#define UJIT_H 1 - -#include "stddef.h" -#include "stdint.h" -#include "stdbool.h" -#include "method.h" - -#ifdef _WIN32 -#define PLATFORM_SUPPORTED_P 0 -#else -#define PLATFORM_SUPPORTED_P 1 -#endif - -#ifndef UJIT_CHECK_MODE -#define UJIT_CHECK_MODE 0 -#endif - -// >= 1: print when output code invalidation happens -// >= 2: dump list of instructions when regions compile -#ifndef UJIT_DUMP_MODE -#define UJIT_DUMP_MODE 0 -#endif - -#ifndef rb_iseq_t -typedef struct rb_iseq_struct rb_iseq_t; -#define rb_iseq_t rb_iseq_t -#endif - -struct rb_ujit_options { - bool ujit_enabled; - - // Number of method calls after which to start generating code - // Threshold==1 means compile on first execution - unsigned call_threshold; - - // Capture and print out stats - bool gen_stats; -}; - -RUBY_SYMBOL_EXPORT_BEGIN -bool rb_ujit_enabled_p(void); -unsigned rb_ujit_call_threshold(void); -RUBY_SYMBOL_EXPORT_END - -void rb_ujit_collect_vm_usage_insn(int insn); -void rb_ujit_method_lookup_change(VALUE cme_or_cc); -void rb_ujit_compile_iseq(const rb_iseq_t *iseq, rb_execution_context_t *ec); -void rb_ujit_init(struct rb_ujit_options *options); -void rb_ujit_bop_redefined(VALUE klass, const rb_method_entry_t *me, enum ruby_basic_operators bop); -void rb_ujit_constant_state_changed(void); -void rb_ujit_iseq_mark(const struct rb_iseq_constant_body *body); -void rb_ujit_iseq_update_references(const struct rb_iseq_constant_body *body); -void rb_ujit_iseq_free(const struct rb_iseq_constant_body *body); -void rb_ujit_before_ractor_spawn(void); - -#endif // #ifndef UJIT_H @@ -13,7 +13,7 @@ #include "version.h" #include "vm_core.h" #include "mjit.h" -#include "ujit.h" +#include "yjit.h" #include <stdio.h> #ifndef EXIT_SUCCESS @@ -125,7 +125,7 @@ ruby_show_version(void) PRINT(description); } - if (rb_ujit_enabled_p()) { + if (rb_yjit_enabled_p()) { fputs("YJIT is enabled\n", stdout); } #ifdef RUBY_LAST_COMMIT_TITLE @@ -37,7 +37,7 @@ #include "vm_insnhelper.h" #include "ractor_core.h" #include "vm_sync.h" -#include "ujit.h" +#include "yjit.h" #include "builtin.h" @@ -346,7 +346,7 @@ static void vm_collect_usage_register(int reg, int isset); #endif #if RUBY_DEBUG -static void vm_ujit_collect_usage_insn(int insn); +static void vm_yjit_collect_usage_insn(int insn); #endif static VALUE vm_make_env_object(const rb_execution_context_t *ec, rb_control_frame_t *cfp); @@ -1854,9 +1854,9 @@ rb_vm_check_redefinition_opt_method(const rb_method_entry_t *me, VALUE klass) klass = RBASIC_CLASS(klass); } if (vm_redefinition_check_method_type(me->def)) { - if (st_lookup(vm_opt_method_def_table, (st_data_t)me->def, &bop)) { + if (st_lookup(vm_opt_method_table, (st_data_t)me, &bop)) { int flag = vm_redefinition_check_flag(klass); - rb_ujit_bop_redefined(klass, me, (enum ruby_basic_operators)bop); + rb_yjit_bop_redefined(klass, me, (enum ruby_basic_operators)bop); ruby_vm_redefined_flag[bop] |= flag; } @@ -4063,9 +4063,9 @@ MAYBE_UNUSED(static void (*ruby_vm_collect_usage_func_register)(int reg, int iss #if RUBY_DEBUG static void -vm_ujit_collect_usage_insn(int insn) +vm_yjit_collect_usage_insn(int insn) { - rb_ujit_collect_vm_usage_insn(insn); + rb_yjit_collect_vm_usage_insn(insn); } #endif @@ -313,8 +313,8 @@ pathobj_realpath(VALUE pathobj) struct rb_mjit_unit; // List of YJIT block versions -typedef rb_darray(struct ujit_block_version *) rb_ujit_block_array_t; -typedef rb_darray(rb_ujit_block_array_t) rb_ujit_block_array_array_t; +typedef rb_darray(struct yjit_block_version *) rb_yjit_block_array_t; +typedef rb_darray(rb_yjit_block_array_t) rb_yjit_block_array_array_t; struct rb_iseq_constant_body { enum iseq_type { @@ -455,7 +455,7 @@ struct rb_iseq_constant_body { struct rb_mjit_unit *jit_unit; #endif - rb_ujit_block_array_array_t ujit_blocks; // empty, or has a size equal to iseq_size + rb_yjit_block_array_array_t yjit_blocks; // empty, or has a size equal to iseq_size }; /* T_IMEMO/iseq */ @@ -797,7 +797,7 @@ typedef struct rb_control_frame_struct { #if VM_DEBUG_BP_CHECK VALUE *bp_check; /* cfp[7] */ #endif - // Return address for uJIT code + // Return address for YJIT code void *jit_return; } rb_control_frame_t; @@ -81,7 +81,7 @@ error ! RSTRING_PTR(rb_iseq_path(reg_cfp->iseq)), \ rb_iseq_line_no(reg_cfp->iseq, reg_pc - reg_cfp->iseq->body->iseq_encoded)); \ } \ - if (USE_INSNS_COUNTER && BIN(insn) != BIN(ujit_call_example_with_ec)) vm_insns_counter_count_insn(BIN(insn)); + if (USE_INSNS_COUNTER && BIN(insn) != BIN(yjit_call_example_with_ec)) vm_insns_counter_count_insn(BIN(insn)); #define INSN_DISPATCH_SIG(insn) diff --git a/vm_insnhelper.h b/vm_insnhelper.h index 9c610304f8..22a181f95a 100644 --- a/vm_insnhelper.h +++ b/vm_insnhelper.h @@ -26,8 +26,8 @@ MJIT_SYMBOL_EXPORT_END #define COLLECT_USAGE_REGISTER(reg, s) vm_collect_usage_register((reg), (s)) #elif RUBY_DEBUG -/* for --ujit-stats */ -#define COLLECT_USAGE_INSN(insn) vm_ujit_collect_usage_insn(insn) +/* for --yjit-stats */ +#define COLLECT_USAGE_INSN(insn) vm_yjit_collect_usage_insn(insn) #define COLLECT_USAGE_OPERAND(insn, n, op) /* none */ #define COLLECT_USAGE_REGISTER(reg, s) /* none */ #else diff --git a/vm_method.c b/vm_method.c index 08c8013010..5fd8f6a8bc 100644 --- a/vm_method.c +++ b/vm_method.c @@ -3,7 +3,7 @@ */ #include "id_table.h" -#include "ujit.h" +#include "yjit.h" #define METHOD_DEBUG 0 @@ -123,7 +123,7 @@ rb_vm_cc_invalidate(const struct rb_callcache *cc) VM_ASSERT(cc->klass != 0); // should be enable *(VALUE *)&cc->klass = 0; - rb_ujit_method_lookup_change((VALUE)cc); + rb_yjit_method_lookup_change((VALUE)cc); RB_DEBUG_COUNTER_INC(cc_ent_invalidate); } @@ -135,13 +135,13 @@ vm_cme_invalidate(rb_callable_method_entry_t *cme) VM_ASSERT(callable_method_entry_p(cme)); METHOD_ENTRY_INVALIDATED_SET(cme); RB_DEBUG_COUNTER_INC(cc_cme_invalidate); - rb_ujit_method_lookup_change((VALUE)cme); + rb_yjit_method_lookup_change((VALUE)cme); } void rb_clear_constant_cache(void) { - rb_ujit_constant_state_changed(); + rb_yjit_constant_state_changed(); INC_GLOBAL_CONSTANT_STATE(); } diff --git a/win32/Makefile.sub b/win32/Makefile.sub index 241489d474..c01921be38 100644 --- a/win32/Makefile.sub +++ b/win32/Makefile.sub @@ -1347,7 +1347,7 @@ $(MJIT_PRECOMPILED_HEADER): $(MJIT_PRECOMPILED_HEADER_NAME) $(Q) $(MAKE_LINK) $(MJIT_PRECOMPILED_HEADER_NAME:.pch=.pdb) $(arch_hdrdir)/$(MJIT_PRECOMPILED_HEADER_NAME:.pch=.pdb) INSNS = opt_sc.inc optinsn.inc optunifs.inc insns.inc insns_info.inc \ - vmtc.inc vm.inc mjit_compile.inc ujit_hooks.inc + vmtc.inc vm.inc mjit_compile.inc yjit_hooks.inc !if [exit > insns_rules.mk] !else if [for %I in ($(INSNS)) do \ diff --git a/yjit.h b/yjit.h new file mode 100644 index 0000000000..f2dfb31142 --- /dev/null +++ b/yjit.h @@ -0,0 +1,61 @@ +// +// This file contains definitions YJIT exposes to the CRuby codebase +// + +#ifndef YJIT_H +#define YJIT_H 1 + +#include "stddef.h" +#include "stdint.h" +#include "stdbool.h" +#include "method.h" + +#ifdef _WIN32 +#define PLATFORM_SUPPORTED_P 0 +#else +#define PLATFORM_SUPPORTED_P 1 +#endif + +#ifndef YJIT_CHECK_MODE +#define YJIT_CHECK_MODE 0 +#endif + +// >= 1: print when output code invalidation happens +// >= 2: dump list of instructions when regions compile +#ifndef YJIT_DUMP_MODE +#define YJIT_DUMP_MODE 0 +#endif + +#ifndef rb_iseq_t +typedef struct rb_iseq_struct rb_iseq_t; +#define rb_iseq_t rb_iseq_t +#endif + +struct rb_yjit_options { + bool yjit_enabled; + + // Number of method calls after which to start generating code + // Threshold==1 means compile on first execution + unsigned call_threshold; + + // Capture and print out stats + bool gen_stats; +}; + +RUBY_SYMBOL_EXPORT_BEGIN +bool rb_yjit_enabled_p(void); +unsigned rb_yjit_call_threshold(void); +RUBY_SYMBOL_EXPORT_END + +void rb_yjit_collect_vm_usage_insn(int insn); +void rb_yjit_method_lookup_change(VALUE cme_or_cc); +void rb_yjit_compile_iseq(const rb_iseq_t *iseq, rb_execution_context_t *ec); +void rb_yjit_init(struct rb_yjit_options *options); +void rb_yjit_bop_redefined(VALUE klass, const rb_method_entry_t *me, enum ruby_basic_operators bop); +void rb_yjit_constant_state_changed(void); +void rb_yjit_iseq_mark(const struct rb_iseq_constant_body *body); +void rb_yjit_iseq_update_references(const struct rb_iseq_constant_body *body); +void rb_yjit_iseq_free(const struct rb_iseq_constant_body *body); +void rb_yjit_before_ractor_spawn(void); + +#endif // #ifndef YJIT_H @@ -1,13 +1,13 @@ -module UJIT +module YJIT def self.disasm(iseq) iseq = RubyVM::InstructionSequence.of(iseq) - blocks = UJIT.blocks_for(iseq) + blocks = YJIT.blocks_for(iseq) return if blocks.empty? str = "" - cs = UJIT::Disasm.new + cs = YJIT::Disasm.new str << iseq.disasm str << "\n" @@ -36,16 +36,16 @@ module UJIT str end if defined?(Disasm) - # Return a hash for statistics generated for the --ujit-stats command line option. + # Return a hash for statistics generated for the --yjit-stats command line option. # Return nil when option is not passed or unavailable. def self.runtime_stats - # defined in ujit_iface.c + # defined in yjit_iface.c Primitive.get_stat_counters end - # Discard statistics collected for --ujit-stats. + # Discard statistics collected for --yjit-stats. def self.reset_stats! - # defined in ujit_iface.c + # defined in yjit_iface.c Primitive.reset_stats_bang end @@ -58,7 +58,7 @@ module UJIT return unless counters - $stderr.puts("***uJIT: Printing runtime counters from ujit.rb***") + $stderr.puts("***YJIT: Printing runtime counters from yjit.rb***") print_counters(counters, prefix: 'oswb_', prompt: 'opt_send_without_block exit reasons: ') print_counters(counters, prefix: 'leave_', prompt: 'leave exit reasons: ') diff --git a/ujit_asm.c b/yjit_asm.c index 939f238b0e..64b002c45a 100644 --- a/ujit_asm.c +++ b/yjit_asm.c @@ -11,7 +11,7 @@ #include <sys/mman.h> #endif -#include "ujit_asm.h" +#include "yjit_asm.h" // Compute the number of bits needed to encode a signed value uint32_t sig_imm_size(int64_t imm) diff --git a/ujit_asm.h b/yjit_asm.h index e72aa477ef..617a32aafc 100644 --- a/ujit_asm.h +++ b/yjit_asm.h @@ -1,5 +1,5 @@ -#ifndef UJIT_ASM_H -#define UJIT_ASM_H 1 +#ifndef YJIT_ASM_H +#define YJIT_ASM_H 1 #include <stdint.h> #include <stddef.h> diff --git a/ujit_asm_tests.c b/yjit_asm_tests.c index 14be0017ac..da58bdd3b5 100644 --- a/ujit_asm_tests.c +++ b/yjit_asm_tests.c @@ -2,7 +2,7 @@ #include <stdlib.h> #include <string.h> #include <assert.h> -#include "ujit_asm.h" +#include "yjit_asm.h" // Print the bytes in a code block void print_bytes(codeblock_t* cb) diff --git a/ujit_codegen.c b/yjit_codegen.c index 86e1242f21..ab16ccbf42 100644 --- a/ujit_codegen.c +++ b/yjit_codegen.c @@ -8,12 +8,12 @@ #include "internal/compile.h" #include "internal/class.h" #include "insns_info.inc" -#include "ujit.h" -#include "ujit_iface.h" -#include "ujit_core.h" -#include "ujit_codegen.h" -#include "ujit_asm.h" -#include "ujit_utils.h" +#include "yjit.h" +#include "yjit_iface.h" +#include "yjit_core.h" +#include "yjit_codegen.h" +#include "yjit_asm.h" +#include "yjit_utils.h" // Map from YARV opcodes to code generation functions static st_table *gen_fns; @@ -99,9 +99,9 @@ jit_peek_at_stack(jitstate_t* jit, ctx_t* ctx) return *(sp - 1); } -// Save uJIT registers prior to a C call +// Save YJIT registers prior to a C call static void -ujit_save_regs(codeblock_t* cb) +yjit_save_regs(codeblock_t* cb) { push(cb, REG_CFP); push(cb, REG_EC); @@ -109,9 +109,9 @@ ujit_save_regs(codeblock_t* cb) push(cb, REG_SP); // Maintain 16-byte RSP alignment } -// Restore uJIT registers after a C call +// Restore YJIT registers after a C call static void -ujit_load_regs(codeblock_t* cb) +yjit_load_regs(codeblock_t* cb) { pop(cb, REG_SP); // Maintain 16-byte RSP alignment pop(cb, REG_SP); @@ -123,7 +123,7 @@ ujit_load_regs(codeblock_t* cb) Generate an inline exit to return to the interpreter */ static void -ujit_gen_exit(jitstate_t* jit, ctx_t* ctx, codeblock_t* cb, VALUE* exit_pc) +yjit_gen_exit(jitstate_t* jit, ctx_t* ctx, codeblock_t* cb, VALUE* exit_pc) { // Write the adjusted SP back into the CFP if (ctx->sp_offset != 0) @@ -142,9 +142,9 @@ ujit_gen_exit(jitstate_t* jit, ctx_t* ctx, codeblock_t* cb, VALUE* exit_pc) // Accumulate stats about interpreter exits #if RUBY_DEBUG - if (rb_ujit_opts.gen_stats) { + if (rb_yjit_opts.gen_stats) { mov(cb, RDI, const_ptr_opnd(exit_pc)); - call_ptr(cb, RSI, (void *)&rb_ujit_count_side_exit_op); + call_ptr(cb, RSI, (void *)&rb_yjit_count_side_exit_op); } #endif @@ -156,7 +156,7 @@ ujit_gen_exit(jitstate_t* jit, ctx_t* ctx, codeblock_t* cb, VALUE* exit_pc) Generate an out-of-line exit to return to the interpreter */ static uint8_t * -ujit_side_exit(jitstate_t* jit, ctx_t* ctx) +yjit_side_exit(jitstate_t* jit, ctx_t* ctx) { uint8_t* code_ptr = cb_get_ptr(ocb, ocb->write_pos); @@ -177,7 +177,7 @@ ujit_side_exit(jitstate_t* jit, ctx_t* ctx) mov(ocb, mem_opnd(64, RAX, 0), RCX); // Generate the code to exit to the interpreters - ujit_gen_exit(jit, ctx, ocb, exit_pc); + yjit_gen_exit(jit, ctx, ocb, exit_pc); return code_ptr; } @@ -185,22 +185,22 @@ ujit_side_exit(jitstate_t* jit, ctx_t* ctx) #if RUBY_DEBUG // Increment a profiling counter with counter_name -#define GEN_COUNTER_INC(cb, counter_name) _gen_counter_inc(cb, &(ujit_runtime_counters . counter_name)) +#define GEN_COUNTER_INC(cb, counter_name) _gen_counter_inc(cb, &(yjit_runtime_counters . counter_name)) static void _gen_counter_inc(codeblock_t *cb, int64_t *counter) { - if (!rb_ujit_opts.gen_stats) return; + if (!rb_yjit_opts.gen_stats) return; mov(cb, REG0, const_ptr_opnd(counter)); cb_write_lock_prefix(cb); // for ractors. add(cb, mem_opnd(64, REG0, 0), imm_opnd(1)); } // Increment a counter then take an existing side exit. -#define COUNTED_EXIT(side_exit, counter_name) _counted_side_exit(side_exit, &(ujit_runtime_counters . counter_name)) +#define COUNTED_EXIT(side_exit, counter_name) _counted_side_exit(side_exit, &(yjit_runtime_counters . counter_name)) static uint8_t * _counted_side_exit(uint8_t *existing_side_exit, int64_t *counter) { - if (!rb_ujit_opts.gen_stats) return existing_side_exit; + if (!rb_yjit_opts.gen_stats) return existing_side_exit; uint8_t *start = cb_get_ptr(ocb, ocb->write_pos); _gen_counter_inc(ocb, counter); @@ -218,7 +218,7 @@ Compile an interpreter entry block to be inserted into an iseq Returns `NULL` if compilation fails. */ uint8_t* -ujit_entry_prologue(void) +yjit_entry_prologue(void) { RUBY_ASSERT(cb != NULL); @@ -244,7 +244,7 @@ ujit_entry_prologue(void) Generate code to check for interrupts and take a side-exit */ static void -ujit_check_ints(codeblock_t* cb, uint8_t* side_exit) +yjit_check_ints(codeblock_t* cb, uint8_t* side_exit) { // Check for interrupts // see RUBY_VM_CHECK_INTS(ec) macro @@ -258,7 +258,7 @@ ujit_check_ints(codeblock_t* cb, uint8_t* side_exit) Compile a sequence of bytecode instructions for a given basic block version */ void -ujit_gen_block(ctx_t* ctx, block_t* block, rb_execution_context_t* ec) +yjit_gen_block(ctx_t* ctx, block_t* block, rb_execution_context_t* ec) { RUBY_ASSERT(cb != NULL); RUBY_ASSERT(block != NULL); @@ -302,7 +302,7 @@ ujit_gen_block(ctx_t* ctx, block_t* block, rb_execution_context_t* ec) if (!rb_st_lookup(gen_fns, opcode, (st_data_t*)&gen_fn)) { // If we reach an unknown instruction, // exit to the interpreter and stop compiling - ujit_gen_exit(&jit, ctx, cb, jit.pc); + yjit_gen_exit(&jit, ctx, cb, jit.pc); break; } @@ -322,8 +322,8 @@ ujit_gen_block(ctx_t* ctx, block_t* block, rb_execution_context_t* ec) // If we can't compile this instruction // exit to the interpreter and stop compiling - if (status == UJIT_CANT_COMPILE) { - ujit_gen_exit(&jit, ctx, cb, jit.pc); + if (status == YJIT_CANT_COMPILE) { + yjit_gen_exit(&jit, ctx, cb, jit.pc); break; } @@ -332,7 +332,7 @@ ujit_gen_block(ctx_t* ctx, block_t* block, rb_execution_context_t* ec) insn_idx += insn_len(opcode); // If the instruction terminates this block - if (status == UJIT_END_BLOCK) { + if (status == YJIT_END_BLOCK) { break; } } @@ -343,7 +343,7 @@ ujit_gen_block(ctx_t* ctx, block_t* block, rb_execution_context_t* ec) // Store the index of the last instruction in the block block->end_idx = insn_idx; - if (UJIT_DUMP_MODE >= 2) { + if (YJIT_DUMP_MODE >= 2) { // Dump list of compiled instrutions fprintf(stderr, "Compiled the following for iseq=%p:\n", (void *)iseq); for (uint32_t idx = block->blockid.idx; idx < insn_idx;) @@ -367,14 +367,14 @@ gen_dup(jitstate_t* jit, ctx_t* ctx) mov(cb, REG0, dup_val); mov(cb, loc0, REG0); - return UJIT_KEEP_COMPILING; + return YJIT_KEEP_COMPILING; } static codegen_status_t gen_nop(jitstate_t* jit, ctx_t* ctx) { // Do nothing - return UJIT_KEEP_COMPILING; + return YJIT_KEEP_COMPILING; } static codegen_status_t @@ -382,7 +382,7 @@ gen_pop(jitstate_t* jit, ctx_t* ctx) { // Decrement SP ctx_stack_pop(ctx, 1); - return UJIT_KEEP_COMPILING; + return YJIT_KEEP_COMPILING; } static codegen_status_t @@ -391,7 +391,7 @@ gen_putnil(jitstate_t* jit, ctx_t* ctx) // Write constant at SP x86opnd_t stack_top = ctx_stack_push(ctx, T_NIL); mov(cb, stack_top, imm_opnd(Qnil)); - return UJIT_KEEP_COMPILING; + return YJIT_KEEP_COMPILING; } static codegen_status_t @@ -435,7 +435,7 @@ gen_putobject(jitstate_t* jit, ctx_t* ctx) mov(cb, stack_top, RAX); } - return UJIT_KEEP_COMPILING; + return YJIT_KEEP_COMPILING; } static codegen_status_t @@ -448,7 +448,7 @@ gen_putobject_int2fix(jitstate_t* jit, ctx_t* ctx) x86opnd_t stack_top = ctx_stack_push(ctx, T_FIXNUM); mov(cb, stack_top, imm_opnd(INT2FIX(cst_val))); - return UJIT_KEEP_COMPILING; + return YJIT_KEEP_COMPILING; } static codegen_status_t @@ -461,7 +461,7 @@ gen_putself(jitstate_t* jit, ctx_t* ctx) x86opnd_t stack_top = ctx_stack_push(ctx, T_NONE); mov(cb, stack_top, RAX); - return UJIT_KEEP_COMPILING; + return YJIT_KEEP_COMPILING; } static codegen_status_t @@ -481,7 +481,7 @@ gen_getlocal_wc0(jitstate_t* jit, ctx_t* ctx) x86opnd_t stack_top = ctx_stack_push(ctx, T_NONE); mov(cb, stack_top, REG0); - return UJIT_KEEP_COMPILING; + return YJIT_KEEP_COMPILING; } static codegen_status_t @@ -508,7 +508,7 @@ gen_getlocal_wc1(jitstate_t* jit, ctx_t* ctx) x86opnd_t stack_top = ctx_stack_push(ctx, T_NONE); mov(cb, stack_top, REG0); - return UJIT_KEEP_COMPILING; + return YJIT_KEEP_COMPILING; } static codegen_status_t @@ -535,7 +535,7 @@ gen_setlocal_wc0(jitstate_t* jit, ctx_t* ctx) test(cb, flags_opnd, imm_opnd(VM_ENV_FLAG_WB_REQUIRED)); // Create a size-exit to fall back to the interpreter - uint8_t* side_exit = ujit_side_exit(jit, ctx); + uint8_t* side_exit = yjit_side_exit(jit, ctx); // if (flags & VM_ENV_FLAG_WB_REQUIRED) != 0 jnz_ptr(cb, side_exit); @@ -549,7 +549,7 @@ gen_setlocal_wc0(jitstate_t* jit, ctx_t* ctx) const int32_t offs = -8 * local_idx; mov(cb, mem_opnd(64, REG0, offs), REG1); - return UJIT_KEEP_COMPILING; + return YJIT_KEEP_COMPILING; } // Check that `self` is a pointer to an object on the GC heap @@ -575,14 +575,14 @@ gen_getinstancevariable(jitstate_t* jit, ctx_t* ctx) // Check that the inline cache has been set, slot index is known if (!ic->entry) { - return UJIT_CANT_COMPILE; + return YJIT_CANT_COMPILE; } // Defer compilation so we can peek at the topmost object if (!jit_at_current_insn(jit)) { defer_compilation(jit->block, jit->insn_idx, ctx); - return UJIT_END_BLOCK; + return YJIT_END_BLOCK; } // Peek at the topmost value on the stack at compilation time @@ -609,13 +609,13 @@ gen_getinstancevariable(jitstate_t* jit, ctx_t* ctx) // Eventually, we can encode whether an object is T_OBJECT or not // inside object shapes. if (rb_get_alloc_func(ic->entry->class_value) != rb_class_allocate_instance) { - return UJIT_CANT_COMPILE; + return YJIT_CANT_COMPILE; } uint32_t ivar_index = ic->entry->index; // Create a size-exit to fall back to the interpreter - uint8_t* side_exit = ujit_side_exit(jit, ctx); + uint8_t* side_exit = yjit_side_exit(jit, ctx); // Load self from CFP mov(cb, REG0, member_opnd(REG_CFP, rb_control_frame_t, self)); @@ -659,7 +659,7 @@ gen_getinstancevariable(jitstate_t* jit, ctx_t* ctx) x86opnd_t out_opnd = ctx_stack_push(ctx, T_NONE); mov(cb, out_opnd, REG0); - return UJIT_KEEP_COMPILING; + return YJIT_KEEP_COMPILING; } static codegen_status_t @@ -669,7 +669,7 @@ gen_setinstancevariable(jitstate_t* jit, ctx_t* ctx) // Check that the inline cache has been set, slot index is known if (!ic->entry) { - return UJIT_CANT_COMPILE; + return YJIT_CANT_COMPILE; } // If the class uses the default allocator, instances should all be T_OBJECT @@ -677,13 +677,13 @@ gen_setinstancevariable(jitstate_t* jit, ctx_t* ctx) // Eventually, we can encode whether an object is T_OBJECT or not // inside object shapes. if (rb_get_alloc_func(ic->entry->class_value) != rb_class_allocate_instance) { - return UJIT_CANT_COMPILE; + return YJIT_CANT_COMPILE; } uint32_t ivar_index = ic->entry->index; // Create a size-exit to fall back to the interpreter - uint8_t* side_exit = ujit_side_exit(jit, ctx); + uint8_t* side_exit = yjit_side_exit(jit, ctx); // Load self from CFP mov(cb, REG0, member_opnd(REG_CFP, rb_control_frame_t, self)); @@ -727,7 +727,7 @@ gen_setinstancevariable(jitstate_t* jit, ctx_t* ctx) x86opnd_t ivar_opnd = mem_opnd(64, REG0, sizeof(VALUE) * ivar_index); mov(cb, ivar_opnd, REG1); - return UJIT_KEEP_COMPILING; + return YJIT_KEEP_COMPILING; } // Conditional move operation used by comparison operators @@ -738,7 +738,7 @@ gen_fixnum_cmp(jitstate_t* jit, ctx_t* ctx, cmov_fn cmov_op) { // Create a size-exit to fall back to the interpreter // Note: we generate the side-exit before popping operands from the stack - uint8_t* side_exit = ujit_side_exit(jit, ctx); + uint8_t* side_exit = yjit_side_exit(jit, ctx); // TODO: make a helper function for guarding on op-not-redefined // Make sure that minus isn't redefined for integers @@ -777,7 +777,7 @@ gen_fixnum_cmp(jitstate_t* jit, ctx_t* ctx, cmov_fn cmov_op) x86opnd_t dst = ctx_stack_push(ctx, T_NONE); mov(cb, dst, REG0); - return UJIT_KEEP_COMPILING; + return YJIT_KEEP_COMPILING; } static codegen_status_t @@ -806,7 +806,7 @@ gen_opt_aref(jitstate_t* jit, ctx_t* ctx) // Only JIT one arg calls like `ary[6]` if (argc != 1) { - return UJIT_CANT_COMPILE; + return YJIT_CANT_COMPILE; } const rb_callable_method_entry_t *cme = vm_cc_cme(cd->cc); @@ -815,11 +815,11 @@ gen_opt_aref(jitstate_t* jit, ctx_t* ctx) // (including arrays) don't use the inline cache, so if the inline cache // has an entry, then this must be used by some other type. if (cme) { - return UJIT_CANT_COMPILE; + return YJIT_CANT_COMPILE; } // Create a size-exit to fall back to the interpreter - uint8_t* side_exit = ujit_side_exit(jit, ctx); + uint8_t* side_exit = yjit_side_exit(jit, ctx); // TODO: make a helper function for guarding on op-not-redefined // Make sure that aref isn't redefined for arrays. @@ -857,21 +857,21 @@ gen_opt_aref(jitstate_t* jit, ctx_t* ctx) test(cb, REG1, imm_opnd(RUBY_FIXNUM_FLAG)); jz_ptr(cb, side_exit); - // Save uJIT registers - ujit_save_regs(cb); + // Save YJIT registers + yjit_save_regs(cb); mov(cb, RDI, recv_opnd); sar(cb, REG1, imm_opnd(1)); // Convert fixnum to int mov(cb, RSI, REG1); call_ptr(cb, REG0, (void *)rb_ary_entry_internal); - // Restore uJIT registers - ujit_load_regs(cb); + // Restore YJIT registers + yjit_load_regs(cb); x86opnd_t stack_ret = ctx_stack_push(ctx, T_NONE); mov(cb, stack_ret, RAX); - return UJIT_KEEP_COMPILING; + return YJIT_KEEP_COMPILING; } static codegen_status_t @@ -879,7 +879,7 @@ gen_opt_and(jitstate_t* jit, ctx_t* ctx) { // Create a size-exit to fall back to the interpreter // Note: we generate the side-exit before popping operands from the stack - uint8_t* side_exit = ujit_side_exit(jit, ctx); + uint8_t* side_exit = yjit_side_exit(jit, ctx); // TODO: make a helper function for guarding on op-not-redefined // Make sure that plus isn't redefined for integers @@ -915,7 +915,7 @@ gen_opt_and(jitstate_t* jit, ctx_t* ctx) x86opnd_t dst = ctx_stack_push(ctx, T_FIXNUM); mov(cb, dst, REG0); - return UJIT_KEEP_COMPILING; + return YJIT_KEEP_COMPILING; } static codegen_status_t @@ -923,7 +923,7 @@ gen_opt_minus(jitstate_t* jit, ctx_t* ctx) { // Create a size-exit to fall back to the interpreter // Note: we generate the side-exit before popping operands from the stack - uint8_t* side_exit = ujit_side_exit(jit, ctx); + uint8_t* side_exit = yjit_side_exit(jit, ctx); // TODO: make a helper function for guarding on op-not-redefined // Make sure that minus isn't redefined for integers @@ -955,7 +955,7 @@ gen_opt_minus(jitstate_t* jit, ctx_t* ctx) x86opnd_t dst = ctx_stack_push(ctx, T_FIXNUM); mov(cb, dst, REG0); - return UJIT_KEEP_COMPILING; + return YJIT_KEEP_COMPILING; } static codegen_status_t @@ -963,7 +963,7 @@ gen_opt_plus(jitstate_t* jit, ctx_t* ctx) { // Create a size-exit to fall back to the interpreter // Note: we generate the side-exit before popping operands from the stack - uint8_t* side_exit = ujit_side_exit(jit, ctx); + uint8_t* side_exit = yjit_side_exit(jit, ctx); // TODO: make a helper function for guarding on op-not-redefined // Make sure that plus isn't redefined for integers @@ -1001,7 +1001,7 @@ gen_opt_plus(jitstate_t* jit, ctx_t* ctx) x86opnd_t dst = ctx_stack_push(ctx, T_FIXNUM); mov(cb, dst, REG0); - return UJIT_KEEP_COMPILING; + return YJIT_KEEP_COMPILING; } void @@ -1029,8 +1029,8 @@ gen_branchif(jitstate_t* jit, ctx_t* ctx) { // FIXME: eventually, put VM_CHECK_INTS() only on backward branch targets // Check for interrupts - uint8_t* side_exit = ujit_side_exit(jit, ctx); - ujit_check_ints(cb, side_exit); + uint8_t* side_exit = yjit_side_exit(jit, ctx); + yjit_check_ints(cb, side_exit); // Test if any bit (outside of the Qnil bit) is on // RUBY_Qfalse /* ...0000 0000 */ @@ -1054,7 +1054,7 @@ gen_branchif(jitstate_t* jit, ctx_t* ctx) gen_branchif_branch ); - return UJIT_END_BLOCK; + return YJIT_END_BLOCK; } void @@ -1082,8 +1082,8 @@ gen_branchunless(jitstate_t* jit, ctx_t* ctx) { // FIXME: eventually, put VM_CHECK_INTS() only on backward branch targets // Check for interrupts - uint8_t* side_exit = ujit_side_exit(jit, ctx); - ujit_check_ints(cb, side_exit); + uint8_t* side_exit = yjit_side_exit(jit, ctx); + yjit_check_ints(cb, side_exit); // Test if any bit (outside of the Qnil bit) is on // RUBY_Qfalse /* ...0000 0000 */ @@ -1107,7 +1107,7 @@ gen_branchunless(jitstate_t* jit, ctx_t* ctx) gen_branchunless_branch ); - return UJIT_END_BLOCK; + return YJIT_END_BLOCK; } static codegen_status_t @@ -1115,8 +1115,8 @@ gen_jump(jitstate_t* jit, ctx_t* ctx) { // FIXME: eventually, put VM_CHECK_INTS() only on backward branch targets // Check for interrupts - uint8_t* side_exit = ujit_side_exit(jit, ctx); - ujit_check_ints(cb, side_exit); + uint8_t* side_exit = yjit_side_exit(jit, ctx); + yjit_check_ints(cb, side_exit); // Get the branch target instruction offsets uint32_t jump_idx = jit_next_idx(jit) + (int32_t)jit_get_arg(jit, 0); @@ -1128,7 +1128,7 @@ gen_jump(jitstate_t* jit, ctx_t* ctx) jump_block ); - return UJIT_END_BLOCK; + return YJIT_END_BLOCK; } static void @@ -1136,13 +1136,13 @@ jit_protected_guard(jitstate_t *jit, codeblock_t *cb, const rb_callable_method_e { // Callee is protected. Generate ancestry guard. // See vm_call_method(). - ujit_save_regs(cb); + yjit_save_regs(cb); mov(cb, C_ARG_REGS[0], member_opnd(REG_CFP, rb_control_frame_t, self)); jit_mov_gc_ptr(jit, cb, C_ARG_REGS[1], cme->defined_class); // Note: PC isn't written to current control frame as rb_is_kind_of() shouldn't raise. // VALUE rb_obj_is_kind_of(VALUE obj, VALUE klass); call_ptr(cb, REG0, (void *)&rb_obj_is_kind_of); - ujit_load_regs(cb); + yjit_load_regs(cb); test(cb, RAX, RAX); jz_ptr(cb, COUNTED_EXIT(side_exit, oswb_se_protected_check_failed)); } @@ -1156,27 +1156,27 @@ gen_oswb_cfunc(jitstate_t* jit, ctx_t* ctx, struct rb_call_data * cd, const rb_c if (cfunc->argc < 0 && cfunc->argc != -1) { GEN_COUNTER_INC(cb, oswb_cfunc_ruby_array_varg); - return false; + return YJIT_CANT_COMPILE; } // If the argument count doesn't match if (cfunc->argc >= 0 && cfunc->argc != argc) { GEN_COUNTER_INC(cb, oswb_cfunc_argc_mismatch); - return false; + return YJIT_CANT_COMPILE; } // Don't JIT functions that need C stack arguments for now if (argc + 1 > NUM_C_ARG_REGS) { GEN_COUNTER_INC(cb, oswb_cfunc_toomany_args); - return false; + return YJIT_CANT_COMPILE; } // Create a size-exit to fall back to the interpreter - uint8_t *side_exit = ujit_side_exit(jit, ctx); + uint8_t *side_exit = yjit_side_exit(jit, ctx); // Check for interrupts - ujit_check_ints(cb, side_exit); + yjit_check_ints(cb, side_exit); // Points to the receiver operand on the stack x86opnd_t recv = ctx_stack_opnd(ctx, argc); @@ -1237,7 +1237,7 @@ gen_oswb_cfunc(jitstate_t* jit, ctx_t* ctx, struct rb_call_data * cd, const rb_c lea(cb, REG0, ctx_sp_opnd(ctx, sizeof(VALUE) * 3)); // Put compile time cme into REG1. It's assumed to be valid because we are notified when - // any cme we depend on become outdated. See rb_ujit_method_lookup_change(). + // any cme we depend on become outdated. See rb_yjit_method_lookup_change(). jit_mov_gc_ptr(jit, cb, REG1, (VALUE)cme); // Write method entry at sp[-3] // sp[-3] = me; @@ -1282,9 +1282,9 @@ gen_oswb_cfunc(jitstate_t* jit, ctx_t* ctx, struct rb_call_data * cd, const rb_c } // Verify that we are calling the right function - if (UJIT_CHECK_MODE > 0) { - // Save uJIT registers - ujit_save_regs(cb); + if (YJIT_CHECK_MODE > 0) { + // Save YJIT registers + yjit_save_regs(cb); // Call check_cfunc_dispatch mov(cb, RDI, recv); @@ -1293,12 +1293,12 @@ gen_oswb_cfunc(jitstate_t* jit, ctx_t* ctx, struct rb_call_data * cd, const rb_c jit_mov_gc_ptr(jit, cb, RCX, (VALUE)cme); call_ptr(cb, REG0, (void *)&check_cfunc_dispatch); - // Load uJIT registers - ujit_load_regs(cb); + // Load YJIT registers + yjit_load_regs(cb); } - // Save uJIT registers - ujit_save_regs(cb); + // Save YJIT registers + yjit_save_regs(cb); // Copy SP into RAX because REG_SP will get overwritten lea(cb, RAX, ctx_sp_opnd(ctx, 0)); @@ -1331,11 +1331,11 @@ gen_oswb_cfunc(jitstate_t* jit, ctx_t* ctx, struct rb_call_data * cd, const rb_c // Call the C function // VALUE ret = (cfunc->func)(recv, argv[0], argv[1]); // cfunc comes from compile-time cme->def, which we assume to be stable. - // Invalidation logic is in rb_ujit_method_lookup_change() + // Invalidation logic is in rb_yjit_method_lookup_change() call_ptr(cb, REG0, (void*)cfunc->func); - // Load uJIT registers - ujit_load_regs(cb); + // Load YJIT registers + yjit_load_regs(cb); // Push the return value on the Ruby stack x86opnd_t stack_ret = ctx_stack_push(ctx, T_NONE); @@ -1360,7 +1360,7 @@ gen_oswb_cfunc(jitstate_t* jit, ctx_t* ctx, struct rb_call_data * cd, const rb_c cont_block ); - return UJIT_END_BLOCK; + return YJIT_END_BLOCK; } bool rb_simple_iseq_p(const rb_iseq_t *iseq); @@ -1392,27 +1392,27 @@ gen_oswb_iseq(jitstate_t* jit, ctx_t* ctx, struct rb_call_data * cd, const rb_ca if (num_params != argc) { GEN_COUNTER_INC(cb, oswb_iseq_argc_mismatch); - return false; + return YJIT_CANT_COMPILE; } if (!rb_simple_iseq_p(iseq)) { // Only handle iseqs that have simple parameters. // See vm_callee_setup_arg(). GEN_COUNTER_INC(cb, oswb_iseq_not_simple); - return false; + return YJIT_CANT_COMPILE; } if (vm_ci_flag(cd->ci) & VM_CALL_TAILCALL) { // We can't handle tailcalls GEN_COUNTER_INC(cb, oswb_iseq_tailcall); - return false; + return YJIT_CANT_COMPILE; } // Create a size-exit to fall back to the interpreter - uint8_t* side_exit = ujit_side_exit(jit, ctx); + uint8_t* side_exit = yjit_side_exit(jit, ctx); // Check for interrupts - ujit_check_ints(cb, side_exit); + yjit_check_ints(cb, side_exit); // Points to the receiver operand on the stack x86opnd_t recv = ctx_stack_opnd(ctx, argc); @@ -1474,7 +1474,7 @@ gen_oswb_iseq(jitstate_t* jit, ctx_t* ctx, struct rb_call_data * cd, const rb_ca } // Put compile time cme into REG1. It's assumed to be valid because we are notified when - // any cme we depend on become outdated. See rb_ujit_method_lookup_change(). + // any cme we depend on become outdated. See rb_yjit_method_lookup_change(). jit_mov_gc_ptr(jit, cb, REG1, (VALUE)cme); // Write method entry at sp[-3] // sp[-3] = me; @@ -1547,16 +1547,7 @@ gen_oswb_iseq(jitstate_t* jit, ctx_t* ctx, struct rb_call_data * cd, const rb_ca (blockid_t){ iseq, 0 } ); - // TODO: create stub for call continuation - - // TODO: need to pop args in the caller ctx - - // TODO: stub so we can return to JITted code - //blockid_t cont_block = { jit->iseq, jit_next_insn_idx(jit) }; - - - - return UJIT_END_BLOCK; + return true; } static codegen_status_t @@ -1575,19 +1566,19 @@ gen_opt_send_without_block(jitstate_t* jit, ctx_t* ctx) // Don't JIT calls with keyword splat if (vm_ci_flag(cd->ci) & VM_CALL_KW_SPLAT) { GEN_COUNTER_INC(cb, oswb_kw_splat); - return false; + return YJIT_CANT_COMPILE; } // Don't JIT calls that aren't simple if (!(vm_ci_flag(cd->ci) & VM_CALL_ARGS_SIMPLE)) { GEN_COUNTER_INC(cb, oswb_callsite_not_simple); - return false; + return YJIT_CANT_COMPILE; } // Don't JIT if the inline cache is not set if (!cd->cc || !cd->cc->klass) { GEN_COUNTER_INC(cb, oswb_ic_empty); - return false; + return YJIT_CANT_COMPILE; } const rb_callable_method_entry_t *cme = vm_cc_cme(cd->cc); @@ -1595,7 +1586,7 @@ gen_opt_send_without_block(jitstate_t* jit, ctx_t* ctx) // Don't JIT if the method entry is out of date if (METHOD_ENTRY_INVALIDATED(cme)) { GEN_COUNTER_INC(cb, oswb_invalid_cme); - return false; + return YJIT_CANT_COMPILE; } switch (cme->def->type) { @@ -1605,34 +1596,34 @@ gen_opt_send_without_block(jitstate_t* jit, ctx_t* ctx) return gen_oswb_cfunc(jit, ctx, cd, cme, argc); case VM_METHOD_TYPE_ATTRSET: GEN_COUNTER_INC(cb, oswb_ivar_set_method); - return false; + return YJIT_CANT_COMPILE; case VM_METHOD_TYPE_BMETHOD: GEN_COUNTER_INC(cb, oswb_bmethod); - return false; + return YJIT_CANT_COMPILE; case VM_METHOD_TYPE_IVAR: GEN_COUNTER_INC(cb, oswb_ivar_get_method); - return false; + return YJIT_CANT_COMPILE; case VM_METHOD_TYPE_ZSUPER: GEN_COUNTER_INC(cb, oswb_zsuper_method); - return false; + return YJIT_CANT_COMPILE; case VM_METHOD_TYPE_ALIAS: GEN_COUNTER_INC(cb, oswb_alias_method); - return false; + return YJIT_CANT_COMPILE; case VM_METHOD_TYPE_UNDEF: GEN_COUNTER_INC(cb, oswb_undef_method); - return false; + return YJIT_CANT_COMPILE; case VM_METHOD_TYPE_NOTIMPLEMENTED: GEN_COUNTER_INC(cb, oswb_not_implemented_method); - return false; + return YJIT_CANT_COMPILE; case VM_METHOD_TYPE_OPTIMIZED: GEN_COUNTER_INC(cb, oswb_optimized_method); - return false; + return YJIT_CANT_COMPILE; case VM_METHOD_TYPE_MISSING: GEN_COUNTER_INC(cb, oswb_missing_method); - return false; + return YJIT_CANT_COMPILE; case VM_METHOD_TYPE_REFINED: GEN_COUNTER_INC(cb, oswb_refined_method); - return false; + return YJIT_CANT_COMPILE; // no default case so compiler issues a warning if this is not exhaustive } } @@ -1644,7 +1635,7 @@ gen_leave(jitstate_t* jit, ctx_t* ctx) RUBY_ASSERT(ctx->stack_size == 1); // Create a size-exit to fall back to the interpreter - uint8_t* side_exit = ujit_side_exit(jit, ctx); + uint8_t* side_exit = yjit_side_exit(jit, ctx); // Load environment pointer EP from CFP mov(cb, REG0, member_opnd(REG_CFP, rb_control_frame_t, ep)); @@ -1655,7 +1646,7 @@ gen_leave(jitstate_t* jit, ctx_t* ctx) jnz_ptr(cb, COUNTED_EXIT(side_exit, leave_se_finish_frame)); // Check for interrupts - ujit_check_ints(cb, COUNTED_EXIT(side_exit, leave_se_interrupt)); + yjit_check_ints(cb, COUNTED_EXIT(side_exit, leave_se_interrupt)); // Load the return value mov(cb, REG0, ctx_stack_pop(ctx, 1)); @@ -1687,7 +1678,7 @@ gen_leave(jitstate_t* jit, ctx_t* ctx) cb_link_labels(cb); cb_write_post_call_bytes(cb); - return UJIT_END_BLOCK; + return YJIT_END_BLOCK; } RUBY_EXTERN rb_serial_t ruby_vm_global_constant_state; @@ -1702,24 +1693,24 @@ gen_opt_getinlinecache(jitstate_t *jit, ctx_t *ctx) struct iseq_inline_constant_cache_entry *ice = ic->entry; if (!ice) { // Cache not filled - return UJIT_CANT_COMPILE; + return YJIT_CANT_COMPILE; } if (ice->ic_serial != ruby_vm_global_constant_state) { // Cache miss at compile time. - return UJIT_CANT_COMPILE; + return YJIT_CANT_COMPILE; } if (ice->ic_cref) { // Only compile for caches that don't care about lexical scope. - return UJIT_CANT_COMPILE; + return YJIT_CANT_COMPILE; } // Optimize for single ractor mode. // FIXME: This leaks when st_insert raises NoMemoryError - if (!assume_single_ractor_mode(jit->block)) return UJIT_CANT_COMPILE; + if (!assume_single_ractor_mode(jit->block)) return YJIT_CANT_COMPILE; // Invalidate output code on any and all constant writes // FIXME: This leaks when st_insert raises NoMemoryError - if (!assume_stable_global_constant_state(jit->block)) return UJIT_CANT_COMPILE; + if (!assume_stable_global_constant_state(jit->block)) return YJIT_CANT_COMPILE; x86opnd_t stack_top = ctx_stack_push(ctx, T_NONE); jit_mov_gc_ptr(jit, cb, REG0, ice->value); @@ -1732,10 +1723,10 @@ gen_opt_getinlinecache(jitstate_t *jit, ctx_t *ctx) (blockid_t){ .iseq = jit->iseq, .idx = jump_idx } ); - return UJIT_END_BLOCK; + return YJIT_END_BLOCK; } -void ujit_reg_op(int opcode, codegen_fn gen_fn) +void yjit_reg_op(int opcode, codegen_fn gen_fn) { // Check that the op wasn't previously registered st_data_t st_gen; @@ -1747,7 +1738,7 @@ void ujit_reg_op(int opcode, codegen_fn gen_fn) } void -ujit_init_codegen(void) +yjit_init_codegen(void) { // Initialize the code blocks uint32_t mem_size = 128 * 1024 * 1024; @@ -1761,32 +1752,32 @@ ujit_init_codegen(void) gen_fns = rb_st_init_numtable(); // Map YARV opcodes to the corresponding codegen functions - ujit_reg_op(BIN(dup), gen_dup); - ujit_reg_op(BIN(nop), gen_nop); - ujit_reg_op(BIN(pop), gen_pop); - ujit_reg_op(BIN(putnil), gen_putnil); - ujit_reg_op(BIN(putobject), gen_putobject); - ujit_reg_op(BIN(putobject_INT2FIX_0_), gen_putobject_int2fix); - ujit_reg_op(BIN(putobject_INT2FIX_1_), gen_putobject_int2fix); - ujit_reg_op(BIN(putself), gen_putself); - ujit_reg_op(BIN(getlocal_WC_0), gen_getlocal_wc0); - ujit_reg_op(BIN(getlocal_WC_1), gen_getlocal_wc1); - ujit_reg_op(BIN(setlocal_WC_0), gen_setlocal_wc0); - ujit_reg_op(BIN(getinstancevariable), gen_getinstancevariable); - ujit_reg_op(BIN(setinstancevariable), gen_setinstancevariable); - ujit_reg_op(BIN(opt_lt), gen_opt_lt); - ujit_reg_op(BIN(opt_le), gen_opt_le); - ujit_reg_op(BIN(opt_ge), gen_opt_ge); - ujit_reg_op(BIN(opt_aref), gen_opt_aref); - ujit_reg_op(BIN(opt_and), gen_opt_and); - ujit_reg_op(BIN(opt_minus), gen_opt_minus); - ujit_reg_op(BIN(opt_plus), gen_opt_plus); + yjit_reg_op(BIN(dup), gen_dup); + yjit_reg_op(BIN(nop), gen_nop); + yjit_reg_op(BIN(pop), gen_pop); + yjit_reg_op(BIN(putnil), gen_putnil); + yjit_reg_op(BIN(putobject), gen_putobject); + yjit_reg_op(BIN(putobject_INT2FIX_0_), gen_putobject_int2fix); + yjit_reg_op(BIN(putobject_INT2FIX_1_), gen_putobject_int2fix); + yjit_reg_op(BIN(putself), gen_putself); + yjit_reg_op(BIN(getlocal_WC_0), gen_getlocal_wc0); + yjit_reg_op(BIN(getlocal_WC_1), gen_getlocal_wc1); + yjit_reg_op(BIN(setlocal_WC_0), gen_setlocal_wc0); + yjit_reg_op(BIN(getinstancevariable), gen_getinstancevariable); + yjit_reg_op(BIN(setinstancevariable), gen_setinstancevariable); + yjit_reg_op(BIN(opt_lt), gen_opt_lt); + yjit_reg_op(BIN(opt_le), gen_opt_le); + yjit_reg_op(BIN(opt_ge), gen_opt_ge); + yjit_reg_op(BIN(opt_aref), gen_opt_aref); + yjit_reg_op(BIN(opt_and), gen_opt_and); + yjit_reg_op(BIN(opt_minus), gen_opt_minus); + yjit_reg_op(BIN(opt_plus), gen_opt_plus); // Map branch instruction opcodes to codegen functions - ujit_reg_op(BIN(opt_getinlinecache), gen_opt_getinlinecache); - ujit_reg_op(BIN(branchif), gen_branchif); - ujit_reg_op(BIN(branchunless), gen_branchunless); - ujit_reg_op(BIN(jump), gen_jump); - ujit_reg_op(BIN(opt_send_without_block), gen_opt_send_without_block); - ujit_reg_op(BIN(leave), gen_leave); + yjit_reg_op(BIN(opt_getinlinecache), gen_opt_getinlinecache); + yjit_reg_op(BIN(branchif), gen_branchif); + yjit_reg_op(BIN(branchunless), gen_branchunless); + yjit_reg_op(BIN(jump), gen_jump); + yjit_reg_op(BIN(opt_send_without_block), gen_opt_send_without_block); + yjit_reg_op(BIN(leave), gen_leave); } diff --git a/ujit_codegen.h b/yjit_codegen.h index 63f215f9ed..f5be7c4de6 100644 --- a/ujit_codegen.h +++ b/yjit_codegen.h @@ -1,8 +1,8 @@ -#ifndef UJIT_CODEGEN_H -#define UJIT_CODEGEN_H 1 +#ifndef YJIT_CODEGEN_H +#define YJIT_CODEGEN_H 1 #include "stddef.h" -#include "ujit_core.h" +#include "yjit_core.h" // Code blocks we generate code into extern codeblock_t *cb; @@ -30,18 +30,18 @@ typedef struct JITState } jitstate_t; typedef enum codegen_status { - UJIT_END_BLOCK, - UJIT_KEEP_COMPILING, - UJIT_CANT_COMPILE + YJIT_END_BLOCK, + YJIT_KEEP_COMPILING, + YJIT_CANT_COMPILE } codegen_status_t; // Code generation function signature typedef codegen_status_t (*codegen_fn)(jitstate_t* jit, ctx_t* ctx); -uint8_t* ujit_entry_prologue(); +uint8_t* yjit_entry_prologue(); -void ujit_gen_block(ctx_t* ctx, block_t* block, rb_execution_context_t* ec); +void yjit_gen_block(ctx_t* ctx, block_t* block, rb_execution_context_t* ec); -void ujit_init_codegen(void); +void yjit_init_codegen(void); -#endif // #ifndef UJIT_CODEGEN_H +#endif // #ifndef YJIT_CODEGEN_H diff --git a/ujit_core.c b/yjit_core.c index c1d2bfb650..307b28f64d 100644 --- a/ujit_core.c +++ b/yjit_core.c @@ -4,11 +4,11 @@ #include "insns.inc" #include "insns_info.inc" #include "vm_sync.h" -#include "ujit_asm.h" -#include "ujit_utils.h" -#include "ujit_iface.h" -#include "ujit_core.h" -#include "ujit_codegen.h" +#include "yjit_asm.h" +#include "yjit_utils.h" +#include "yjit_iface.h" +#include "yjit_core.h" +#include "yjit_codegen.h" // Maximum number of versions per block #define MAX_VERSIONS 4 @@ -154,17 +154,17 @@ int ctx_diff(const ctx_t* src, const ctx_t* dst) } // Get all blocks for a particular place in an iseq. -static rb_ujit_block_array_t +static rb_yjit_block_array_t get_version_array(const rb_iseq_t *iseq, unsigned idx) { struct rb_iseq_constant_body *body = iseq->body; - if (rb_darray_size(body->ujit_blocks) == 0) { + if (rb_darray_size(body->yjit_blocks) == 0) { return NULL; } - RUBY_ASSERT((unsigned)rb_darray_size(body->ujit_blocks) == body->iseq_size); - return rb_darray_get(body->ujit_blocks, idx); + RUBY_ASSERT((unsigned)rb_darray_size(body->yjit_blocks) == body->iseq_size); + return rb_darray_get(body->yjit_blocks, idx); } // Count the number of block versions matching a given blockid @@ -182,14 +182,14 @@ add_block_version(blockid_t blockid, block_t* block) const rb_iseq_t *iseq = block->blockid.iseq; struct rb_iseq_constant_body *body = iseq->body; - // Ensure ujit_blocks is initialized for this iseq - if (rb_darray_size(body->ujit_blocks) == 0) { - // Initialize ujit_blocks to be as wide as body->iseq_encoded + // Ensure yjit_blocks is initialized for this iseq + if (rb_darray_size(body->yjit_blocks) == 0) { + // Initialize yjit_blocks to be as wide as body->iseq_encoded int32_t casted = (int32_t)body->iseq_size; if ((unsigned)casted != body->iseq_size) { rb_bug("iseq too large"); } - if (!rb_darray_make(&body->ujit_blocks, casted)) { + if (!rb_darray_make(&body->yjit_blocks, casted)) { rb_bug("allocation failed"); } @@ -199,8 +199,8 @@ add_block_version(blockid_t blockid, block_t* block) #endif } - RUBY_ASSERT((int32_t)blockid.idx < rb_darray_size(body->ujit_blocks)); - rb_ujit_block_array_t *block_array_ref = rb_darray_ref(body->ujit_blocks, blockid.idx); + RUBY_ASSERT((int32_t)blockid.idx < rb_darray_size(body->yjit_blocks)); + rb_yjit_block_array_t *block_array_ref = rb_darray_ref(body->yjit_blocks, blockid.idx); // Add the new block if (!rb_darray_append(block_array_ref, block)) { @@ -229,7 +229,7 @@ add_block_version(blockid_t blockid, block_t* block) // Retrieve a basic block version for an (iseq, idx) tuple block_t* find_block_version(blockid_t blockid, const ctx_t* ctx) { - rb_ujit_block_array_t versions = get_version_array(blockid.iseq, blockid.idx); + rb_yjit_block_array_t versions = get_version_array(blockid.iseq, blockid.idx); // Best match found block_t* best_version = NULL; @@ -252,7 +252,7 @@ block_t* find_block_version(blockid_t blockid, const ctx_t* ctx) } void -ujit_branches_update_references(void) +yjit_branches_update_references(void) { for (uint32_t i = 0; i < num_branches; i++) { branch_entries[i].targets[0].iseq = (const void *)rb_gc_location((VALUE)branch_entries[i].targets[0].iseq); @@ -276,7 +276,7 @@ block_t* gen_block_version(blockid_t blockid, const ctx_t* start_ctx, rb_executi block_t* block = first_block; // Generate code for the first block - ujit_gen_block(ctx, block, ec); + yjit_gen_block(ctx, block, ec); // Keep track of the new block version add_block_version(block->blockid, block); @@ -310,7 +310,7 @@ block_t* gen_block_version(blockid_t blockid, const ctx_t* start_ctx, rb_executi memcpy(&block->ctx, ctx, sizeof(ctx_t)); // Generate code for the current block - ujit_gen_block(ctx, block, ec); + yjit_gen_block(ctx, block, ec); // Keep track of the new block version add_block_version(block->blockid, block); @@ -332,7 +332,7 @@ uint8_t* gen_entry_point(const rb_iseq_t *iseq, uint32_t insn_idx, rb_execution_ blockid_t blockid = { iseq, insn_idx }; // Write the interpreter entry prologue - uint8_t* code_ptr = ujit_entry_prologue(); + uint8_t* code_ptr = yjit_entry_prologue(); // Try to generate code for the entry block block_t* block = gen_block_version(blockid, &DEFAULT_CTX, ec); @@ -446,7 +446,7 @@ uint8_t* get_branch_target( // branch_stub_hit(uint32_t branch_idx, uint32_t target_idx) uint8_t* stub_addr = cb_get_ptr(ocb, ocb->write_pos); - // Save the ujit registers + // Save the yjit registers push(ocb, REG_CFP); push(ocb, REG_EC); push(ocb, REG_SP); @@ -458,7 +458,7 @@ uint8_t* get_branch_target( mov(ocb, C_ARG_REGS[0], imm_opnd(branch_idx)); call_ptr(ocb, REG0, (void *)&branch_stub_hit); - // Restore the ujit registers + // Restore the yjit registers pop(ocb, REG_SP); pop(ocb, REG_SP); pop(ocb, REG_EC); @@ -646,10 +646,10 @@ void defer_compilation( // Remove all references to a block then free it. void -ujit_free_block(block_t *block) +yjit_free_block(block_t *block) { - ujit_unlink_method_lookup_dependency(block); - ujit_block_assumptions_free(block); + yjit_unlink_method_lookup_dependency(block); + yjit_block_assumptions_free(block); rb_darray_free(block->incoming); rb_darray_free(block->gc_object_offsets); @@ -659,7 +659,7 @@ ujit_free_block(block_t *block) // Remove a block version without reordering the version array static bool -block_array_remove(rb_ujit_block_array_t block_array, block_t *block) +block_array_remove(rb_yjit_block_array_t block_array, block_t *block) { bool after_target = false; block_t **element; @@ -687,7 +687,7 @@ invalidate_block_version(block_t* block) // fprintf(stderr, "block=%p\n", block); // Remove this block from the version array - rb_ujit_block_array_t versions = get_version_array(iseq, block->blockid.idx); + rb_yjit_block_array_t versions = get_version_array(iseq, block->blockid.idx); RB_UNUSED_VAR(bool removed); removed = block_array_remove(versions, block); RUBY_ASSERT(removed); @@ -732,7 +732,7 @@ invalidate_block_version(block_t* block) if (target_next && branch->end_pos > block->end_pos) { - rb_bug("ujit invalidate rewrote branch past block end"); + rb_bug("yjit invalidate rewrote branch past block end"); } } @@ -742,7 +742,7 @@ invalidate_block_version(block_t* block) VALUE* entry_pc = iseq_pc_at_idx(iseq, idx); int entry_opcode = opcode_at_pc(iseq, entry_pc); - // TODO: unmap_addr2insn in ujit_iface.c? Maybe we can write a function to encompass this logic? + // TODO: unmap_addr2insn in yjit_iface.c? Maybe we can write a function to encompass this logic? // Should check how it's used in exit and side-exit const void * const *handler_table = rb_vm_get_insns_address_table(); void* handler_addr = (void*)handler_table[entry_opcode]; @@ -755,13 +755,13 @@ invalidate_block_version(block_t* block) // FIXME: // Call continuation addresses on the stack can also be atomically replaced by jumps going to the stub. - ujit_free_block(block); + yjit_free_block(block); // fprintf(stderr, "invalidation done\n"); } void -ujit_init_core(void) +yjit_init_core(void) { // Nothing yet } diff --git a/ujit_core.h b/yjit_core.h index e555b432a2..05e4db0ac3 100644 --- a/ujit_core.h +++ b/yjit_core.h @@ -1,17 +1,17 @@ -#ifndef UJIT_CORE_H -#define UJIT_CORE_H 1 +#ifndef YJIT_CORE_H +#define YJIT_CORE_H 1 #include "stddef.h" -#include "ujit_asm.h" +#include "yjit_asm.h" -// Register uJIT receives the CFP and EC into +// Register YJIT receives the CFP and EC into #define REG_CFP RDI #define REG_EC RSI -// Register uJIT loads the SP into +// Register YJIT loads the SP into #define REG_SP RDX -// Scratch registers used by uJIT +// Scratch registers used by YJIT #define REG0 RAX #define REG1 RCX #define REG0_32 EAX @@ -109,7 +109,7 @@ Basic block version Represents a portion of an iseq compiled with a given context Note: care must be taken to minimize the size of block_t objects */ -typedef struct ujit_block_version +typedef struct yjit_block_version { // Bytecode sequence (iseq, idx) this is a version of blockid_t blockid; @@ -148,8 +148,8 @@ int ctx_diff(const ctx_t* src, const ctx_t* dst); block_t* find_block_version(blockid_t blockid, const ctx_t* ctx); block_t* gen_block_version(blockid_t blockid, const ctx_t* ctx, rb_execution_context_t *ec); uint8_t* gen_entry_point(const rb_iseq_t *iseq, uint32_t insn_idx, rb_execution_context_t *ec); -void ujit_free_block(block_t *block); -void ujit_branches_update_references(void); +void yjit_free_block(block_t *block); +void yjit_branches_update_references(void); void gen_branch( const ctx_t* src_ctx, @@ -173,6 +173,6 @@ void defer_compilation( void invalidate_block_version(block_t* block); -void ujit_init_core(void); +void yjit_init_core(void); -#endif // #ifndef UJIT_CORE_H +#endif // #ifndef YJIT_CORE_H diff --git a/ujit_iface.c b/yjit_iface.c index d97418a986..6c43a53728 100644 --- a/ujit_iface.c +++ b/yjit_iface.c @@ -8,27 +8,27 @@ #include "internal/compile.h" #include "internal/class.h" #include "insns_info.inc" -#include "ujit.h" -#include "ujit_iface.h" -#include "ujit_codegen.h" -#include "ujit_core.h" -#include "ujit_hooks.inc" +#include "yjit.h" +#include "yjit_iface.h" +#include "yjit_codegen.h" +#include "yjit_core.h" +#include "yjit_hooks.inc" #include "darray.h" #if HAVE_LIBCAPSTONE #include <capstone/capstone.h> #endif -static VALUE mUjit; -static VALUE cUjitBlock; -static VALUE cUjitDisasm; -static VALUE cUjitDisasmInsn; +static VALUE mYjit; +static VALUE cYjitBlock; +static VALUE cYjitDisasm; +static VALUE cYjitDisasmInsn; #if RUBY_DEBUG static int64_t vm_insns_count = 0; static int64_t exit_op_count[VM_INSTRUCTION_SIZE] = { 0 }; int64_t rb_compiled_iseq_count = 0; -struct rb_ujit_runtime_counters ujit_runtime_counters = { 0 }; +struct rb_yjit_runtime_counters yjit_runtime_counters = { 0 }; #endif // Machine code blocks (executable memory) @@ -38,28 +38,28 @@ extern codeblock_t *ocb; // Hash table of encoded instructions extern st_table *rb_encoded_insn_data; -struct rb_ujit_options rb_ujit_opts; +struct rb_yjit_options rb_yjit_opts; -static const rb_data_type_t ujit_block_type = { - "UJIT/Block", +static const rb_data_type_t yjit_block_type = { + "YJIT/Block", {0, 0, 0, }, 0, 0, RUBY_TYPED_FREE_IMMEDIATELY }; -// Write the uJIT entry point pre-call bytes +// Write the YJIT 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]); + for (size_t i = 0; i < sizeof(yjit_with_ec_pre_call_bytes); ++i) + cb_write_byte(cb, yjit_with_ec_pre_call_bytes[i]); } -// Write the uJIT exit post-call bytes +// Write the YJIT 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]); + for (size_t i = 0; i < sizeof(yjit_with_ec_post_call_bytes); ++i) + cb_write_byte(cb, yjit_with_ec_post_call_bytes[i]); } // Get the PC for a given index in an iseq @@ -84,7 +84,7 @@ map_addr2insn(void *code_ptr, int insn) st_insert(rb_encoded_insn_data, (st_data_t)code_ptr, encoded_insn_data); } else { - rb_bug("ujit: failed to find info for original instruction while dealing with addr2insn"); + rb_bug("yjit: failed to find info for original instruction while dealing with addr2insn"); } } @@ -105,7 +105,7 @@ void check_cfunc_dispatch(VALUE receiver, struct rb_call_data *cd, void *callee, rb_callable_method_entry_t *compile_time_cme) { if (METHOD_ENTRY_INVALIDATED(compile_time_cme)) { - rb_bug("ujit: output code uses invalidated cme %p", (void *)compile_time_cme); + rb_bug("yjit: output code uses invalidated cme %p", (void *)compile_time_cme); } bool callee_correct = false; @@ -117,7 +117,7 @@ check_cfunc_dispatch(VALUE receiver, struct rb_call_data *cd, void *callee, rb_c } } if (!callee_correct) { - rb_bug("ujit: output code calls wrong method cd->cc->klass: %p", (void *)cd->cc->klass); + rb_bug("yjit: output code calls wrong method cd->cc->klass: %p", (void *)cd->cc->klass); } } @@ -137,12 +137,12 @@ cfunc_needs_frame(const rb_method_cfunc_t *cfunc) } // GC root for interacting with the GC -struct ujit_root_struct { +struct yjit_root_struct { int unused; // empty structs are not legal in C99 }; static void -block_array_shuffle_remove(rb_ujit_block_array_t blocks, block_t *to_remove) { +block_array_shuffle_remove(rb_yjit_block_array_t blocks, block_t *to_remove) { block_t **elem; rb_darray_foreach(blocks, i, elem) { if (*elem == to_remove) { @@ -162,12 +162,12 @@ add_lookup_dependency_i(st_data_t *key, st_data_t *value, st_data_t data, int ex { block_t *new_block = (block_t *)data; - rb_ujit_block_array_t blocks = NULL; + rb_yjit_block_array_t blocks = NULL; if (existing) { - blocks = (rb_ujit_block_array_t)*value; + blocks = (rb_yjit_block_array_t)*value; } if (!rb_darray_append(&blocks, new_block)) { - rb_bug("ujit: failed to add method lookup dependency"); // TODO: we could bail out of compiling instead + rb_bug("yjit: failed to add method lookup dependency"); // TODO: we could bail out of compiling instead } *value = (st_data_t)blocks; @@ -210,7 +210,7 @@ assume_stable_global_constant_state(block_t *block) { } static int -ujit_root_mark_i(st_data_t k, st_data_t v, st_data_t ignore) +yjit_root_mark_i(st_data_t k, st_data_t v, st_data_t ignore) { // Lifetime notes: cc and cme get added in pairs into the table. One of // them should become invalid before dying. When one of them invalidate we @@ -237,7 +237,7 @@ replace_all(st_data_t key, st_data_t value, st_data_t argp, int error) // GC callback during compaction static void -ujit_root_update_references(void *ptr) +yjit_root_update_references(void *ptr) { if (method_lookup_dependency) { if (st_foreach_with_replace(method_lookup_dependency, replace_all, method_lookup_dep_table_update_keys, 0)) { @@ -245,26 +245,26 @@ ujit_root_update_references(void *ptr) } } - ujit_branches_update_references(); + yjit_branches_update_references(); } // GC callback during mark phase static void -ujit_root_mark(void *ptr) +yjit_root_mark(void *ptr) { if (method_lookup_dependency) { - st_foreach(method_lookup_dependency, ujit_root_mark_i, 0); + st_foreach(method_lookup_dependency, yjit_root_mark_i, 0); } } static void -ujit_root_free(void *ptr) +yjit_root_free(void *ptr) { // Do nothing. The root lives as long as the process. } static size_t -ujit_root_memsize(const void *ptr) +yjit_root_memsize(const void *ptr) { // Count off-gc-heap allocation size of the dependency table return st_memsize(method_lookup_dependency); // TODO: more accurate accounting @@ -273,15 +273,15 @@ ujit_root_memsize(const void *ptr) // Custom type for interacting with the GC // TODO: compaction support // TODO: make this write barrier protected -static const rb_data_type_t ujit_root_type = { - "ujit_root", - {ujit_root_mark, ujit_root_free, ujit_root_memsize, ujit_root_update_references}, +static const rb_data_type_t yjit_root_type = { + "yjit_root", + {yjit_root_mark, yjit_root_free, yjit_root_memsize, yjit_root_update_references}, 0, 0, RUBY_TYPED_FREE_IMMEDIATELY }; // Callback when cme or cc become invalid void -rb_ujit_method_lookup_change(VALUE cme_or_cc) +rb_yjit_method_lookup_change(VALUE cme_or_cc) { if (!method_lookup_dependency) return; @@ -293,7 +293,7 @@ rb_ujit_method_lookup_change(VALUE cme_or_cc) // Invalidate all regions that depend on the cme or cc st_data_t key = (st_data_t)cme_or_cc, image; if (st_delete(method_lookup_dependency, &key, &image)) { - rb_ujit_block_array_t array = (void *)image; + rb_yjit_block_array_t array = (void *)image; block_t **elem; rb_darray_foreach(array, i, elem) { @@ -312,7 +312,7 @@ remove_method_lookup_dependency(VALUE cc_or_cme, block_t *block) { st_data_t key = (st_data_t)cc_or_cme, image; if (st_lookup(method_lookup_dependency, key, &image)) { - rb_ujit_block_array_t array = (void *)image; + rb_yjit_block_array_t array = (void *)image; block_array_shuffle_remove(array, block); @@ -324,14 +324,14 @@ remove_method_lookup_dependency(VALUE cc_or_cme, block_t *block) } void -ujit_unlink_method_lookup_dependency(block_t *block) +yjit_unlink_method_lookup_dependency(block_t *block) { if (block->dependencies.cc) remove_method_lookup_dependency(block->dependencies.cc, block); if (block->dependencies.cme) remove_method_lookup_dependency(block->dependencies.cme, block); } void -ujit_block_assumptions_free(block_t *block) +yjit_block_assumptions_free(block_t *block) { st_data_t as_st_data = (st_data_t)block; if (blocks_assuming_stable_global_constant_state) { @@ -344,7 +344,7 @@ ujit_block_assumptions_free(block_t *block) } void -rb_ujit_compile_iseq(const rb_iseq_t *iseq, rb_execution_context_t *ec) +rb_yjit_compile_iseq(const rb_iseq_t *iseq, rb_execution_context_t *ec) { #if OPT_DIRECT_THREADED_CODE || OPT_CALL_THREADED_CODE RB_VM_LOCK_ENTER(); @@ -365,14 +365,14 @@ rb_ujit_compile_iseq(const rb_iseq_t *iseq, rb_execution_context_t *ec) #endif } -struct ujit_block_itr { +struct yjit_block_itr { const rb_iseq_t *iseq; VALUE list; }; -/* Get a list of the UJIT blocks associated with `rb_iseq` */ +/* Get a list of the YJIT blocks associated with `rb_iseq` */ static VALUE -ujit_blocks_for(VALUE mod, VALUE rb_iseq) +yjit_blocks_for(VALUE mod, VALUE rb_iseq) { if (CLASS_OF(rb_iseq) != rb_cISeq) { return rb_ary_new(); @@ -381,13 +381,13 @@ ujit_blocks_for(VALUE mod, VALUE rb_iseq) const rb_iseq_t *iseq = rb_iseqw_to_iseq(rb_iseq); VALUE all_versions = rb_ary_new(); - rb_darray_for(iseq->body->ujit_blocks, version_array_idx) { - rb_ujit_block_array_t versions = rb_darray_get(iseq->body->ujit_blocks, version_array_idx); + rb_darray_for(iseq->body->yjit_blocks, version_array_idx) { + rb_yjit_block_array_t versions = rb_darray_get(iseq->body->yjit_blocks, version_array_idx); rb_darray_for(versions, block_idx) { block_t *block = rb_darray_get(versions, block_idx); - VALUE rb_block = TypedData_Wrap_Struct(cUjitBlock, &ujit_block_type, block); + VALUE rb_block = TypedData_Wrap_Struct(cYjitBlock, &yjit_block_type, block); rb_ary_push(all_versions, rb_block); } } @@ -395,22 +395,22 @@ ujit_blocks_for(VALUE mod, VALUE rb_iseq) return all_versions; } -/* Get the address of the the code associated with a UJIT::Block */ +/* Get the address of the the code associated with a YJIT::Block */ static VALUE block_address(VALUE self) { block_t * block; - TypedData_Get_Struct(self, block_t, &ujit_block_type, block); + TypedData_Get_Struct(self, block_t, &yjit_block_type, block); uint8_t* code_addr = cb_get_ptr(cb, block->start_pos); return LONG2NUM((intptr_t)code_addr); } -/* Get the machine code for UJIT::Block as a binary string */ +/* Get the machine code for YJIT::Block as a binary string */ static VALUE block_code(VALUE self) { block_t * block; - TypedData_Get_Struct(self, block_t, &ujit_block_type, block); + TypedData_Get_Struct(self, block_t, &yjit_block_type, block); return (VALUE)rb_str_new( (const char*)cb->mem_block + block->start_pos, @@ -419,30 +419,30 @@ block_code(VALUE self) } /* Get the start index in the Instruction Sequence that corresponds to this - * UJIT::Block */ + * YJIT::Block */ static VALUE iseq_start_index(VALUE self) { block_t * block; - TypedData_Get_Struct(self, block_t, &ujit_block_type, block); + TypedData_Get_Struct(self, block_t, &yjit_block_type, block); return INT2NUM(block->blockid.idx); } /* Get the end index in the Instruction Sequence that corresponds to this - * UJIT::Block */ + * YJIT::Block */ static VALUE iseq_end_index(VALUE self) { block_t * block; - TypedData_Get_Struct(self, block_t, &ujit_block_type, block); + TypedData_Get_Struct(self, block_t, &yjit_block_type, block); return INT2NUM(block->end_idx); } /* Called when a basic operation is redefined */ void -rb_ujit_bop_redefined(VALUE klass, const rb_method_entry_t *me, enum ruby_basic_operators bop) +rb_yjit_bop_redefined(VALUE klass, const rb_method_entry_t *me, enum ruby_basic_operators bop) { //fprintf(stderr, "bop redefined\n"); } @@ -456,7 +456,7 @@ block_invalidation_iterator(st_data_t key, st_data_t value, st_data_t data) { /* Called when the constant state changes */ void -rb_ujit_constant_state_changed(void) +rb_yjit_constant_state_changed(void) { if (blocks_assuming_stable_global_constant_state) { st_foreach(blocks_assuming_stable_global_constant_state, block_invalidation_iterator, 0); @@ -464,7 +464,7 @@ rb_ujit_constant_state_changed(void) } void -rb_ujit_before_ractor_spawn(void) +rb_yjit_before_ractor_spawn(void) { if (blocks_assuming_single_ractor_mode) { st_foreach(blocks_assuming_single_ractor_mode, block_invalidation_iterator, 0); @@ -472,29 +472,29 @@ rb_ujit_before_ractor_spawn(void) } #if HAVE_LIBCAPSTONE -static const rb_data_type_t ujit_disasm_type = { - "UJIT/Disasm", +static const rb_data_type_t yjit_disasm_type = { + "YJIT/Disasm", {0, (void(*)(void *))cs_close, 0, }, 0, 0, RUBY_TYPED_FREE_IMMEDIATELY }; static VALUE -ujit_disasm_init(VALUE klass) +yjit_disasm_init(VALUE klass) { csh * handle; - VALUE disasm = TypedData_Make_Struct(klass, csh, &ujit_disasm_type, handle); + VALUE disasm = TypedData_Make_Struct(klass, csh, &yjit_disasm_type, handle); cs_open(CS_ARCH_X86, CS_MODE_64, handle); return disasm; } static VALUE -ujit_disasm(VALUE self, VALUE code, VALUE from) +yjit_disasm(VALUE self, VALUE code, VALUE from) { size_t count; csh * handle; cs_insn *insns; - TypedData_Get_Struct(self, csh, &ujit_disasm_type, handle); + TypedData_Get_Struct(self, csh, &yjit_disasm_type, handle); count = cs_disasm(*handle, (uint8_t*)StringValuePtr(code), RSTRING_LEN(code), NUM2INT(from), 0, &insns); VALUE insn_list = rb_ary_new_capa(count); @@ -502,7 +502,7 @@ ujit_disasm(VALUE self, VALUE code, VALUE from) VALUE vals = rb_ary_new_from_args(3, LONG2NUM(insns[i].address), rb_str_new2(insns[i].mnemonic), rb_str_new2(insns[i].op_str)); - rb_ary_push(insn_list, rb_struct_alloc(cUjitDisasmInsn, vals)); + rb_ary_push(insn_list, rb_struct_alloc(cYjitDisasmInsn, vals)); } cs_free(insns, count); return insn_list; @@ -512,27 +512,27 @@ ujit_disasm(VALUE self, VALUE code, VALUE from) static VALUE at_exit_print_stats(RB_BLOCK_CALL_FUNC_ARGLIST(yieldarg, data)) { - // Defined in ujit.rb - rb_funcall(mUjit, rb_intern("_print_stats"), 0); + // Defined in yjit.rb + rb_funcall(mYjit, rb_intern("_print_stats"), 0); return Qnil; } -// Primitive called in ujit.rb. Export all runtime counters as a Ruby hash. +// Primitive called in yjit.rb. Export all runtime counters as a Ruby hash. static VALUE get_stat_counters(rb_execution_context_t *ec, VALUE self) { #if RUBY_DEBUG - if (!rb_ujit_opts.gen_stats) return Qnil; + if (!rb_yjit_opts.gen_stats) return Qnil; VALUE hash = rb_hash_new(); RB_VM_LOCK_ENTER(); { - int64_t *counter_reader = (int64_t *)&ujit_runtime_counters; - int64_t *counter_reader_end = &ujit_runtime_counters.last_member; + int64_t *counter_reader = (int64_t *)&yjit_runtime_counters; + int64_t *counter_reader_end = &yjit_runtime_counters.last_member; // Iterate through comma separated counter name list - char *name_reader = ujit_counter_names; - char *counter_name_end = ujit_counter_names + sizeof(ujit_counter_names); + char *name_reader = yjit_counter_names; + char *counter_name_end = yjit_counter_names + sizeof(yjit_counter_names); while (name_reader < counter_name_end && counter_reader < counter_reader_end) { if (*name_reader == ',' || *name_reader == ' ') { name_reader++; @@ -564,7 +564,7 @@ get_stat_counters(rb_execution_context_t *ec, VALUE self) #endif // if RUBY_DEBUG } -// Primitive called in ujit.rb. Zero out all the counters. +// Primitive called in yjit.rb. Zero out all the counters. static VALUE reset_stats_bang(rb_execution_context_t *ec, VALUE self) { @@ -572,24 +572,24 @@ reset_stats_bang(rb_execution_context_t *ec, VALUE self) vm_insns_count = 0; rb_compiled_iseq_count = 0; memset(&exit_op_count, 0, sizeof(exit_op_count)); - memset(&ujit_runtime_counters, 0, sizeof(ujit_runtime_counters)); + memset(&yjit_runtime_counters, 0, sizeof(yjit_runtime_counters)); #endif // if RUBY_DEBUG return Qnil; } -#include "ujit.rbinc" +#include "yjit.rbinc" #if RUBY_DEBUG -// implementation for --ujit-stats +// implementation for --yjit-stats void -rb_ujit_collect_vm_usage_insn(int insn) +rb_yjit_collect_vm_usage_insn(int insn) { vm_insns_count++; } const VALUE * -rb_ujit_count_side_exit_op(const VALUE *exit_pc) +rb_yjit_count_side_exit_op(const VALUE *exit_pc) { int insn = rb_vm_insn_addr2opcode((const void *)*exit_pc); exit_op_count[insn]++; @@ -657,31 +657,31 @@ print_insn_count_buffer(const struct insn_count *buffer, int how_many, int left_ __attribute__((destructor)) static void -print_ujit_stats(void) +print_yjit_stats(void) { - if (!rb_ujit_opts.gen_stats) return; + if (!rb_yjit_opts.gen_stats) return; const struct insn_count *sorted_exit_ops = sort_insn_count_array(exit_op_count); - double total_insns_count = vm_insns_count + ujit_runtime_counters.exec_instruction; - double ratio = ujit_runtime_counters.exec_instruction / total_insns_count; + double total_insns_count = vm_insns_count + yjit_runtime_counters.exec_instruction; + double ratio = yjit_runtime_counters.exec_instruction / total_insns_count; fprintf(stderr, "compiled_iseq_count: %10" PRId64 "\n", rb_compiled_iseq_count); fprintf(stderr, "main_block_code_size: %6.1f MiB\n", ((double)cb->write_pos) / 1048576.0); fprintf(stderr, "side_block_code_size: %6.1f MiB\n", ((double)ocb->write_pos) / 1048576.0); fprintf(stderr, "vm_insns_count: %10" PRId64 "\n", vm_insns_count); - fprintf(stderr, "ujit_exec_insns_count: %10" PRId64 "\n", ujit_runtime_counters.exec_instruction); - fprintf(stderr, "ratio_in_ujit: %9.1f%%\n", ratio * 100); + fprintf(stderr, "yjit_exec_insns_count: %10" PRId64 "\n", yjit_runtime_counters.exec_instruction); + fprintf(stderr, "ratio_in_yjit: %9.1f%%\n", ratio * 100); print_insn_count_buffer(sorted_exit_ops, 10, 4); //print_runtime_counters(); } #endif // if RUBY_DEBUG void -rb_ujit_iseq_mark(const struct rb_iseq_constant_body *body) +rb_yjit_iseq_mark(const struct rb_iseq_constant_body *body) { - rb_darray_for(body->ujit_blocks, version_array_idx) { - rb_ujit_block_array_t version_array = rb_darray_get(body->ujit_blocks, version_array_idx); + rb_darray_for(body->yjit_blocks, version_array_idx) { + rb_yjit_block_array_t version_array = rb_darray_get(body->yjit_blocks, version_array_idx); rb_darray_for(version_array, block_idx) { block_t *block = rb_darray_get(version_array, block_idx); @@ -705,10 +705,10 @@ rb_ujit_iseq_mark(const struct rb_iseq_constant_body *body) } void -rb_ujit_iseq_update_references(const struct rb_iseq_constant_body *body) +rb_yjit_iseq_update_references(const struct rb_iseq_constant_body *body) { - rb_darray_for(body->ujit_blocks, version_array_idx) { - rb_ujit_block_array_t version_array = rb_darray_get(body->ujit_blocks, version_array_idx); + rb_darray_for(body->yjit_blocks, version_array_idx) { + rb_yjit_block_array_t version_array = rb_darray_get(body->yjit_blocks, version_array_idx); rb_darray_for(version_array, block_idx) { block_t *block = rb_darray_get(version_array, block_idx); @@ -736,83 +736,83 @@ rb_ujit_iseq_update_references(const struct rb_iseq_constant_body *body) } } +// Free the yjit resources associated with an iseq void -rb_ujit_iseq_free(const struct rb_iseq_constant_body *body) +rb_yjit_iseq_free(const struct rb_iseq_constant_body *body) { - rb_darray_for(body->ujit_blocks, version_array_idx) { - rb_ujit_block_array_t version_array = rb_darray_get(body->ujit_blocks, version_array_idx); + rb_darray_for(body->yjit_blocks, version_array_idx) { + rb_yjit_block_array_t version_array = rb_darray_get(body->yjit_blocks, version_array_idx); rb_darray_for(version_array, block_idx) { block_t *block = rb_darray_get(version_array, block_idx); - ujit_free_block(block); + yjit_free_block(block); } rb_darray_free(version_array); } - rb_darray_free(body->ujit_blocks); + rb_darray_free(body->yjit_blocks); } -bool rb_ujit_enabled_p(void) +bool rb_yjit_enabled_p(void) { - return rb_ujit_opts.ujit_enabled; + return rb_yjit_opts.yjit_enabled; } -unsigned rb_ujit_call_threshold(void) +unsigned rb_yjit_call_threshold(void) { - return rb_ujit_opts.call_threshold; + return rb_yjit_opts.call_threshold; } void -rb_ujit_init(struct rb_ujit_options *options) +rb_yjit_init(struct rb_yjit_options *options) { - if (!ujit_scrape_successful || !PLATFORM_SUPPORTED_P) + if (!yjit_scrape_successful || !PLATFORM_SUPPORTED_P) { return; } - rb_ujit_opts = *options; - rb_ujit_opts.ujit_enabled = true; + rb_yjit_opts = *options; + rb_yjit_opts.yjit_enabled = true; // Normalize options - if (rb_ujit_opts.call_threshold < 1) { - rb_ujit_opts.call_threshold = 2; + if (rb_yjit_opts.call_threshold < 1) { + rb_yjit_opts.call_threshold = 2; } blocks_assuming_stable_global_constant_state = st_init_numtable(); blocks_assuming_single_ractor_mode = st_init_numtable(); - ujit_init_core(); - ujit_init_codegen(); + yjit_init_core(); + yjit_init_codegen(); - // UJIT Ruby module - mUjit = rb_define_module("UJIT"); - rb_define_module_function(mUjit, "install_entry", ujit_install_entry, 1); - rb_define_module_function(mUjit, "blocks_for", ujit_blocks_for, 1); + // YJIT Ruby module + mYjit = rb_define_module("YJIT"); + rb_define_module_function(mYjit, "blocks_for", yjit_blocks_for, 1); - // UJIT::Block (block version, code block) - cUjitBlock = rb_define_class_under(mUjit, "Block", rb_cObject); - rb_define_method(cUjitBlock, "address", block_address, 0); - rb_define_method(cUjitBlock, "code", block_code, 0); - rb_define_method(cUjitBlock, "iseq_start_index", iseq_start_index, 0); - rb_define_method(cUjitBlock, "iseq_end_index", iseq_end_index, 0); + // YJIT::Block (block version, code block) + cYjitBlock = rb_define_class_under(mYjit, "Block", rb_cObject); + rb_define_method(cYjitBlock, "address", block_address, 0); + rb_define_method(cYjitBlock, "code", block_code, 0); + rb_define_method(cYjitBlock, "iseq_start_index", iseq_start_index, 0); + rb_define_method(cYjitBlock, "iseq_end_index", iseq_end_index, 0); - // UJIT disassembler interface + // YJIT disassembler interface #if HAVE_LIBCAPSTONE - cUjitDisasm = rb_define_class_under(mUjit, "Disasm", rb_cObject); - rb_define_alloc_func(cUjitDisasm, ujit_disasm_init); - rb_define_method(cUjitDisasm, "disasm", ujit_disasm, 2); - cUjitDisasmInsn = rb_struct_define_under(cUjitDisasm, "Insn", "address", "mnemonic", "op_str", NULL); + cYjitDisasm = rb_define_class_under(mYjit, "Disasm", rb_cObject); + rb_define_alloc_func(cYjitDisasm, yjit_disasm_init); + rb_define_method(cYjitDisasm, "disasm", yjit_disasm, 2); + cYjitDisasmInsn = rb_struct_define_under(cYjitDisasm, "Insn", "address", "mnemonic", "op_str", NULL); #endif - if (RUBY_DEBUG && rb_ujit_opts.gen_stats) { + if (RUBY_DEBUG && rb_yjit_opts.gen_stats) { // Setup at_exit callback for printing out counters rb_block_call(rb_mKernel, rb_intern("at_exit"), 0, NULL, at_exit_print_stats, Qfalse); } // Initialize the GC hooks method_lookup_dependency = st_init_numtable(); - struct ujit_root_struct *root; - VALUE ujit_root = TypedData_Make_Struct(0, struct ujit_root_struct, &ujit_root_type, root); - rb_gc_register_mark_object(ujit_root); + struct yjit_root_struct *root; + VALUE yjit_root = TypedData_Make_Struct(0, struct yjit_root_struct, &yjit_root_type, root); + rb_gc_register_mark_object(yjit_root); } diff --git a/ujit_iface.h b/yjit_iface.h index 91bb87606b..600fa47a34 100644 --- a/ujit_iface.h +++ b/yjit_iface.h @@ -1,10 +1,10 @@ // -// These are definitions uJIT uses to interface with the CRuby codebase, -// but which are only used internally by uJIT. +// These are definitions YJIT uses to interface with the CRuby codebase, +// but which are only used internally by YJIT. // -#ifndef UJIT_IFACE_H -#define UJIT_IFACE_H 1 +#ifndef YJIT_IFACE_H +#define YJIT_IFACE_H 1 #include "stddef.h" #include "stdint.h" @@ -14,19 +14,19 @@ #include "vm_core.h" #include "vm_callinfo.h" #include "builtin.h" -#include "ujit_core.h" +#include "yjit_core.h" #ifndef rb_callcache struct rb_callcache; #define rb_callcache rb_callcache #endif -#define UJIT_DECLARE_COUNTERS(...) struct rb_ujit_runtime_counters { \ +#define YJIT_DECLARE_COUNTERS(...) struct rb_yjit_runtime_counters { \ int64_t __VA_ARGS__; \ }; \ -static char ujit_counter_names[] = #__VA_ARGS__; +static char yjit_counter_names[] = #__VA_ARGS__; -UJIT_DECLARE_COUNTERS( +YJIT_DECLARE_COUNTERS( exec_instruction, oswb_callsite_not_simple, @@ -62,11 +62,11 @@ UJIT_DECLARE_COUNTERS( last_member ) -#undef UJIT_DECLARE_COUNTERS +#undef YJIT_DECLARE_COUNTERS -RUBY_EXTERN struct rb_ujit_options rb_ujit_opts; +RUBY_EXTERN struct rb_yjit_options rb_yjit_opts; RUBY_EXTERN int64_t rb_compiled_iseq_count; -RUBY_EXTERN struct rb_ujit_runtime_counters ujit_runtime_counters; +RUBY_EXTERN struct rb_yjit_runtime_counters yjit_runtime_counters; void cb_write_pre_call_bytes(codeblock_t* cb); void cb_write_post_call_bytes(codeblock_t* cb); @@ -83,9 +83,9 @@ RBIMPL_ATTR_NODISCARD() bool assume_single_ractor_mode(block_t *block); RBIMPL_ATTR_NODISCARD() bool assume_stable_global_constant_state(block_t *block); // this function *must* return passed exit_pc -const VALUE *rb_ujit_count_side_exit_op(const VALUE *exit_pc); +const VALUE *rb_yjit_count_side_exit_op(const VALUE *exit_pc); -void ujit_unlink_method_lookup_dependency(block_t *block); -void ujit_block_assumptions_free(block_t *block); +void yjit_unlink_method_lookup_dependency(block_t *block); +void yjit_block_assumptions_free(block_t *block); -#endif // #ifndef UJIT_IFACE_H +#endif // #ifndef YJIT_IFACE_ diff --git a/ujit_utils.c b/yjit_utils.c index 06065b01fd..02e5dbb3b0 100644 --- a/ujit_utils.c +++ b/yjit_utils.c @@ -1,8 +1,8 @@ #include <stdio.h> #include <string.h> #include <assert.h> -#include "ujit_utils.h" -#include "ujit_asm.h" +#include "yjit_utils.h" +#include "yjit_asm.h" // Save caller-save registers on the stack before a C call void push_regs(codeblock_t* cb) diff --git a/ujit_utils.h b/yjit_utils.h index 005d928511..cbe3e11863 100644 --- a/ujit_utils.h +++ b/yjit_utils.h @@ -1,10 +1,10 @@ -#ifndef UJIT_UTILS_H -#define UJIT_UTILS_H 1 +#ifndef YJIT_UTILS_H +#define YJIT_UTILS_H 1 #include <stdint.h> #include <stddef.h> #include <stdbool.h> -#include "ujit_asm.h" +#include "yjit_asm.h" void push_regs(codeblock_t* cb); void pop_regs(codeblock_t* cb); @@ -12,4 +12,4 @@ void print_int(codeblock_t* cb, x86opnd_t opnd); void print_ptr(codeblock_t* cb, x86opnd_t opnd); void print_str(codeblock_t* cb, const char* str); -#endif // #ifndef UJIT_UTILS_H +#endif // #ifndef YJIT_UTILS_H |