diff --git a/src/gf.c b/src/gf.c index a488c09f5ea41..1a857f24a62b9 100644 --- a/src/gf.c +++ b/src/gf.c @@ -2392,7 +2392,10 @@ JL_DLLEXPORT void jl_force_trace_compile_timing_disable(void) jl_atomic_fetch_add(&jl_force_trace_compile_timing_enabled, -1); } -static void record_precompile_statement(jl_method_instance_t *mi, double compilation_time) +static void record_precompile_statement(jl_method_instance_t *mi, double compilation_time, + // NOTE: These two parameters were backported in from #59366. is_recompile is not + // currently used in our fork, though we could add it w/ some effort. + int is_recompile, int is_nested) { static ios_t f_precompile; static JL_STREAM* s_precompile = NULL; @@ -2420,7 +2423,17 @@ static void record_precompile_statement(jl_method_instance_t *mi, double compila jl_printf(s_precompile, "#= %6.1f =# ", compilation_time / 1e6); jl_printf(s_precompile, "precompile("); jl_static_show(s_precompile, mi->specTypes); - jl_printf(s_precompile, ")\n"); + jl_printf(s_precompile, ")"); + if (is_recompile) { + jl_printf(s_precompile, " # recompile"); + if (s_precompile == JL_STDERR && jl_options.color != JL_OPTIONS_COLOR_OFF) { + jl_printf(s_precompile, "\e[0m"); + } + } + if (is_nested) { + jl_printf(s_precompile, " # nested const compilation"); + } + jl_printf(s_precompile, "\n"); if (s_precompile != JL_STDERR) ios_flush(&f_precompile); } @@ -2580,7 +2593,7 @@ jl_code_instance_t *jl_compile_method_internal(jl_method_instance_t *mi, size_t codeinst->rettype_const = unspec->rettype_const; jl_atomic_store_release(&codeinst->invoke, unspec_invoke); jl_mi_cache_insert(mi, codeinst); - record_precompile_statement(mi, 0); + record_precompile_statement(mi, 0, 0, 0); return codeinst; } } @@ -2597,7 +2610,7 @@ jl_code_instance_t *jl_compile_method_internal(jl_method_instance_t *mi, size_t 0, 1, ~(size_t)0, 0, 0, jl_nothing, 0); jl_atomic_store_release(&codeinst->invoke, jl_fptr_interpret_call); jl_mi_cache_insert(mi, codeinst); - record_precompile_statement(mi, 0); + record_precompile_statement(mi, 0, 0, 0); return codeinst; } if (compile_option == JL_OPTIONS_COMPILE_OFF) { @@ -2609,6 +2622,7 @@ jl_code_instance_t *jl_compile_method_internal(jl_method_instance_t *mi, size_t double compile_time = jl_hrtime(); int did_compile = 0; + int is_nested_compile = (jl_current_task->reentrant_timing & 1); codeinst = jl_generate_fptr(mi, world, &did_compile); compile_time = jl_hrtime() - compile_time; @@ -2652,7 +2666,7 @@ jl_code_instance_t *jl_compile_method_internal(jl_method_instance_t *mi, size_t jl_mi_cache_insert(mi, codeinst); } else if (did_compile) { - record_precompile_statement(mi, compile_time); + record_precompile_statement(mi, compile_time, 0, is_nested_compile); } jl_atomic_store_relaxed(&codeinst->precompile, 1); return codeinst;