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

ruby-changes:56443

From: Takashi <ko1@a...>
Date: Sun, 14 Jul 2019 12:54:35 +0900 (JST)
Subject: [ruby-changes:56443] Takashi Kokubun: 4402c66978 (master): Refactor mjit_worker command line with C99

https://git.ruby-lang.org/ruby.git/commit/?id=4402c66978

From 4402c669785e7343cd65e4e90e436a3f8a3e00b5 Mon Sep 17 00:00:00 2001
From: Takashi Kokubun <takashikkbn@g...>
Date: Sun, 14 Jul 2019 12:53:39 +0900
Subject: Refactor mjit_worker command line with C99

Mostly non-constatnt array initializer, and mixed declarations and code.

diff --git a/mjit_worker.c b/mjit_worker.c
index 6bbcfdf..9f8a5f0 100644
--- a/mjit_worker.c
+++ b/mjit_worker.c
@@ -609,7 +609,6 @@ static int https://github.com/ruby/ruby/blob/trunk/mjit_worker.c#L609
 exec_process(const char *path, char *const argv[])
 {
     int stat, exit_code = -2;
-    pid_t pid;
     rb_vm_t *vm = WAITPID_USE_SIGCHLD ? GET_VM() : 0;
     rb_nativethread_cond_t cond;
 
@@ -618,7 +617,7 @@ exec_process(const char *path, char *const argv[]) https://github.com/ruby/ruby/blob/trunk/mjit_worker.c#L617
         rb_native_mutex_lock(&vm->waitpid_lock);
     }
 
