protected AbstractVirtualInvokeTypeFlow(BigBang bb, MethodFlowsGraph methodFlows, AbstractVirtualInvokeTypeFlow original) { super(bb, methodFlows, original); callees = new ConcurrentLightHashSet<>(); }
private TypeFlow(T source, AnalysisType declaredType, TypeState typeState, int slot, boolean isClone, MethodFlowsGraph graphRef) { this.id = nextId.incrementAndGet(); this.source = source; this.declaredType = declaredType; this.slot = slot; this.isClone = isClone; this.graphRef = graphRef; this.context = graphRef != null ? graphRef.context() : null; this.state = typeState; this.uses = new ConcurrentLightHashSet<>(); this.inputs = new ConcurrentLightHashSet<>(); this.observers = new ConcurrentLightHashSet<>(); this.observees = new ConcurrentLightHashSet<>(); this.usedAsAParameter = false; this.usedAsAReceiver = false; }
protected AbstractVirtualInvokeTypeFlow(Invoke invoke, MethodCallTargetNode target, TypeFlow<?>[] actualParameters, ActualReturnTypeFlow actualReturn, BytecodeLocation location) { super(invoke, target, actualParameters, actualReturn, location); assert target.invokeKind() == InvokeKind.Virtual || target.invokeKind() == InvokeKind.Interface; callees = new ConcurrentLightHashSet<>(); }