diff options
author | Takashi Kokubun <[email protected]> | 2020-11-20 22:41:55 -0800 |
---|---|---|
committer | Takashi Kokubun <[email protected]> | 2020-11-20 22:47:54 -0800 |
commit | ed8e552d4d2c825a3f780ac8bd898eaaca7c21e7 (patch) | |
tree | 33555b13eed036e4652df35c4ec2c4d603c308c5 /mjit_worker.c | |
parent | 3f8c60cf09da72d1d538e39aee890f511b498fea (diff) |
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.
Diffstat (limited to 'mjit_worker.c')
-rw-r--r-- | mjit_worker.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/mjit_worker.c b/mjit_worker.c index fe784fec2c..c8b761d141 100644 --- a/mjit_worker.c +++ b/mjit_worker.c @@ -934,7 +934,6 @@ compact_all_jit_code(void) { # 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) 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; |