}
public boolean wantTypes( Local receiver ) {
return receiverToSites.get(receiver) != null;
}
public void addType( Local receiver, Context srcContext, Type type, Context typeContext ) {
FastHierarchy fh = Scene.v().getOrMakeFastHierarchy();
for( Iterator siteIt = ((Collection) receiverToSites.get( receiver )).iterator(); siteIt.hasNext(); ) {
final VirtualCallSite site = (VirtualCallSite) siteIt.next();
InstanceInvokeExpr iie = site.iie();
if( site.kind() == Kind.THREAD
&& !fh.canStoreType( type, clRunnable ) )
continue;
if( site.iie() instanceof SpecialInvokeExpr && site.kind != Kind.THREAD ) {
targetsQueue.add( VirtualCalls.v().resolveSpecial(
(SpecialInvokeExpr) site.iie(),