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

ruby-changes:52084

From: k0kubun <ko1@a...>
Date: Sat, 11 Aug 2018 19:06:01 +0900 (JST)
Subject: [ruby-changes:52084] k0kubun:r64292 (trunk): mjit_worker.c: resurrect more static declarations

k0kubun	2018-08-11 19:05:56 +0900 (Sat, 11 Aug 2018)

  New Revision: 64292

  https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=64292

  Log:
    mjit_worker.c: resurrect more static declarations
    
    and remove old mjit_ prefixes again.
    
    mjit.c: ditto

  Modified files:
    trunk/mjit.c
    trunk/mjit_worker.c
Index: mjit_worker.c
===================================================================
--- mjit_worker.c	(revision 64291)
+++ mjit_worker.c	(revision 64292)
@@ -153,8 +153,6 @@ struct rb_mjit_unit_list { https://github.com/ruby/ruby/blob/trunk/mjit_worker.c#L153
     int length; /* the list length */
 };
 
-enum pch_status_t {PCH_NOT_READY, PCH_FAILED, PCH_SUCCESS};
-
 extern void rb_native_mutex_lock(rb_nativethread_lock_t *lock);
 extern void rb_native_mutex_unlock(rb_nativethread_lock_t *lock);
 extern void rb_native_mutex_initialize(rb_nativethread_lock_t *lock);
@@ -202,9 +200,13 @@ static rb_nativethread_cond_t mjit_worke https://github.com/ruby/ruby/blob/trunk/mjit_worker.c#L200
 /* A thread conditional to wake up workers if at the end of GC.  */
 static rb_nativethread_cond_t mjit_gc_wakeup;
 /* True when GC is working.  */
-static int mjit_in_gc;
+static int in_gc;
 /* True when JIT is working.  */
-static int mjit_in_jit;
+static int in_jit;
+/* Set to TRUE to stop worker.  */
+static int stop_worker_p;
+/* Set to TRUE if worker is stopped.  */
+static int worker_stopped;
 
 /* Path of "/tmp", which can be changed to $TMP in MinGW. */
 static char *tmp_dir;
@@ -212,23 +214,22 @@ static char *tmp_dir; https://github.com/ruby/ruby/blob/trunk/mjit_worker.c#L214
    This is used to invalidate obsoleted CALL_CACHE. */
 static VALUE valid_class_serials;
 
-/* --- Defined in the client thread before starting MJIT threads: ---  */
 /* Used C compiler path.  */
-const char *cc_path;
+static const char *cc_path;
 /* Name of the precompiled header file.  */
-char *pch_file;
+static char *pch_file;
 /* Status of the precompiled header creation.  The status is
    shared by the workers and the pch thread.  */
-enum pch_status_t mjit_pch_status;
+static enum {PCH_NOT_READY, PCH_FAILED, PCH_SUCCESS} pch_status;
 
 #ifndef _MSC_VER
 /* Name of the header file.  */
-char *mjit_header_file;
+static char *header_file;
 #endif
 
 #ifdef _WIN32
 /* Linker option to enable libruby. */
-char *mjit_libruby_pathflag;
+static char *libruby_pathflag;
 #endif
 
 #include "mjit_config.h"
@@ -656,7 +657,7 @@ static int https://github.com/ruby/ruby/blob/trunk/mjit_worker.c#L657
 compile_c_to_so(const char *c_file, const char *so_file)
 {
     int exit_code;
-    const char *files[] = { NULL, NULL, NULL, NULL, "-link", mjit_libruby_pathflag, NULL };
+    const char *files[] = { NULL, NULL, NULL, NULL, "-link", libruby_pathflag, NULL };
     char **args;
     char *p;
 
@@ -728,7 +729,7 @@ make_pch(void) https://github.com/ruby/ruby/blob/trunk/mjit_worker.c#L729
     char **args;
     int len = sizeof(rest_args) / sizeof(const char *);
 
-    rest_args[len - 2] = mjit_header_file;
+    rest_args[len - 2] = header_file;
     rest_args[len - 3] = pch_file;
     verbose(2, "Creating precompiled header");
     args = form_args(3, CC_COMMON_ARGS, CC_CODEFLAG_ARGS, rest_args);
@@ -736,7 +737,7 @@ make_pch(void) https://github.com/ruby/ruby/blob/trunk/mjit_worker.c#L737
         if (mjit_opts.warnings || mjit_opts.verbose)
             fprintf(stderr, "MJIT warning: making precompiled header failed on forming args\n");
         CRITICAL_SECTION_START(3, "in make_pch");
-        mjit_pch_status = PCH_FAILED;
+        pch_status = PCH_FAILED;
         CRITICAL_SECTION_FINISH(3, "in make_pch");
         return;
     }
