mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
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 4161674b2f
.
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.
This commit is contained in:
parent
6a1809e2e1
commit
26fae9aa9d
2 changed files with 0 additions and 10 deletions
2
mjit.c
2
mjit.c
|
@ -802,9 +802,7 @@ mjit_pause(bool wait_p)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mjit_pause_wait_p = wait_p; // Avoid cancelling the last compilation after the unit fetch if wait_p.
|
|
||||||
stop_worker();
|
stop_worker();
|
||||||
mjit_pause_wait_p = false;
|
|
||||||
return Qtrue;
|
return Qtrue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -210,8 +210,6 @@ static bool in_jit;
|
||||||
static bool stop_worker_p;
|
static bool stop_worker_p;
|
||||||
// Set to true if worker is stopped.
|
// Set to true if worker is stopped.
|
||||||
static bool worker_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.
|
// Path of "/tmp", which can be changed to $TMP in MinGW.
|
||||||
static char *tmp_dir;
|
static char *tmp_dir;
|
||||||
|
@ -1230,12 +1228,6 @@ mjit_worker(void)
|
||||||
mjit_func_t func = convert_unit_to_func(unit);
|
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);
|
(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");
|
CRITICAL_SECTION_START(3, "in jit func replace");
|
||||||
while (in_gc) { // Make sure we're not GC-ing when touching ISeq
|
while (in_gc) { // Make sure we're not GC-ing when touching ISeq
|
||||||
verbose(3, "Waiting wakeup from GC");
|
verbose(3, "Waiting wakeup from GC");
|
||||||
|
|
Loading…
Add table
Reference in a new issue