1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

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
This commit is contained in:
k0kubun 2018-02-08 13:54:37 +00:00
parent 7c3887408a
commit 288b44328d
5 changed files with 8 additions and 4 deletions

View file

@ -270,9 +270,11 @@ void xfree(void*);
#define RUBY_FUNC_EXPORTED #define RUBY_FUNC_EXPORTED
#endif #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. */ and NOT ensured to be exported in future versions. */
#define MJIT_FUNC_EXPORTED RUBY_FUNC_EXPORTED #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 #ifndef RUBY_EXTERN
#define RUBY_EXTERN extern #define RUBY_EXTERN extern

View file

@ -1603,7 +1603,7 @@ flo_le(VALUE x, VALUE y)
* so an implementation-dependent value is returned. * so an implementation-dependent value is returned.
*/ */
VALUE MJIT_FUNC_EXPORTED VALUE
rb_float_eql(VALUE x, VALUE y) rb_float_eql(VALUE x, VALUE y)
{ {
if (RB_TYPE_P(y, T_FLOAT)) { if (RB_TYPE_P(y, T_FLOAT)) {

View file

@ -3263,7 +3263,7 @@ rb_str_equal(VALUE str1, VALUE str2)
* Two strings are equal if they have the same length and content. * Two strings are equal if they have the same length and content.
*/ */
VALUE MJIT_FUNC_EXPORTED VALUE
rb_str_eql(VALUE str1, VALUE str2) rb_str_eql(VALUE str1, VALUE str2)
{ {
if (str1 == str2) return Qtrue; if (str1 == str2) return Qtrue;

View file

@ -13,7 +13,9 @@
% %
CONSTFUNC(MAYBE_UNUSED(static const char *insn_name(VALUE insn))); CONSTFUNC(MAYBE_UNUSED(static const char *insn_name(VALUE insn)));
extern const char *rb_vm_insn_name_info; extern const char *rb_vm_insn_name_info;
MJIT_SYMBOL_EXPORT_BEGIN
extern const unsigned short rb_vm_insn_name_offset[]; extern const unsigned short rb_vm_insn_name_offset[];
MJIT_SYMBOL_EXPORT_END
#ifdef RUBY_VM_INSNS_INFO #ifdef RUBY_VM_INSNS_INFO
const unsigned short rb_vm_insn_name_offset[] = { const unsigned short rb_vm_insn_name_offset[] = {

2
vm.c
View file

@ -1302,7 +1302,7 @@ rb_source_location(int *pline)
} }
} }
const char * MJIT_FUNC_EXPORTED const char *
rb_source_location_cstr(int *pline) rb_source_location_cstr(int *pline)
{ {
VALUE path = rb_source_location(pline); VALUE path = rb_source_location(pline);