aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authork0kubun <k0kubun@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-02-08 13:54:37 +0000
committerk0kubun <k0kubun@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-02-08 13:54:37 +0000
commit288b44328dbd22429eaaed5243d7bea8a3116016 (patch)
tree28d8be72c8a700b124e81e63372558a970627d29
parent7c3887408abefd58cabb7a28621e9fd66b41c7ac (diff)
downloadruby-288b44328dbd22429eaaed5243d7bea8a3116016.tar.gz
Export some missing symbols for MJIT
tool/ruby_vm/views/_insn_name_info.erb: on Linux, rb_vm_insn_name_offset was needed to compile with --jit-debug (Usually --jit-debug requires more symbols than the situation without --jit-debug because -O2 skips some functions to compile). vm.c: when running transform_mjit_header.rb with --jit-wait, rb_source_location_cstr was repoted to be missing. string.c: ditto, for rb_str_eql numeric.c: ditto, for rb_float_eql git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62313 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--include/ruby/defines.h4
-rw-r--r--numeric.c2
-rw-r--r--string.c2
-rw-r--r--tool/ruby_vm/views/_insn_name_info.erb2
-rw-r--r--vm.c2
5 files changed, 8 insertions, 4 deletions
diff --git a/include/ruby/defines.h b/include/ruby/defines.h
index b49fabe636..375e039d4b 100644
--- a/include/ruby/defines.h
+++ b/include/ruby/defines.h
@@ -270,9 +270,11 @@ void xfree(void*);
#define RUBY_FUNC_EXPORTED
#endif
-/* MJIT_FUNC_EXPORTED is used for functions which are exported only for MJIT
+/* These macros are used for functions which are exported only for MJIT
and NOT ensured to be exported in future versions. */
#define MJIT_FUNC_EXPORTED RUBY_FUNC_EXPORTED
+#define MJIT_SYMBOL_EXPORT_BEGIN RUBY_SYMBOL_EXPORT_BEGIN
+#define MJIT_SYMBOL_EXPORT_END RUBY_SYMBOL_EXPORT_END
#ifndef RUBY_EXTERN
#define RUBY_EXTERN extern
diff --git a/numeric.c b/numeric.c
index 0e2804329d..c5ff98b7d7 100644
--- a/numeric.c
+++ b/numeric.c
@@ -1603,7 +1603,7 @@ flo_le(VALUE x, VALUE y)
* so an implementation-dependent value is returned.
*/
-VALUE
+MJIT_FUNC_EXPORTED VALUE
rb_float_eql(VALUE x, VALUE y)
{
if (RB_TYPE_P(y, T_FLOAT)) {
diff --git a/string.c b/string.c
index 28b873523f..ebf5618c88 100644
--- a/string.c
+++ b/string.c
@@ -3263,7 +3263,7 @@ rb_str_equal(VALUE str1, VALUE str2)
* Two strings are equal if they have the same length and content.
*/
-VALUE
+MJIT_FUNC_EXPORTED VALUE
rb_str_eql(VALUE str1, VALUE str2)
{
if (str1 == str2) return Qtrue;
diff --git a/tool/ruby_vm/views/_insn_name_info.erb b/tool/ruby_vm/views/_insn_name_info.erb
index 79a48cd9cb..581869fca8 100644
--- a/tool/ruby_vm/views/_insn_name_info.erb
+++ b/tool/ruby_vm/views/_insn_name_info.erb
@@ -13,7 +13,9 @@
%
CONSTFUNC(MAYBE_UNUSED(static const char *insn_name(VALUE insn)));
extern const char *rb_vm_insn_name_info;
+MJIT_SYMBOL_EXPORT_BEGIN
extern const unsigned short rb_vm_insn_name_offset[];
+MJIT_SYMBOL_EXPORT_END
#ifdef RUBY_VM_INSNS_INFO
const unsigned short rb_vm_insn_name_offset[] = {
diff --git a/vm.c b/vm.c
index 518aabb382..93134ff78f 100644
--- a/vm.c
+++ b/vm.c
@@ -1302,7 +1302,7 @@ rb_source_location(int *pline)
}
}
-const char *
+MJIT_FUNC_EXPORTED const char *
rb_source_location_cstr(int *pline)
{
VALUE path = rb_source_location(pline);