mjit_worker.c: prefix mjit_ to pch_status

which was just forgotten.

mjit.c: ditto

mjit_internal.h: moved some macros only used by mjit_worker.c to it.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64287 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
k0kubun 2018-08-11 08:07:13 +00:00
Родитель 58de76846b
Коммит b2e0d54024
3 изменённых файлов: 20 добавлений и 20 удалений

12
mjit.c
Просмотреть файл

@ -192,7 +192,7 @@ free_list(struct rb_mjit_unit_list *list)
} }
} }
extern enum pch_status_t pch_status; extern enum pch_status_t mjit_pch_status;
extern int mjit_stop_worker_p; extern int mjit_stop_worker_p;
extern int mjit_worker_stopped; extern int mjit_worker_stopped;
@ -368,7 +368,7 @@ mjit_add_iseq_to_process(const rb_iseq_t *iseq)
{ {
struct rb_mjit_unit_node *node; struct rb_mjit_unit_node *node;
if (!mjit_enabled || pch_status == PCH_FAILED) if (!mjit_enabled || mjit_pch_status == PCH_FAILED)
return; return;
iseq->body->jit_func = (mjit_func_t)NOT_READY_JIT_ISEQ_FUNC; iseq->body->jit_func = (mjit_func_t)NOT_READY_JIT_ISEQ_FUNC;
@ -402,7 +402,7 @@ mjit_get_iseq_func(struct rb_iseq_constant_body *body)
tv.tv_usec = 1000; tv.tv_usec = 1000;
while (body->jit_func == (mjit_func_t)NOT_READY_JIT_ISEQ_FUNC) { while (body->jit_func == (mjit_func_t)NOT_READY_JIT_ISEQ_FUNC) {
tries++; tries++;
if (tries / 1000 > MJIT_WAIT_TIMEOUT_SECONDS || pch_status == PCH_FAILED) { if (tries / 1000 > MJIT_WAIT_TIMEOUT_SECONDS || mjit_pch_status == PCH_FAILED) {
CRITICAL_SECTION_START(3, "in mjit_get_iseq_func to set jit_func"); CRITICAL_SECTION_START(3, "in mjit_get_iseq_func to set jit_func");
body->jit_func = (mjit_func_t)NOT_COMPILED_JIT_ISEQ_FUNC; /* JIT worker seems dead. Give up. */ body->jit_func = (mjit_func_t)NOT_COMPILED_JIT_ISEQ_FUNC; /* JIT worker seems dead. Give up. */
CRITICAL_SECTION_FINISH(3, "in mjit_get_iseq_func to set jit_func"); CRITICAL_SECTION_FINISH(3, "in mjit_get_iseq_func to set jit_func");
@ -661,9 +661,9 @@ mjit_init(struct mjit_options *opts)
/* Initialize variables for compilation */ /* Initialize variables for compilation */
#ifdef _MSC_VER #ifdef _MSC_VER
pch_status = PCH_SUCCESS; /* has prebuilt precompiled header */ mjit_pch_status = PCH_SUCCESS; /* has prebuilt precompiled header */
#else #else
pch_status = PCH_NOT_READY; mjit_pch_status = PCH_NOT_READY;
#endif #endif
mjit_cc_path = CC_PATH; mjit_cc_path = CC_PATH;
@ -779,7 +779,7 @@ mjit_finish(void)
threads can produce temp files. And even if the temp files are threads can produce temp files. And even if the temp files are
removed, the used C compiler still complaint about their removed, the used C compiler still complaint about their
absence. So wait for a clean finish of the threads. */ absence. So wait for a clean finish of the threads. */
while (pch_status == PCH_NOT_READY) { while (mjit_pch_status == PCH_NOT_READY) {
verbose(3, "Waiting wakeup from make_pch"); verbose(3, "Waiting wakeup from make_pch");
rb_native_cond_wait(&mjit_pch_wakeup, &mjit_engine_mutex); rb_native_cond_wait(&mjit_pch_wakeup, &mjit_engine_mutex);
} }

Просмотреть файл

@ -19,20 +19,12 @@
# define MAXPATHLEN 1024 # define MAXPATHLEN 1024
#endif #endif
#define RB_CONDATTR_CLOCK_MONOTONIC 1
#ifdef _WIN32 #ifdef _WIN32
#define dlopen(name,flag) ((void*)LoadLibrary(name)) #define dlopen(name,flag) ((void*)LoadLibrary(name))
#define dlerror() strerror(rb_w32_map_errno(GetLastError())) #define dlerror() strerror(rb_w32_map_errno(GetLastError()))
#define dlsym(handle,name) ((void*)GetProcAddress((handle),(name))) #define dlsym(handle,name) ((void*)GetProcAddress((handle),(name)))
#define dlclose(handle) (FreeLibrary(handle)) #define dlclose(handle) (FreeLibrary(handle))
#define RTLD_NOW -1 #define RTLD_NOW -1
#define waitpid(pid,stat_loc,options) (WaitForSingleObject((HANDLE)(pid), INFINITE), GetExitCodeProcess((HANDLE)(pid), (LPDWORD)(stat_loc)), (pid))
#define WIFEXITED(S) ((S) != STILL_ACTIVE)
#define WEXITSTATUS(S) (S)
#define WIFSIGNALED(S) (0)
typedef intptr_t pid_t;
#endif #endif
#define MJIT_TMP_PREFIX "_ruby_mjit_" #define MJIT_TMP_PREFIX "_ruby_mjit_"

Просмотреть файл

@ -101,6 +101,14 @@
#include "dln.h" #include "dln.h"
#include "mjit_internal.h" #include "mjit_internal.h"
#ifdef _WIN32
#define waitpid(pid,stat_loc,options) (WaitForSingleObject((HANDLE)(pid), INFINITE), GetExitCodeProcess((HANDLE)(pid), (LPDWORD)(stat_loc)), (pid))
#define WIFEXITED(S) ((S) != STILL_ACTIVE)
#define WEXITSTATUS(S) (S)
#define WIFSIGNALED(S) (0)
typedef intptr_t pid_t;
#endif
/* process.c */ /* process.c */
rb_pid_t ruby_waitpid_locked(rb_vm_t *, rb_pid_t, int *status, int options, rb_pid_t ruby_waitpid_locked(rb_vm_t *, rb_pid_t, int *status, int options,
rb_nativethread_cond_t *cond); rb_nativethread_cond_t *cond);
@ -198,7 +206,7 @@ static const char *const CC_LIBS[] = {
/* Status of the precompiled header creation. The status is /* Status of the precompiled header creation. The status is
shared by the workers and the pch thread. */ shared by the workers and the pch thread. */
enum pch_status_t pch_status; enum pch_status_t mjit_pch_status;
/* Return the best unit from list. The best is the first /* Return the best unit from list. The best is the first
high priority unit or the unit whose iseq has the biggest number high priority unit or the unit whose iseq has the biggest number
@ -461,7 +469,7 @@ make_pch(void)
if (mjit_opts.warnings || mjit_opts.verbose) if (mjit_opts.warnings || mjit_opts.verbose)
fprintf(stderr, "MJIT warning: making precompiled header failed on forming args\n"); fprintf(stderr, "MJIT warning: making precompiled header failed on forming args\n");
CRITICAL_SECTION_START(3, "in make_pch"); CRITICAL_SECTION_START(3, "in make_pch");
pch_status = PCH_FAILED; mjit_pch_status = PCH_FAILED;
CRITICAL_SECTION_FINISH(3, "in make_pch"); CRITICAL_SECTION_FINISH(3, "in make_pch");
return; return;
} }
@ -471,11 +479,11 @@ make_pch(void)
CRITICAL_SECTION_START(3, "in make_pch"); CRITICAL_SECTION_START(3, "in make_pch");
if (exit_code == 0) { if (exit_code == 0) {
pch_status = PCH_SUCCESS; mjit_pch_status = PCH_SUCCESS;
} else { } else {
if (mjit_opts.warnings || mjit_opts.verbose) if (mjit_opts.warnings || mjit_opts.verbose)
fprintf(stderr, "MJIT warning: Making precompiled header failed on compilation. Stopping MJIT worker...\n"); fprintf(stderr, "MJIT warning: Making precompiled header failed on compilation. Stopping MJIT worker...\n");
pch_status = PCH_FAILED; mjit_pch_status = PCH_FAILED;
} }
/* wakeup `mjit_finish` */ /* wakeup `mjit_finish` */
rb_native_cond_broadcast(&mjit_pch_wakeup); rb_native_cond_broadcast(&mjit_pch_wakeup);
@ -843,11 +851,11 @@ void
mjit_worker(void) mjit_worker(void)
{ {
#ifndef _MSC_VER #ifndef _MSC_VER
if (pch_status == PCH_NOT_READY) { if (mjit_pch_status == PCH_NOT_READY) {
make_pch(); make_pch();
} }
#endif #endif
if (pch_status == PCH_FAILED) { if (mjit_pch_status == PCH_FAILED) {
mjit_enabled = FALSE; mjit_enabled = FALSE;
CRITICAL_SECTION_START(3, "in worker to update mjit_worker_stopped"); CRITICAL_SECTION_START(3, "in worker to update mjit_worker_stopped");
mjit_worker_stopped = TRUE; mjit_worker_stopped = TRUE;