# The live targets of a specific callsite.
fun live_targets(callsite: CallSite): Set[MMethodDef]
do
var mtype = callsite.recv
var anchor = callsite.anchor
if anchor != null then mtype = mtype.anchor_to(callsite.mmodule, anchor)
mtype = mtype.undecorate
if mtype isa MClassType then mtype = mtype.mclass.intro.bound_mtype
var mproperty = callsite.mproperty
var res = live_targets_cache[mtype, mproperty]
if res != null then return res
res = new ArraySet[MMethodDef]
live_targets_cache[mtype, mproperty] = res
for c in live_classes do
var tc = c.intro.bound_mtype
if not tc.is_subtype(mainmodule, null, mtype) then continue
var d = mproperty.lookup_first_definition(mainmodule, tc)
res.add d
end
return res
end
src/rapid_type_analysis.nit:94,2--116,4