Skip to content

Commit af0fd55

Browse files
authored
1 parent 09f5946 commit af0fd55

File tree

1 file changed

+18
-4
lines changed

1 file changed

+18
-4
lines changed

src/interpreter.jl

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -235,12 +235,26 @@ function CC.inlining_policy(interp::CthulhuInterpreter)
235235
end
236236
end
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)
239251
function 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
242257
end
243-
end # @static if isdefined(CC, :codeinst_to_ir)
244258

245259
function CC.finish!(interp::CthulhuInterpreter, caller::InferenceResult)
246260
effects = EFFECTS_ENABLED ? caller.ipo_effects : nothing

0 commit comments

Comments
 (0)