Skip to content

Commit 80263b4

Browse files
committed
1 parent 973aa66 commit 80263b4

File tree

1 file changed

+24
-8
lines changed

1 file changed

+24
-8
lines changed

src/jlgen.jl

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -484,24 +484,40 @@ function ci_cache_populate(interp, cache, mi, min_world, max_world)
484484
codeinfos = Pair{CodeInstance, CodeInfo}[]
485485
@static if VERSION >= v"1.12.0-DEV.1434"
486486
# see typeinfer.jl: typeinf_ext_toplevel
487+
has_compilequeue = VERSION >= v"1.13.0-DEV.499" || v"1.12-beta3" <= VERSION < v"1.13-"
487488
ci = CC.typeinf_ext(interp, mi, CC.SOURCE_MODE_NOT_REQUIRED)
488-
inspected = IdSet{CodeInstance}()
489-
tocompile = CodeInstance[ci]
490-
while !isempty(tocompile)
491-
callee = pop!(tocompile)
492-
callee in inspected && continue
493-
push!(inspected, callee)
489+
if has_compilequeue
490+
workqueue = CC.CompilationQueue(; interp)
491+
push!(workqueue, ci)
492+
else
493+
workqueue = CodeInstance[ci]
494+
inspected = IdSet{CodeInstance}()
495+
end
496+
while !isempty(workqueue)
497+
callee = pop!(workqueue)
498+
if has_compilequeue
499+
CC.isinspected(workqueue, callee) && continue
500+
CC.markinspected!(workqueue, callee)
501+
else
502+
callee in inspected && continue
503+
push!(inspected, callee)
504+
end
505+
494506
# now make sure everything has source code, if desired
495507
mi = CC.get_ci_mi(callee)
496-
def = mi.def
497508
if CC.use_const_api(callee)
498509
src = CC.codeinfo_for_const(interp, mi, ci.rettype_const)
499510
else
500511
# TODO: typeinf_code could return something with different edges/ages/owner/abi (needing an update to callee), which we don't handle here
501512
src = CC.typeinf_code(interp, mi, true)
502513
end
503514
if src isa CodeInfo
504-
CC.collectinvokes!(tocompile, src)
515+
if has_compilequeue
516+
sptypes = CC.sptypes_from_meth_instance(mi)
517+
CC.collectinvokes!(workqueue, src, sptypes)
518+
else
519+
CC.collectinvokes!(workqueue, src)
520+
end
505521
push!(codeinfos, callee => src)
506522
end
507523
end

0 commit comments

Comments
 (0)