mirror of
https://github.com/ruby/ruby.git
synced 2026-01-27 12:34:21 +00:00
Delay the free until we stop referring to a unit
`if (unit->iseq)` might have referred to a freed unit. Therefore this commit delays its free.
This commit is contained in:
parent
673f3842dd
commit
183b421509
@ -1038,7 +1038,6 @@ convert_unit_to_func(struct rb_mjit_unit *unit)
|
||||
fclose(f);
|
||||
if (!mjit_opts.save_temps)
|
||||
remove_file(c_file);
|
||||
free_unit(unit);
|
||||
in_jit = false; // just being explicit for return
|
||||
}
|
||||
else {
|
||||
@ -1237,6 +1236,9 @@ mjit_worker(void)
|
||||
// Usage of jit_code might be not in a critical section.
|
||||
MJIT_ATOMIC_SET(unit->iseq->body->jit_func, func);
|
||||
}
|
||||
else {
|
||||
free_unit(unit);
|
||||
}
|
||||
CRITICAL_SECTION_FINISH(3, "in jit func replace");
|
||||
|
||||
#ifndef _MSC_VER
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user