aboutsummaryrefslogtreecommitdiffstats
path: root/mjit.c
diff options
context:
space:
mode:
authorTakashi Kokubun <takashikkbn@gmail.com>2020-12-16 19:43:17 -0800
committerTakashi Kokubun <takashikkbn@gmail.com>2020-12-16 19:43:43 -0800
commitd07183ec85dc20c7c034170bd8964c79c34a47d7 (patch)
tree0896821668fd4c1cd244e844656cd20c5d04e373 /mjit.c
parent93ba3ac03681a2a65ca28b4c5aaba72da9e16f97 (diff)
downloadruby-d07183ec85dc20c7c034170bd8964c79c34a47d7.tar.gz
Do not access jit_unit if NULL
Diffstat (limited to 'mjit.c')
-rw-r--r--mjit.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/mjit.c b/mjit.c
index 65284172e7..564d10db17 100644
--- a/mjit.c
+++ b/mjit.c
@@ -350,6 +350,10 @@ mjit_recompile(const rb_iseq_t *iseq)
verbose(1, "JIT recompile: %s@%s:%d", RSTRING_PTR(iseq->body->location.label),
RSTRING_PTR(rb_iseq_path(iseq)), FIX2INT(iseq->body->location.first_lineno));
+ iseq->body->jit_func = (mjit_func_t)NOT_ADDED_JIT_ISEQ_FUNC;
+
+ if (iseq->body->jit_unit == NULL) // mjit_free_iseq is already called
+ return;
// Lazily move active_units to stale_units to avoid race conditions around active_units with compaction
CRITICAL_SECTION_START(3, "in rb_mjit_recompile_iseq");
@@ -357,7 +361,6 @@ mjit_recompile(const rb_iseq_t *iseq)
pending_stale_p = true;
CRITICAL_SECTION_FINISH(3, "in rb_mjit_recompile_iseq");
- iseq->body->jit_func = (mjit_func_t)NOT_ADDED_JIT_ISEQ_FUNC;
mjit_add_iseq_to_process(iseq, &iseq->body->jit_unit->compile_info);
if (UNLIKELY(mjit_opts.wait)) {
mjit_wait(iseq->body);