[前][次][番号順一覧][スレッド一覧]

ruby-changes:69201

From: Alan <ko1@a...>
Date: Thu, 21 Oct 2021 08:23:22 +0900 (JST)
Subject: [ruby-changes:69201] f6da559d5b (master): Put YJIT into a single compilation unit

https://git.ruby-lang.org/ruby.git/commit/?id=f6da559d5b

From f6da559d5b88981000d4c575b6384f59d30dec22 Mon Sep 17 00:00:00 2001
From: Alan Wu <XrXr@u...>
Date: Fri, 1 Oct 2021 18:38:39 -0400
Subject: Put YJIT into a single compilation unit

For upstreaming, we want functions we export either prefixed with "rb_"
or made static. Historically we haven't been following this rule, so we
were "leaking" a lot of symbols as `make leak-globals` would tell us.

This change unifies everything YJIT into a single compilation unit,
yjit.o, and makes everything unprefixed static to pass `make leak-globals`.
This manual "unified build" setup is similar to that of vm.o.

Having everything in one compilation unit allows static functions to
be visible across YJIT files and removes the need for declarations in
headers in some cases. Unnecessary declarations were removed.

Other changes of note:
  - switched to MJIT_SYMBOL_EXPORT_BEGIN which indicates stuff as being
    off limits for native extensions
  - the first include of each YJIT file is change to be "internal.h"
  - undefined MAP_STACK before explicitly redefining it since it
    collide's with a definition in system headers. Consider renaming?
---
 common.mk        | 1031 ++++++++++++------------------------------------------
 test_asm.sh      |    4 +-
 vm_insnhelper.c  |    2 +-
 vm_trace.c       |    4 +-
 yjit.c           |  132 +++++++
 yjit.h           |    8 +-
 yjit_asm.c       |   37 +-
 yjit_asm.h       |  298 ++++++++--------
 yjit_asm_tests.c |    6 +-
 yjit_codegen.c   |   39 +--
 yjit_codegen.h   |   14 +-
 yjit_core.c      |   79 +++--
 yjit_core.h      |   56 +--
 yjit_iface.c     |   43 +--
 yjit_iface.h     |  123 +------
 yjit_utils.c     |   32 +-
 yjit_utils.h     |   15 -
 17 files changed, 643 insertions(+), 1280 deletions(-)
 create mode 100644 yjit.c
 delete mode 100644 yjit_utils.h

diff --git a/common.mk b/common.mk
index 8f1cabbf01..53e08f0417 100644
--- a/common.mk
+++ b/common.mk
@@ -150,11 +150,7 @@ COMMONOBJS    = array.$(OBJEXT) \ https://github.com/ruby/ruby/blob/trunk/common.mk#L150
 		vm_dump.$(OBJEXT) \
 		vm_sync.$(OBJEXT) \
 		vm_trace.$(OBJEXT) \
-		yjit_asm.$(OBJEXT) \
-		yjit_utils.$(OBJEXT) \
-		yjit_core.$(OBJEXT) \
-		yjit_codegen.$(OBJEXT) \
-		yjit_iface.$(OBJEXT) \
+		yjit.$(OBJEXT) \
 		$(COROUTINE_OBJ) \
 		$(DTRACE_OBJ) \
 		$(BUILTIN_ENCOBJS) \
@@ -16891,810 +16887,223 @@ vm_trace.$(OBJEXT): {$(VPATH)}vm_core.h https://github.com/ruby/ruby/blob/trunk/common.mk#L16887
 vm_trace.$(OBJEXT): {$(VPATH)}vm_opts.h
 vm_trace.$(OBJEXT): {$(VPATH)}vm_trace.c
 vm_trace.$(OBJEXT): {$(VPATH)}yjit.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/object.h
-yjit_codegen.$(OBJEXT): $(top_srcdir)/internal/re.h
-yjit_codegen.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
-yjit_codegen.$(OBJEXT): $(top_srcdir)/internal/serial.h
-yjit_codegen.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-yjit_codegen.$(OBJEXT): $(top_srcdir)/internal/string.h
-yjit_codegen.$(OBJEXT): $(top_srcdir)/internal/variable.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)}constant.h
-yjit_codegen.$(OBJEXT): {$(VPATH)}darray.h
-yjit_codegen.$(OBJEXT): {$(VPATH)}debug_counter.h
-yjit_codegen.$(OBJEXT): {$(VPATH)}defines.h
-yjit_codegen.$(OBJEXT): {$(VPATH)}encoding.h
-yjit_codegen.$(OBJEXT): {$(VPATH)}gc.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)} (... truncated)

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]