mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
MJIT: Deal with mjit_free_iseq on mjit_notify_waitpid
This commit is contained in:
parent
332985c178
commit
1ffc6c43f6
1 changed files with 9 additions and 7 deletions
16
mjit.c
16
mjit.c
|
@ -355,16 +355,18 @@ mjit_notify_waitpid(int status)
|
||||||
remove_file(so_file);
|
remove_file(so_file);
|
||||||
|
|
||||||
// Set the jit_func if successful
|
// Set the jit_func if successful
|
||||||
if ((uintptr_t)func > (uintptr_t)LAST_JIT_ISEQ_FUNC) {
|
if (current_cc_unit->iseq != NULL) { // mjit_free_iseq could nullify this
|
||||||
rb_iseq_t *iseq = current_cc_unit->iseq;
|
rb_iseq_t *iseq = current_cc_unit->iseq;
|
||||||
double end_time = real_ms_time();
|
if ((uintptr_t)func > (uintptr_t)LAST_JIT_ISEQ_FUNC) {
|
||||||
verbose(1, "JIT success (%.1fms): %s@%s:%ld -> %s",
|
double end_time = real_ms_time();
|
||||||
end_time - current_cc_ms, RSTRING_PTR(ISEQ_BODY(iseq)->location.label),
|
verbose(1, "JIT success (%.1fms): %s@%s:%ld -> %s",
|
||||||
RSTRING_PTR(rb_iseq_path(iseq)), FIX2LONG(ISEQ_BODY(iseq)->location.first_lineno), c_file);
|
end_time - current_cc_ms, RSTRING_PTR(ISEQ_BODY(iseq)->location.label),
|
||||||
|
RSTRING_PTR(rb_iseq_path(iseq)), FIX2LONG(ISEQ_BODY(iseq)->location.first_lineno), c_file);
|
||||||
|
|
||||||
add_to_list(current_cc_unit, &active_units);
|
add_to_list(current_cc_unit, &active_units);
|
||||||
|
}
|
||||||
MJIT_ATOMIC_SET(ISEQ_BODY(iseq)->jit_func, func);
|
MJIT_ATOMIC_SET(ISEQ_BODY(iseq)->jit_func, func);
|
||||||
}
|
} // TODO: free unit on else?
|
||||||
current_cc_unit = NULL;
|
current_cc_unit = NULL;
|
||||||
|
|
||||||
// Run compaction if it should
|
// Run compaction if it should
|
||||||
|
|
Loading…
Reference in a new issue