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

mjit.c: ruby_version from version.c

* mjit.c (init_header_filename): get version name from the
  particular global variable, not from the macro in version.h.
  to get rid of re-compilation for each revision.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62318 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2018-02-08 15:00:28 +00:00
parent 4f6e16bd85
commit b2104fa810
2 changed files with 10 additions and 7 deletions

View file

@ -2030,12 +2030,11 @@ iseq.$(OBJEXT): {$(VPATH)}util.h
iseq.$(OBJEXT): {$(VPATH)}vm_core.h
iseq.$(OBJEXT): {$(VPATH)}vm_debug.h
iseq.$(OBJEXT): {$(VPATH)}vm_opts.h
mjit.$(OBJEXT): $(top_srcdir)/revision.h
mjit.$(OBJEXT): $(hdrdir)/ruby/version.h
mjit.$(OBJEXT): {$(VPATH)}mjit.c
mjit.$(OBJEXT): {$(VPATH)}mjit.h
mjit.$(OBJEXT): {$(VPATH)}ruby_assert.h
mjit.$(OBJEXT): {$(VPATH)}util.h
mjit.$(OBJEXT): {$(VPATH)}version.h
mjit.$(OBJEXT): {$(VPATH)}vm_core.h
mjit_compile.$(OBJEXT): {$(VPATH)}insns.inc
mjit_compile.$(OBJEXT): {$(VPATH)}insns_info.inc

14
mjit.c
View file

@ -76,12 +76,12 @@
#include "internal.h"
#include "vm_core.h"
#include "mjit.h"
#include "version.h"
#include "gc.h"
#include "constant.h"
#include "id_table.h"
#include "ruby_assert.h"
#include "ruby/util.h"
#include "ruby/version.h"
#ifdef _WIN32
#include <winsock2.h>
@ -1113,7 +1113,7 @@ mjit_get_iseq_func(const struct rb_iseq_constant_body *body)
}
/* A name of the header file included in any C file generated by MJIT for iseqs. */
#define RUBY_MJIT_HEADER_FILE "rb_mjit_min_header-" RUBY_VERSION ".h"
#define RUBY_MJIT_HEADER_NAME "rb_mjit_min_header-"
/* GCC and CLANG executable paths. TODO: The paths should absolute
ones to prevent changing C compiler for security reasons. */
#define GCC_PATH "gcc"
@ -1130,8 +1130,9 @@ init_header_filename(void)
VALUE basedir_val;
char *basedir;
size_t baselen;
size_t verlen;
static const char header_name[] =
"/" MJIT_HEADER_INSTALL_DIR "/" RUBY_MJIT_HEADER_FILE;
"/" MJIT_HEADER_INSTALL_DIR "/" RUBY_MJIT_HEADER_NAME;
char *p;
#ifdef _WIN32
static const char libpathflag[] =
@ -1146,12 +1147,15 @@ init_header_filename(void)
basedir_val = rb_const_get(rb_cObject, rb_intern_const("TMP_RUBY_PREFIX"));
basedir = StringValuePtr(basedir_val);
baselen = RSTRING_LEN(basedir_val);
verlen = strlen(ruby_version);
header_file = xmalloc(baselen + sizeof(header_name));
header_file = xmalloc(baselen + sizeof(header_name) + verlen + 2);
if (header_file == NULL)
return;
p = append_str2(header_file, basedir, baselen);
p = append_str2(p, header_name, sizeof(header_name));
p = append_str2(p, header_name, sizeof(header_name)-1);
p = append_str2(p, ruby_version, verlen);
p = append_str2(p, ".h", 3);
if ((fd = rb_cloexec_open(header_file, O_RDONLY, 0)) < 0) {
xfree(header_file);
header_file = NULL;