@@ -235,12 +235,26 @@ function CC.inlining_policy(interp::CthulhuInterpreter)
235235end
236236end
237237
238- @static if isdefined (CC, :codeinst_to_ir )
238+ @static if isdefined (CC, :AbsIntState )
239+ function CC. IRInterpretationState (interp:: CthulhuInterpreter ,
240+ code:: CodeInstance , mi:: MethodInstance , argtypes:: Vector{Any} , world:: UInt )
241+ inferred = @atomic :monotonic code. inferred
242+ inferred === nothing && return nothing
243+ inferred = inferred:: OptimizedSource
244+ ir = CC. copy (inferred. ir)
245+ src = inferred. src
246+ method_info = CC. MethodInfo (src)
247+ return CC. IRInterpretationState (interp, method_info, ir, mi, argtypes, world,
248+ src. min_world, src. max_world)
249+ end
250+ elseif isdefined (CC, :codeinst_to_ir )
239251function CC. codeinst_to_ir (interp:: CthulhuInterpreter , code:: CodeInstance )
240- isa (code. inferred, Nothing) && return nothing
241- return CC. copy ((code. inferred:: OptimizedSource ). ir)
252+ inferred = @atomic :monotonic code. inferred
253+ inferred === nothing && return nothing
254+ inferred = inferred:: OptimizedSource
255+ return CC. copy (inferred. ir)
256+ end
242257end
243- end # @static if isdefined(CC, :codeinst_to_ir)
244258
245259function CC. finish! (interp:: CthulhuInterpreter , caller:: InferenceResult )
246260 effects = EFFECTS_ENABLED ? caller. ipo_effects : nothing
0 commit comments