path: root/mjit_worker.c
diff options
authorTakashi Kokubun <>2019-10-13 09:59:43 -0700
committerTakashi Kokubun <>2019-10-13 09:59:44 -0700
commit26fae9aa9db59fdee7422a276662b45611e98a22 (patch)
tree29818422ea540f33f106abe26c29d50b73aff122 /mjit_worker.c
parent6a1809e2e1a95c14cfb72701df480e3ebccd4b24 (diff)
Remove the quick stop path after convert_unit_to_func
Now I'm not exactly sure why I needed to check `stop_worker_p` after `mjit_copy_cache_from_main_thread` of `convert_unit_to_func` in 4161674b2fbea6bdd01783ac5d3b39d88db22972. If it's for avoiding deadlock under `in_gc` condition, we should keep it. However, if it's not the case and it's just for retrying accidental compilation failure or just to avoid `MJIT_ATOMIC_SET` and `compact_all_jit_code`, I think this quick stop path is not mandatory. Because this path is somewhat problematic in my upcoming fix in mjit_worker, let me try to remove this first and see how CI goes.
Diffstat (limited to 'mjit_worker.c')
1 files changed, 0 insertions, 8 deletions
diff --git a/mjit_worker.c b/mjit_worker.c
index 193213e..c3b8d57 100644
--- a/mjit_worker.c
+++ b/mjit_worker.c
@@ -210,8 +210,6 @@ static bool in_jit;
static bool stop_worker_p;
// Set to true if worker is stopped.
static bool worker_stopped;
-// Set to true only when worker is being stopped for `RubyVM::MJIT.pause(wait: true)`.
-static bool mjit_pause_wait_p;
// Path of "/tmp", which can be changed to $TMP in MinGW.
static char *tmp_dir;
@@ -1230,12 +1228,6 @@ mjit_worker(void)
mjit_func_t func = convert_unit_to_func(unit);
(void)RB_DEBUG_COUNTER_INC_IF(mjit_compile_failures, func == (mjit_func_t)NOT_COMPILED_JIT_ISEQ_FUNC);
- // Checking `stop_worker_p` here because `mjit_copy_cache_from_main_thread` in `mjit_compile` may wait
- // for a long time and worker may be stopped during the compilation.
- // However, we do not want to stop here when the `stop_worker()` is from `MJIT.pause(wait: true)`.
- if (stop_worker_p && !mjit_pause_wait_p)
- break;
CRITICAL_SECTION_START(3, "in jit func replace");
while (in_gc) { // Make sure we're not GC-ing when touching ISeq
verbose(3, "Waiting wakeup from GC");