Skip to content

Commit 33909a1

Browse files
committed
YJIT: ZJIT: Share identical glue functions
Working towards having YJIT and ZJIT in the same build, we need to deduplicate some glue code that would otherwise cause name collision. Add jit.c for this and build it for YJIT and ZJIT builds. Update bindgen to look at jit.c; some shuffling of functions in the output, but the set of functions shouldn't have changed.
1 parent aafd106 commit 33909a1

File tree

10 files changed

+782
-927
lines changed

10 files changed

+782
-927
lines changed

common.mk

Lines changed: 236 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,7 @@ COMMONOBJS = array.$(OBJEXT) \
189189
$(YJIT_LIBOBJ) \
190190
$(ZJIT_OBJ) \
191191
$(ZJIT_LIBOBJ) \
192+
$(JIT_OBJ) \
192193
$(COROUTINE_OBJ) \
193194
$(DTRACE_OBJ) \
194195
$(BUILTIN_ENCOBJS) \
@@ -9156,6 +9157,241 @@ iseq.$(OBJEXT): {$(VPATH)}vm_debug.h
91569157
iseq.$(OBJEXT): {$(VPATH)}vm_opts.h
91579158
iseq.$(OBJEXT): {$(VPATH)}vm_sync.h
91589159
iseq.$(OBJEXT): {$(VPATH)}yjit.h
9160+
jit.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
9161+
jit.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
9162+
jit.$(OBJEXT): $(CCAN_DIR)/list/list.h
9163+
jit.$(OBJEXT): $(CCAN_DIR)/str/str.h
9164+
jit.$(OBJEXT): $(hdrdir)/ruby/ruby.h
9165+
jit.$(OBJEXT): $(top_srcdir)/internal/array.h
9166+
jit.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
9167+
jit.$(OBJEXT): $(top_srcdir)/internal/class.h
9168+
jit.$(OBJEXT): $(top_srcdir)/internal/compilers.h
9169+
jit.$(OBJEXT): $(top_srcdir)/internal/gc.h
9170+
jit.$(OBJEXT): $(top_srcdir)/internal/imemo.h
9171+
jit.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
9172+
jit.$(OBJEXT): $(top_srcdir)/internal/serial.h
9173+
jit.$(OBJEXT): $(top_srcdir)/internal/set_table.h
9174+
jit.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
9175+
jit.$(OBJEXT): $(top_srcdir)/internal/variable.h
9176+
jit.$(OBJEXT): $(top_srcdir)/internal/vm.h
9177+
jit.$(OBJEXT): $(top_srcdir)/internal/warnings.h
9178+
jit.$(OBJEXT): $(top_srcdir)/prism/defines.h
9179+
jit.$(OBJEXT): $(top_srcdir)/prism/encoding.h
9180+
jit.$(OBJEXT): $(top_srcdir)/prism/node.h
9181+
jit.$(OBJEXT): $(top_srcdir)/prism/options.h
9182+
jit.$(OBJEXT): $(top_srcdir)/prism/pack.h
9183+
jit.$(OBJEXT): $(top_srcdir)/prism/parser.h
9184+
jit.$(OBJEXT): $(top_srcdir)/prism/prettyprint.h
9185+
jit.$(OBJEXT): $(top_srcdir)/prism/prism.h
9186+
jit.$(OBJEXT): $(top_srcdir)/prism/regexp.h
9187+
jit.$(OBJEXT): $(top_srcdir)/prism/static_literals.h
9188+
jit.$(OBJEXT): $(top_srcdir)/prism/util/pm_buffer.h
9189+
jit.$(OBJEXT): $(top_srcdir)/prism/util/pm_char.h
9190+
jit.$(OBJEXT): $(top_srcdir)/prism/util/pm_constant_pool.h
9191+
jit.$(OBJEXT): $(top_srcdir)/prism/util/pm_integer.h
9192+
jit.$(OBJEXT): $(top_srcdir)/prism/util/pm_list.h
9193+
jit.$(OBJEXT): $(top_srcdir)/prism/util/pm_memchr.h
9194+
jit.$(OBJEXT): $(top_srcdir)/prism/util/pm_newline_list.h
9195+
jit.$(OBJEXT): $(top_srcdir)/prism/util/pm_string.h
9196+
jit.$(OBJEXT): $(top_srcdir)/prism/util/pm_strncasecmp.h
9197+
jit.$(OBJEXT): $(top_srcdir)/prism/util/pm_strpbrk.h
9198+
jit.$(OBJEXT): {$(VPATH)}assert.h
9199+
jit.$(OBJEXT): {$(VPATH)}atomic.h
9200+
jit.$(OBJEXT): {$(VPATH)}backward/2/assume.h
9201+
jit.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
9202+
jit.$(OBJEXT): {$(VPATH)}backward/2/bool.h
9203+
jit.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
9204+
jit.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
9205+
jit.$(OBJEXT): {$(VPATH)}backward/2/limits.h
9206+
jit.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
9207+
jit.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
9208+
jit.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
9209+
jit.$(OBJEXT): {$(VPATH)}builtin.h
9210+
jit.$(OBJEXT): {$(VPATH)}config.h
9211+
jit.$(OBJEXT): {$(VPATH)}constant.h
9212+
jit.$(OBJEXT): {$(VPATH)}debug_counter.h
9213+
jit.$(OBJEXT): {$(VPATH)}defines.h
9214+
jit.$(OBJEXT): {$(VPATH)}encoding.h
9215+
jit.$(OBJEXT): {$(VPATH)}id.h
9216+
jit.$(OBJEXT): {$(VPATH)}id_table.h
9217+
jit.$(OBJEXT): {$(VPATH)}insns.def
9218+
jit.$(OBJEXT): {$(VPATH)}insns.inc
9219+
jit.$(OBJEXT): {$(VPATH)}insns_info.inc
9220+
jit.$(OBJEXT): {$(VPATH)}intern.h
9221+
jit.$(OBJEXT): {$(VPATH)}internal.h
9222+
jit.$(OBJEXT): {$(VPATH)}internal/abi.h
9223+
jit.$(OBJEXT): {$(VPATH)}internal/anyargs.h
9224+
jit.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
9225+
jit.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
9226+
jit.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
9227+
jit.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
9228+
jit.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
9229+
jit.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
9230+
jit.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
9231+
jit.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
9232+
jit.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
9233+
jit.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
9234+
jit.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
9235+
jit.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
9236+
jit.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
9237+
jit.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
9238+
jit.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
9239+
jit.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
9240+
jit.$(OBJEXT): {$(VPATH)}internal/assume.h
9241+
jit.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
9242+
jit.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
9243+
jit.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
9244+
jit.$(OBJEXT): {$(VPATH)}internal/attr/const.h
9245+
jit.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
9246+
jit.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
9247+
jit.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
9248+
jit.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
9249+
jit.$(OBJEXT): {$(VPATH)}internal/attr/error.h
9250+
jit.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
9251+
jit.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
9252+
jit.$(OBJEXT): {$(VPATH)}internal/attr/format.h
9253+
jit.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
9254+
jit.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
9255+
jit.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
9256+
jit.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
9257+
jit.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
9258+
jit.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
9259+
jit.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
9260+
jit.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
9261+
jit.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
9262+
jit.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
9263+
jit.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
9264+
jit.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
9265+
jit.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
9266+
jit.$(OBJEXT): {$(VPATH)}internal/cast.h
9267+
jit.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
9268+
jit.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
9269+
jit.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
9270+
jit.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
9271+
jit.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
9272+
jit.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
9273+
jit.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
9274+
jit.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
9275+
jit.$(OBJEXT): {$(VPATH)}internal/config.h
9276+
jit.$(OBJEXT): {$(VPATH)}internal/constant_p.h
9277+
jit.$(OBJEXT): {$(VPATH)}internal/core.h
9278+
jit.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
9279+
jit.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
9280+
jit.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
9281+
jit.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
9282+
jit.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
9283+
jit.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
9284+
jit.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
9285+
jit.$(OBJEXT): {$(VPATH)}internal/core/robject.h
9286+
jit.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
9287+
jit.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
9288+
jit.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
9289+
jit.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
9290+
jit.$(OBJEXT): {$(VPATH)}internal/ctype.h
9291+
jit.$(OBJEXT): {$(VPATH)}internal/dllexport.h
9292+
jit.$(OBJEXT): {$(VPATH)}internal/dosish.h
9293+
jit.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
9294+
jit.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
9295+
jit.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
9296+
jit.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
9297+
jit.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
9298+
jit.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
9299+
jit.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
9300+
jit.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
9301+
jit.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
9302+
jit.$(OBJEXT): {$(VPATH)}internal/error.h
9303+
jit.$(OBJEXT): {$(VPATH)}internal/eval.h
9304+
jit.$(OBJEXT): {$(VPATH)}internal/event.h
9305+
jit.$(OBJEXT): {$(VPATH)}internal/fl_type.h
9306+
jit.$(OBJEXT): {$(VPATH)}internal/gc.h
9307+
jit.$(OBJEXT): {$(VPATH)}internal/glob.h
9308+
jit.$(OBJEXT): {$(VPATH)}internal/globals.h
9309+
jit.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
9310+
jit.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
9311+
jit.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
9312+
jit.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
9313+
jit.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
9314+
jit.$(OBJEXT): {$(VPATH)}internal/has/extension.h
9315+
jit.$(OBJEXT): {$(VPATH)}internal/has/feature.h
9316+
jit.$(OBJEXT): {$(VPATH)}internal/has/warning.h
9317+
jit.$(OBJEXT): {$(VPATH)}internal/intern/array.h
9318+
jit.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
9319+
jit.$(OBJEXT): {$(VPATH)}internal/intern/class.h
9320+
jit.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
9321+
jit.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
9322+
jit.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
9323+
jit.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
9324+
jit.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
9325+
jit.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
9326+
jit.$(OBJEXT): {$(VPATH)}internal/intern/error.h
9327+
jit.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
9328+
jit.$(OBJEXT): {$(VPATH)}internal/intern/file.h
9329+
jit.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
9330+
jit.$(OBJEXT): {$(VPATH)}internal/intern/io.h
9331+
jit.$(OBJEXT): {$(VPATH)}internal/intern/load.h
9332+
jit.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
9333+
jit.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
9334+
jit.$(OBJEXT): {$(VPATH)}internal/intern/object.h
9335+
jit.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
9336+
jit.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
9337+
jit.$(OBJEXT): {$(VPATH)}internal/intern/process.h
9338+
jit.$(OBJEXT): {$(VPATH)}internal/intern/random.h
9339+
jit.$(OBJEXT): {$(VPATH)}internal/intern/range.h
9340+
jit.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
9341+
jit.$(OBJEXT): {$(VPATH)}internal/intern/re.h
9342+
jit.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
9343+
jit.$(OBJEXT): {$(VPATH)}internal/intern/select.h
9344+
jit.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
9345+
jit.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
9346+
jit.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
9347+
jit.$(OBJEXT): {$(VPATH)}internal/intern/string.h
9348+
jit.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
9349+
jit.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
9350+
jit.$(OBJEXT): {$(VPATH)}internal/intern/time.h
9351+
jit.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
9352+
jit.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
9353+
jit.$(OBJEXT): {$(VPATH)}internal/interpreter.h
9354+
jit.$(OBJEXT): {$(VPATH)}internal/iterator.h
9355+
jit.$(OBJEXT): {$(VPATH)}internal/memory.h
9356+
jit.$(OBJEXT): {$(VPATH)}internal/method.h
9357+
jit.$(OBJEXT): {$(VPATH)}internal/module.h
9358+
jit.$(OBJEXT): {$(VPATH)}internal/newobj.h
9359+
jit.$(OBJEXT): {$(VPATH)}internal/scan_args.h
9360+
jit.$(OBJEXT): {$(VPATH)}internal/special_consts.h
9361+
jit.$(OBJEXT): {$(VPATH)}internal/static_assert.h
9362+
jit.$(OBJEXT): {$(VPATH)}internal/stdalign.h
9363+
jit.$(OBJEXT): {$(VPATH)}internal/stdbool.h
9364+
jit.$(OBJEXT): {$(VPATH)}internal/stdckdint.h
9365+
jit.$(OBJEXT): {$(VPATH)}internal/symbol.h
9366+
jit.$(OBJEXT): {$(VPATH)}internal/value.h
9367+
jit.$(OBJEXT): {$(VPATH)}internal/value_type.h
9368+
jit.$(OBJEXT): {$(VPATH)}internal/variable.h
9369+
jit.$(OBJEXT): {$(VPATH)}internal/warning_push.h
9370+
jit.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
9371+
jit.$(OBJEXT): {$(VPATH)}iseq.h
9372+
jit.$(OBJEXT): {$(VPATH)}jit.c
9373+
jit.$(OBJEXT): {$(VPATH)}method.h
9374+
jit.$(OBJEXT): {$(VPATH)}missing.h
9375+
jit.$(OBJEXT): {$(VPATH)}node.h
9376+
jit.$(OBJEXT): {$(VPATH)}onigmo.h
9377+
jit.$(OBJEXT): {$(VPATH)}oniguruma.h
9378+
jit.$(OBJEXT): {$(VPATH)}prism/ast.h
9379+
jit.$(OBJEXT): {$(VPATH)}prism/diagnostic.h
9380+
jit.$(OBJEXT): {$(VPATH)}prism/version.h
9381+
jit.$(OBJEXT): {$(VPATH)}prism_compile.h
9382+
jit.$(OBJEXT): {$(VPATH)}ruby_assert.h
9383+
jit.$(OBJEXT): {$(VPATH)}ruby_atomic.h
9384+
jit.$(OBJEXT): {$(VPATH)}rubyparser.h
9385+
jit.$(OBJEXT): {$(VPATH)}shape.h
9386+
jit.$(OBJEXT): {$(VPATH)}st.h
9387+
jit.$(OBJEXT): {$(VPATH)}subst.h
9388+
jit.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
9389+
jit.$(OBJEXT): {$(VPATH)}thread_native.h
9390+
jit.$(OBJEXT): {$(VPATH)}vm_callinfo.h
9391+
jit.$(OBJEXT): {$(VPATH)}vm_core.h
9392+
jit.$(OBJEXT): {$(VPATH)}vm_debug.h
9393+
jit.$(OBJEXT): {$(VPATH)}vm_opts.h
9394+
jit.$(OBJEXT): {$(VPATH)}vm_sync.h
91599395
load.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
91609396
load.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
91619397
load.$(OBJEXT): $(CCAN_DIR)/list/list.h

