diff --git a/SnoopCompileCore/src/snoopi_deep.jl b/SnoopCompileCore/src/snoopi_deep.jl index 3719cf84..30bd2ebe 100644 --- a/SnoopCompileCore/src/snoopi_deep.jl +++ b/SnoopCompileCore/src/snoopi_deep.jl @@ -71,16 +71,14 @@ function addchildren!(parent::InferenceTimingNode, t::Core.Compiler.Timings.Timi end function start_deep_timing() - Core.Compiler.Timings.reset_timings() Core.Compiler.__set_measure_typeinf(true) end function stop_deep_timing() Core.Compiler.__set_measure_typeinf(false) - Core.Compiler.Timings.close_current_timer() end function finish_snoopi_deep() - return InferenceTimingNode(Core.Compiler.Timings._timings[1]) + return [InferenceTimingNode(tree) for tree in Core.Compiler.Timings.clear_and_fetch_timings()] end function _snoopi_deep(cmd::Expr) diff --git a/SnoopPrecompile/src/SnoopPrecompile.jl b/SnoopPrecompile/src/SnoopPrecompile.jl index d0dcd6b3..1370ec69 100644 --- a/SnoopPrecompile/src/SnoopPrecompile.jl +++ b/SnoopPrecompile/src/SnoopPrecompile.jl @@ -59,16 +59,29 @@ macro precompile_all_calls(ex::Expr) end end if have_inference_tracking - ex = quote - Core.Compiler.Timings.reset_timings() - Core.Compiler.__set_measure_typeinf(true) - try - $ex - finally - Core.Compiler.__set_measure_typeinf(false) - Core.Compiler.Timings.close_current_timer() + ex = if isdefined(Core.Compiler.Timings, :clear_and_fetch_timings) + # use new thread-safe timings API if it's available in this version of Julia + quote + Core.Compiler.__set_measure_typeinf(true) + try + $ex + finally + Core.Compiler.__set_measure_typeinf(false) + end + $SnoopPrecompile.precompile_roots(Core.Compiler.Timings.clear_and_fetch_timings()) + end + else + quote + Core.Compiler.Timings.reset_timings() + Core.Compiler.__set_measure_typeinf(true) + try + $ex + finally + Core.Compiler.__set_measure_typeinf(false) + Core.Compiler.Timings.close_current_timer() + end + $SnoopPrecompile.precompile_roots(Core.Compiler.Timings._timings[1].children) end - $SnoopPrecompile.precompile_roots(Core.Compiler.Timings._timings[1].children) end end return esc(quote