@Override public boolean equals(Object o) { return (o instanceof SingleClassFilter) && ((SingleClassFilter) o).getConcreteType().equals(concreteType); }
@Override public boolean equals(Object o) { return (o instanceof SingleClassFilter) && ((SingleClassFilter) o).getConcreteType().equals(concreteType); }
private IClass inferType(PointerKey key) { if (key instanceof LocalPointerKeyWithFilter) { LocalPointerKeyWithFilter lpk = (LocalPointerKeyWithFilter) key; FilteredPointerKey.TypeFilter filter = lpk.getTypeFilter(); assert filter instanceof FilteredPointerKey.SingleClassFilter; return ((FilteredPointerKey.SingleClassFilter) filter).getConcreteType(); } else if (key instanceof StaticFieldKey) { StaticFieldKey s = (StaticFieldKey) key; return getCallGraph().getClassHierarchy().lookupClass(s.getField().getFieldTypeReference()); } else if (key instanceof InstanceFieldKey) { InstanceFieldKey i = (InstanceFieldKey) key; return getCallGraph().getClassHierarchy().lookupClass(i.getField().getFieldTypeReference()); } else if (key instanceof ArrayContentsKey) { ArrayContentsKey i = (ArrayContentsKey) key; FilteredPointerKey.TypeFilter filter = i.getTypeFilter(); assert filter instanceof FilteredPointerKey.SingleClassFilter; return ((FilteredPointerKey.SingleClassFilter) filter).getConcreteType(); } else if (key instanceof ExceptionReturnValueKey) { return getCallGraph().getClassHierarchy().lookupClass(TypeReference.JavaLangException); } else if (key instanceof ReturnValueKey) { ReturnValueKey r = (ReturnValueKey) key; return getCallGraph().getClassHierarchy().lookupClass(r.getNode().getMethod().getReturnType()); } else { Assertions.UNREACHABLE("inferType " + key.getClass()); return null; } }
private IntSet updateValsForFilter(IntSet vals, final TypeFilter typeFilter) { if (typeFilter instanceof SingleClassFilter) { final IClass concreteType = ((SingleClassFilter) typeFilter).getConcreteType(); final MutableIntSet tmp = intSetFactory.make(); vals.foreach(x -> {
private IntSet updateValsForFilter(IntSet vals, final TypeFilter typeFilter) { if (typeFilter instanceof SingleClassFilter) { final IClass concreteType = ((SingleClassFilter) typeFilter).getConcreteType(); final MutableIntSet tmp = intSetFactory.make(); vals.foreach(x -> {
private IClass inferType(PointerKey key) { if (key instanceof LocalPointerKeyWithFilter) { LocalPointerKeyWithFilter lpk = (LocalPointerKeyWithFilter) key; FilteredPointerKey.TypeFilter filter = lpk.getTypeFilter(); assert filter instanceof FilteredPointerKey.SingleClassFilter; return ((FilteredPointerKey.SingleClassFilter) filter).getConcreteType(); } else if (key instanceof StaticFieldKey) { StaticFieldKey s = (StaticFieldKey) key; return getCallGraph().getClassHierarchy().lookupClass(s.getField().getFieldTypeReference()); } else if (key instanceof InstanceFieldKey) { InstanceFieldKey i = (InstanceFieldKey) key; return getCallGraph().getClassHierarchy().lookupClass(i.getField().getFieldTypeReference()); } else if (key instanceof ArrayContentsKey) { ArrayContentsKey i = (ArrayContentsKey) key; FilteredPointerKey.TypeFilter filter = i.getTypeFilter(); assert filter instanceof FilteredPointerKey.SingleClassFilter; return ((FilteredPointerKey.SingleClassFilter) filter).getConcreteType(); } else if (key instanceof ExceptionReturnValueKey) { return getCallGraph().getClassHierarchy().lookupClass(TypeReference.JavaLangException); } else if (key instanceof ReturnValueKey) { ReturnValueKey r = (ReturnValueKey) key; return getCallGraph().getClassHierarchy().lookupClass(r.getNode().getMethod().getReturnType()); } else { Assertions.UNREACHABLE("inferType " + key.getClass()); return null; } }
@SuppressWarnings("unused") private static boolean isRootType(FilteredPointerKey.TypeFilter filter) { if (filter instanceof FilteredPointerKey.SingleClassFilter) { return isRootType(((FilteredPointerKey.SingleClassFilter) filter).getConcreteType()); } else { return false; } }
@SuppressWarnings("unused") private static boolean isRootType(FilteredPointerKey.TypeFilter filter) { if (filter instanceof FilteredPointerKey.SingleClassFilter) { return isRootType(((FilteredPointerKey.SingleClassFilter) filter).getConcreteType()); } else { return false; } }