configure.ac

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3967,6 +3967,7 @@ AS_CASE(["${YJIT_SUPPORT}"],
39673967
LDFLAGS="$LDFLAGS -lpthread -lc++abi"
39683968
])
39693969
YJIT_OBJ='yjit.$(OBJEXT)'
3970+
JIT_OBJ='jit.$(OBJEXT)'
39703971
AS_IF([test x"$YJIT_SUPPORT" != "xyes" ], [
39713972
AC_DEFINE_UNQUOTED(YJIT_SUPPORT, [$YJIT_SUPPORT])
39723973
])
@@ -4008,6 +4009,7 @@ AS_CASE(["${ZJIT_SUPPORT}"],
40084009
LDFLAGS="$LDFLAGS -lpthread -lc++abi"
40094010
])
40104011
ZJIT_OBJ='zjit.$(OBJEXT)'
4012+
JIT_OBJ='jit.$(OBJEXT)'
40114013
AS_IF([test x"$ZJIT_SUPPORT" != "xyes" ], [
40124014
AC_DEFINE_UNQUOTED(ZJIT_SUPPORT, [$ZJIT_SUPPORT])
40134015
])
@@ -4025,8 +4027,9 @@ AC_SUBST(ZJIT_CARGO_BUILD_ARGS)dnl for selecting Rust build profiles
40254027
AC_SUBST(YJIT_LIBS)dnl for optionally building the Rust parts of YJIT
40264028
AC_SUBST(YJIT_OBJ)dnl for optionally building the C parts of YJIT
40274029
AC_SUBST(ZJIT_SUPPORT)dnl what flavor of ZJIT the Ruby build includes
4028-
AC_SUBST(ZJIT_LIBS)dnl for optionally building the Rust parts of YJIT
4029-
AC_SUBST(ZJIT_OBJ)dnl for optionally building the C parts of YJIT
4030+
AC_SUBST(ZJIT_LIBS)dnl for optionally building the Rust parts of ZJIT
4031+
AC_SUBST(ZJIT_OBJ)dnl for optionally building the C parts of ZJIT
4032+
AC_SUBST(JIT_OBJ)dnl for optionally building C glue code for Rust FFI
40304033
}
40314034
40324035
[begin]_group "build section" && {

0 commit comments

Comments
 (0)