diff --git a/src/JET.jl b/src/JET.jl index 100fef43f..dc48807fb 100644 --- a/src/JET.jl +++ b/src/JET.jl @@ -261,7 +261,7 @@ get_slotname(sv::State, slot::Int) = sv.src.slotnames[slot] # check if we're in a toplevel module istoplevel(sv::State) = istoplevel(sv.linfo) -istoplevel(linfo::MethodInstance) = isa(linfo.def, Module) +istoplevel(mi::MethodInstance) = isa(mi.def, Module) # we can retrieve program-counter-level slottype during inference get_slottype(s::Tuple{InferenceState,Int}, slot::Int) = (get_states(s)[slot]::VarState).typ diff --git a/src/abstractinterpret/typeinfer.jl b/src/abstractinterpret/typeinfer.jl index 0b1089d0e..72ea3b56c 100644 --- a/src/abstractinterpret/typeinfer.jl +++ b/src/abstractinterpret/typeinfer.jl @@ -499,6 +499,11 @@ end end +function CC.cache_result!(analyzer::AbstractAnalyzer, caller::InferenceResult) + istoplevel(caller.linfo) && return nothing # don't need to cache toplevel frame + @invoke CC.cache_result!(analyzer::AbstractInterpreter, caller::InferenceResult) +end + # top-level bridge # ================