@@ -746,11 +747,11 @@ make_pch(void) https://github.com/ruby/ruby/blob/trunk/mjit_worker.c#L747
 
     CRITICAL_SECTION_START(3, "in make_pch");
     if (exit_code == 0) {
-        mjit_pch_status = PCH_SUCCESS;
+        pch_status = PCH_SUCCESS;
     } else {
         if (mjit_opts.warnings || mjit_opts.verbose)
             fprintf(stderr, "MJIT warning: Making precompiled header failed on compilation. Stopping MJIT worker...\n");
-        mjit_pch_status = PCH_FAILED;
+        pch_status = PCH_FAILED;
     }
     /* wakeup `mjit_finish` */
     rb_native_cond_broadcast(&mjit_pch_wakeup);
@@ -796,7 +797,7 @@ link_o_to_so(const char **o_files, const https://github.com/ruby/ruby/blob/trunk/mjit_worker.c#L797
     const char *options[] = {
         "-o", NULL,
 # ifdef _WIN32
-        mjit_libruby_pathflag,
+        libruby_pathflag,
 # endif
         NULL
     };
@@ -1031,11 +1032,11 @@ convert_unit_to_func(struct rb_mjit_unit https://github.com/ruby/ruby/blob/trunk/mjit_worker.c#L1032
 
     /* wait until mjit_gc_finish_hook is called */
     CRITICAL_SECTION_START(3, "before mjit_compile to wait GC finish");
-    while (mjit_in_gc) {
+    while (in_gc) {
         verbose(3, "Waiting wakeup from GC");
         rb_native_cond_wait(&mjit_gc_wakeup, &mjit_engine_mutex);
     }
-    mjit_in_jit = TRUE;
+    in_jit = TRUE;
     CRITICAL_SECTION_FINISH(3, "before mjit_compile to wait GC finish");
 
     {
@@ -1050,7 +1051,7 @@ convert_unit_to_func(struct rb_mjit_unit https://github.com/ruby/ruby/blob/trunk/mjit_worker.c#L1051
 
     /* release blocking mjit_gc_start_hook */
     CRITICAL_SECTION_START(3, "after mjit_compile to wakeup client for GC");
-    mjit_in_jit = FALSE;
+    in_jit = FALSE;
     verbose(3, "Sending wakeup signal to client in a mjit-worker for GC");
     rb_native_cond_signal(&mjit_client_wakeup);
     CRITICAL_SECTION_FINISH(3, "in worker to wakeup client for GC");
@@ -1106,11 +1107,6 @@ convert_unit_to_func(struct rb_mjit_unit https://github.com/ruby/ruby/blob/trunk/mjit_worker.c#L1107
     return (mjit_func_t)func;
 }
 
-/* Set to TRUE to stop worker.  */
-int mjit_stop_worker_p;
-/* Set to TRUE if worker is stopped.  */
-int mjit_worker_stopped;
-
 /* The function implementing a worker. It is executed in a separate
    thread by rb_thread_create_mjit_thread. It compiles precompiled header
    and then compiles requested ISeqs. */
@@ -1118,27 +1114,27 @@ void https://github.com/ruby/ruby/blob/trunk/mjit_worker.c#L1114
 mjit_worker(void)
 {
 #ifndef _MSC_VER
-    if (mjit_pch_status == PCH_NOT_READY) {
+    if (pch_status == PCH_NOT_READY) {
         make_pch();
     }
 #endif
-    if (mjit_pch_status == PCH_FAILED) {
+    if (pch_status == PCH_FAILED) {
         mjit_enabled = FALSE;
-        CRITICAL_SECTION_START(3, "in worker to update mjit_worker_stopped");
-        mjit_worker_stopped = TRUE;
+        CRITICAL_SECTION_START(3, "in worker to update worker_stopped");
+        worker_stopped = TRUE;
         verbose(3, "Sending wakeup signal to client in a mjit-worker");
         rb_native_cond_signal(&mjit_client_wakeup);
-        CRITICAL_SECTION_FINISH(3, "in worker to update mjit_worker_stopped");
+        CRITICAL_SECTION_FINISH(3, "in worker to update worker_stopped");
         return; /* TODO: do the same thing in the latter half of mjit_finish */
     }
 
     /* main worker loop */
-    while (!mjit_stop_worker_p) {
+    while (!stop_worker_p) {
         struct rb_mjit_unit_node *node;
 
         /* wait until unit is available */
         CRITICAL_SECTION_START(3, "in worker dequeue");
-        while ((unit_queue.head == NULL || active_units.length > mjit_opts.max_cache_size) && !mjit_stop_worker_p) {
+        while ((unit_queue.head == NULL || active_units.length > mjit_opts.max_cache_size) && !stop_worker_p) {
             rb_native_cond_wait(&mjit_worker_wakeup, &mjit_engine_mutex);
             verbose(3, "Getting wakeup from client");
         }
@@ -1167,5 +1163,5 @@ mjit_worker(void) https://github.com/ruby/ruby/blob/trunk/mjit_worker.c#L1163
     }
 
     /* To keep mutex unlocked when it is destroyed by mjit_finish, don't wrap CRITICAL_SECTION here. */
-    mjit_worker_stopped = TRUE;
+    worker_stopped = TRUE;
 }
Index: mjit.c
===================================================================
--- mjit.c	(revision 64291)
+++ mjit.c	(revision 64292)
@@ -17,16 +17,6 @@ https://github.com/ruby/ruby/blob/trunk/mjit.c#L17
 
 extern int rb_thread_create_mjit_thread(void (*worker_func)(void));
 
-#ifndef _MSC_VER
-/* Name of the header file.  */
-extern char *mjit_header_file;
-#endif
-
-#ifdef _WIN32
-/* Linker option to enable libruby. */
-extern char *mjit_libruby_pathflag;
-#endif
-
 /* Make and return copy of STR in the heap. */
 #define get_string ruby_strdup
 
@@ -58,12 +48,12 @@ mjit_gc_start_hook(void) https://github.com/ruby/ruby/blob/trunk/mjit.c#L48
     if (!mjit_enabled)
         return;
     CRITICAL_SECTION_START(4, "mjit_gc_start_hook");
-    while (mjit_in_jit) {
+    while (in_jit) {
         verbose(4, "Waiting wakeup from a worker for GC");
         rb_native_cond_wait(&mjit_client_wakeup, &mjit_engine_mutex);
         verbose(4, "Getting wakeup from a worker for GC");
     }
-    mjit_in_gc = TRUE;
+    in_gc = TRUE;
     CRITICAL_SECTION_FINISH(4, "mjit_gc_start_hook");
 }
 
@@ -75,7 +65,7 @@ mjit_gc_finish_hook(void) https://github.com/ruby/ruby/blob/trunk/mjit.c#L65
     if (!mjit_enabled)
         return;
     CRITICAL_SECTION_START(4, "mjit_gc_finish_hook");
-    mjit_in_gc = FALSE;
+    in_gc = FALSE;
     verbose(4, "Sending wakeup signal to workers after GC");
     rb_native_cond_broadcast(&mjit_gc_wakeup);
     CRITICAL_SECTION_FINISH(4, "mjit_gc_finish_hook");
@@ -119,10 +109,6 @@ free_list(struct rb_mjit_unit_list *list https://github.com/ruby/ruby/blob/trunk/mjit.c#L109
     }
 }
 
-extern enum pch_status_t mjit_pch_status;
-extern int mjit_stop_worker_p;
-extern int mjit_worker_stopped;
-
 /* MJIT info related to an existing continutaion.  */
 struct mjit_cont {
     rb_execution_context_t *ec; /* continuation ec */
@@ -295,7 +281,7 @@ mjit_add_iseq_to_process(const rb_iseq_t https://github.com/ruby/ruby/blob/trunk/mjit.c#L281
 {
     struct rb_mjit_unit_node *node;
 
-    if (!mjit_enabled || mjit_pch_status == PCH_FAILED)
+    if (!mjit_enabled || pch_status == PCH_FAILED)
         return;
 
     iseq->body->jit_func = (mjit_func_t)NOT_READY_JIT_ISEQ_FUNC;
@@ -329,7 +315,7 @@ mjit_get_iseq_func(struct rb_iseq_consta https://github.com/ruby/ruby/blob/trunk/mjit.c#L315
     tv.tv_usec = 1000;
     while (body->jit_func == (mjit_func_t)NOT_READY_JIT_ISEQ_FUNC) {
         tries++;
-        if (tries / 1000 > MJIT_WAIT_TIMEOUT_SECONDS || mjit_pch_status == PCH_FAILED) {
+        if (tries / 1000 > MJIT_WAIT_TIMEOUT_SECONDS || pch_status == PCH_FAILED) {
             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. */
             CRITICAL_SECTION_FINISH(3, "in mjit_get_iseq_func to set jit_func");
@@ -348,7 +334,7 @@ mjit_get_iseq_func(struct rb_iseq_consta https://github.com/ruby/ruby/blob/trunk/mjit.c#L334
 
 extern VALUE ruby_archlibdir_path, ruby_prefix_path;
 
-/* Initialize mjit_header_file, pch_file, mjit_libruby_pathflag. Return TRUE on success. */
+/* Initialize header_file, pch_file, libruby_pathflag. Return TRUE on success. */
 static int
 init_header_filename(void)
 {
@@ -389,13 +375,13 @@ init_header_filename(void) https://github.com/ruby/ruby/blob/trunk/mjit.c#L375
         static const char header_name[] = MJIT_MIN_HEADER_NAME;
         const size_t header_name_len = sizeof(header_name) - 1;
 
-        mjit_header_file = xmalloc(baselen + header_name_len + 1);
-        p = append_str2(mjit_header_file, basedir, baselen);
+        header_file = xmalloc(baselen + header_name_len + 1);
+        p = append_str2(header_file, basedir, baselen);
         p = append_str2(p, header_name, header_name_len + 1);
-        if ((fd = rb_cloexec_open(mjit_header_file, O_RDONLY, 0)) < 0) {
-            verbose(1, "Cannot access header file: %s", mjit_header_file);
-            xfree(mjit_header_file);
-            mjit_header_file = NULL;
+        if ((fd = rb_cloexec_open(header_file, O_RDONLY, 0)) < 0) {
+            verbose(1, "Cannot access header file: %s", header_file);
+            xfree(header_file);
+            header_file = NULL;
             return FALSE;
         }
         (void)close(fd);
@@ -426,7 +412,7 @@ init_header_filename(void) https://github.com/ruby/ruby/blob/trunk/mjit.c#L412
     basedir_val = ruby_archlibdir_path;
     basedir = StringValuePtr(basedir_val);
     baselen = RSTRING_LEN(basedir_val);
-    mjit_libruby_pathflag = p = xmalloc(libpathflag_len + baselen + 1);
+    libruby_pathflag = p = xmalloc(libpathflag_len + baselen + 1);
     p = append_str(p, libpathflag);
     p = append_str2(p, basedir, baselen);
     *p = '\0';
@@ -550,8 +536,8 @@ start_worker(void) https://github.com/ruby/ruby/blob/trunk/mjit.c#L536
 {
     extern void mjit_worker(void);
 
-    mjit_stop_worker_p = FALSE;
-    mjit_worker_stopped = FALSE;
+    stop_worker_p = FALSE;
+    worker_stopped = FALSE;
 
     if (!rb_thread_create_mjit_thread(mjit_worker)) {
         mjit_enabled = FALSE;
@@ -588,9 +574,9 @@ mjit_init(struct mjit_options *opts) https://github.com/ruby/ruby/blob/trunk/mjit.c#L574
 
     /* Initialize variables for compilation */
 #ifdef _MSC_VER
-    mjit_pch_status = PCH_SUCCESS; /* has prebuilt precompiled header */
+    pch_status = PCH_SUCCESS; /* has prebuilt precompiled header */
 #else
-    mjit_pch_status = PCH_NOT_READY;
+    pch_status = PCH_NOT_READY;
 #endif
     cc_path = CC_PATH;
 
@@ -633,8 +619,8 @@ stop_worker(void) https://github.com/ruby/ruby/blob/trunk/mjit.c#L619
 {
     rb_execution_context_t *ec = GET_EC();
 
-    mjit_stop_worker_p = TRUE;
-    while (!mjit_worker_stopped) {
+    stop_worker_p = TRUE;
+    while (!worker_stopped) {
         verbose(3, "Sending cancel signal to worker");
         CRITICAL_SECTION_START(3, "in stop_worker");
         rb_native_cond_broadcast(&mjit_worker_wakeup);
@@ -650,7 +636,7 @@ mjit_pause(int wait_p) https://github.com/ruby/ruby/blob/trunk/mjit.c#L636
     if (!mjit_enabled) {
         rb_raise(rb_eRuntimeError, "MJIT is not enabled");
     }
-    if (mjit_worker_stopped) {
+    if (worker_stopped) {
         return Qfalse;
     }
 
@@ -679,7 +665,7 @@ mjit_resume(void) https://github.com/ruby/ruby/blob/trunk/mjit.c#L665
     if (!mjit_enabled) {
         rb_raise(rb_eRuntimeError, "MJIT is not enabled");
     }
-    if (!mjit_worker_stopped) {
+    if (!worker_stopped) {
         return Qfalse;
     }
 
@@ -706,7 +692,7 @@ mjit_finish(void) https://github.com/ruby/ruby/blob/trunk/mjit.c#L692
        threads can produce temp files.  And even if the temp files are
        removed, the used C compiler still complaint about their
        absence.  So wait for a clean finish of the threads.  */
-    while (mjit_pch_status == PCH_NOT_READY) {
+    while (pch_status == PCH_NOT_READY) {
         verbose(3, "Waiting wakeup from make_pch");
         rb_native_cond_wait(&mjit_pch_wakeup, &mjit_engine_mutex);
     }
@@ -725,7 +711,7 @@ mjit_finish(void) https://github.com/ruby/ruby/blob/trunk/mjit.c#L711
     if (!mjit_opts.save_temps)
         remove_file(pch_file);
 
-    xfree(mjit_header_file); mjit_header_file = NULL;
+    xfree(header_file); header_file = NULL;
 #endif
     xfree(tmp_dir); tmp_dir = NULL;
     xfree(pch_file); pch_file = NULL;

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

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