-    pid = start_process(path, argv);
+    pid_t pid = start_process(path, argv);
     for (;pid > 0;) {
         pid_t r = vm ? ruby_waitpid_locked(vm, pid, &stat, 0, &cond)
                      : waitpid(pid, &stat, 0);
@@ -670,10 +669,8 @@ remove_so_file(const char *so_file, struct rb_mjit_unit *unit) https://github.com/ruby/ruby/blob/trunk/mjit_worker.c#L669
 static bool
 compile_c_to_so(const char *c_file, const char *so_file)
 {
-    int exit_code;
     const char *files[] = { NULL, NULL, NULL, NULL, NULL, NULL, "-link", libruby_pathflag, NULL };
-    char **args;
-    char *p, *obj_file;
+    char *p;
 
     // files[0] = "-Fe*.dll"
     files[0] = p = alloca(sizeof(char) * (rb_strlen_lit("-Fe") + strlen(so_file) + 1));
@@ -684,7 +681,7 @@ compile_c_to_so(const char *c_file, const char *so_file) https://github.com/ruby/ruby/blob/trunk/mjit_worker.c#L681
     // files[1] = "-Fo*.obj"
     // We don't need .obj file, but it's somehow created to cwd without -Fo and we want to control the output directory.
     files[1] = p = alloca(sizeof(char) * (rb_strlen_lit("-Fo") + strlen(so_file) - rb_strlen_lit(DLEXT) + rb_strlen_lit(".obj") + 1));
-    obj_file = p = append_lit(p, "-Fo");
+    char *obj_file = p = append_lit(p, "-Fo");
     p = append_str2(p, so_file, strlen(so_file) - rb_strlen_lit(DLEXT));
     p = append_lit(p, ".obj");
     *p = '\0';
@@ -714,12 +711,12 @@ compile_c_to_so(const char *c_file, const char *so_file) https://github.com/ruby/ruby/blob/trunk/mjit_worker.c#L711
     p = append_lit(p, ".pdb");
     *p = '\0';
 
-    args = form_args(5, CC_LDSHARED_ARGS, CC_CODEFLAG_ARGS,
-                     files, CC_LIBS, CC_DLDFLAGS_ARGS);
+    char **args = form_args(5, CC_LDSHARED_ARGS, CC_CODEFLAG_ARGS,
+            files, CC_LIBS, CC_DLDFLAGS_ARGS);
     if (args == NULL)
         return false;
 
-    exit_code = exec_process(cc_path, args);
+    int exit_code = exec_process(cc_path, args);
     free(args);
 
     if (exit_code == 0) {
@@ -745,7 +742,6 @@ compile_c_to_so(const char *c_file, const char *so_file) https://github.com/ruby/ruby/blob/trunk/mjit_worker.c#L742
 static void
 make_pch(void)
 {
-    int exit_code;
     const char *rest_args[] = {
 # ifdef __clang__
         "-emit-pch",
@@ -753,16 +749,12 @@ make_pch(void) https://github.com/ruby/ruby/blob/trunk/mjit_worker.c#L749
         // -nodefaultlibs is a linker flag, but it may affect cc1 behavior on Gentoo, which should NOT be changed on pch:
         // https://gitweb.gentoo.org/proj/gcc-patches.git/tree/7.3.0/gentoo/13_all_default-ssp-fix.patch
         GCC_NOSTDLIB_FLAGS
-        "-o", NULL, NULL,
+        "-o", pch_file, header_file,
         NULL,
     };
-    char **args;
-    int len = sizeof(rest_args) / sizeof(const char *);
 
-    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);
+    char **args = form_args(3, cc_common_args, CC_CODEFLAG_ARGS, rest_args);
     if (args == NULL) {
         mjit_warning("making precompiled header failed on forming args");
         CRITICAL_SECTION_START(3, "in make_pch");
@@ -771,7 +763,7 @@ make_pch(void) https://github.com/ruby/ruby/blob/trunk/mjit_worker.c#L763
         return;
     }
 
-    exit_code = exec_process(cc_path, args);
+    int exit_code = exec_process(cc_path, args);
     free(args);
 
     CRITICAL_SECTION_START(3, "in make_pch");
@@ -791,26 +783,19 @@ make_pch(void) https://github.com/ruby/ruby/blob/trunk/mjit_worker.c#L783
 static bool
 compile_c_to_o(const char *c_file, const char *o_file)
 {
-    int exit_code;
     const char *files[] = {
-        "-o", NULL, NULL,
+        "-o", o_file, c_file,
 # ifdef __clang__
-        "-include-pch", NULL,
+        "-include-pch", pch_file,
 # endif
         "-c", NULL
     };
-    char **args;
 
-    files[1] = o_file;
-    files[2] = c_file;
-# ifdef __clang__
-    files[4] = pch_file;
-# endif
-    args = form_args(5, cc_common_args, CC_CODEFLAG_ARGS, files, CC_LIBS, CC_DLDFLAGS_ARGS);
+    char **args = form_args(5, cc_common_args, CC_CODEFLAG_ARGS, files, CC_LIBS, CC_DLDFLAGS_ARGS);
     if (args == NULL)
         return false;
 
-    exit_code = exec_process(cc_path, args);
+    int exit_code = exec_process(cc_path, args);
     free(args);
 
     if (exit_code != 0)
@@ -822,23 +807,20 @@ compile_c_to_o(const char *c_file, const char *o_file) https://github.com/ruby/ruby/blob/trunk/mjit_worker.c#L807
 static bool
 link_o_to_so(const char **o_files, const char *so_file)
 {
-    int exit_code;
     const char *options[] = {
-        "-o", NULL,
+        "-o", so_file,
 # ifdef _WIN32
         libruby_pathflag,
 # endif
         NULL
     };
-    char **args;
 
-    options[1] = so_file;
-    args = form_args(6, CC_LDSHARED_ARGS, CC_CODEFLAG_ARGS,
-                     options, o_files, CC_LIBS, CC_DLDFLAGS_ARGS);
+    char **args = form_args(6, CC_LDSHARED_ARGS, CC_CODEFLAG_ARGS,
+            options, o_files, CC_LIBS, CC_DLDFLAGS_ARGS);
     if (args == NULL)
         return false;
 
-    exit_code = exec_process(cc_path, args);
+    int exit_code = exec_process(cc_path, args);
     free(args);
 
     if (exit_code != 0)
-- 
cgit v0.10.2


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

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