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

ruby-changes:63670

From: Takashi <ko1@a...>
Date: Sat, 21 Nov 2020 15:57:38 +0900 (JST)
Subject: [ruby-changes:63670] ed8e552d4d (master): Shrink the blocking region for compile_compact_jit_code

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

From ed8e552d4d2c825a3f780ac8bd898eaaca7c21e7 Mon Sep 17 00:00:00 2001
From: Takashi Kokubun <takashikkbn@g...>
Date: Fri, 20 Nov 2020 22:41:55 -0800
Subject: Shrink the blocking region for compile_compact_jit_code

Isn't setting `in_compact = true` enough to avoid a race condition
between JIT compaction and unload_units? Now I think it is.

This change will make it easier to spend more time on compile_compact_jit_code.
For now it seems to take only 0.0723ms though.

diff --git a/mjit_worker.c b/mjit_worker.c
index fe784fe..c8b761d 100644
--- a/mjit_worker.c
+++ b/mjit_worker.c
@@ -934,7 +934,6 @@ compact_all_jit_code(void) https://github.com/ruby/ruby/blob/trunk/mjit_worker.c#L934
 {
 # if USE_HEADER_TRANSFORMATION
     struct rb_mjit_unit *unit, *cur = 0;
-    double start_time, end_time;
     static const char c_ext[] = ".c";
     static const char so_ext[] = DLEXT;
     char c_file[MAXPATHLEN], so_file[MAXPATHLEN];
@@ -947,17 +946,17 @@ compact_all_jit_code(void) https://github.com/ruby/ruby/blob/trunk/mjit_worker.c#L946
 
     sprint_uniq_filename(c_file, (int)sizeof(c_file), unit->id, MJIT_TMP_PREFIX, c_ext);
     CRITICAL_SECTION_START(3, "in compact_all_jit_code to guard .c files from unload_units");
-    bool success = compile_compact_jit_code(c_file);
     in_compact = true;
     CRITICAL_SECTION_FINISH(3, "in compact_all_jit_code to guard .c files from unload_units");
 
-    start_time = real_ms_time();
+    bool success = compile_compact_jit_code(c_file);
+    double start_time = real_ms_time();
     if (success) {
         success = compile_c_to_so(c_file, so_file);
         if (!mjit_opts.save_temps)
             remove_file(c_file);
     }
-    end_time = real_ms_time();
+    double end_time = real_ms_time();
 
     CRITICAL_SECTION_START(3, "in compact_all_jit_code to release .c files");
     in_compact = false;
-- 
cgit v0.10.2


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

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