@SuppressWarnings("try") public boolean doTypeflow() throws InterruptedException { boolean didSomeWork; try (StopTimer ignored = typeFlowTimer.start()) { executor.start(); executor.complete(); didSomeWork = (executor.getPostedOperations() > 0); executor.shutdown(); } /* Initialize for the next iteration. */ executor.init(timing); return didSomeWork; }
@Override public void update(BigBang bb) { throw AnalysisError.shouldNotReachHere("The VirtualInvokeTypeFlow should not be updated directly."); }
public void recordMethodWithStackValues(AnalysisMethod analysisMethod) { methodsWithStackValues.addElement(analysisMethod); }
public Collection<TypeFlow<?>> getObservers() { return observers.getElements(); }
public static RuntimeException shouldNotReachHere(Throwable cause) { throw new AnalysisError(cause); }
public static TypeNotFoundError typeNotFound(ResolvedJavaType type) { throw new TypeNotFoundError(type); }
public void clearUses() { uses.clear(); }
public boolean executorIsStarted() { return executor.isStarted(); }
@Override public void close() { stop(); } }
protected AbstractVirtualInvokeTypeFlow(BigBang bb, MethodFlowsGraph methodFlows, AbstractVirtualInvokeTypeFlow original) { super(bb, methodFlows, original); callees = new ConcurrentLightHashSet<>(); }
ParsingError(AnalysisMethod method, Throwable cause) { super(message(method, cause)); this.method = method; }
public static ParsingError parsingError(AnalysisMethod method, Throwable original) { throw new ParsingError(method, original); }
@Override public final Collection<AnalysisMethod> getCallees() { return callees.getElements(); }
@Override public int getArrayBaseOffset(JavaKind elementKind) { throw shouldNotReachHere(); } }
public static RuntimeException shouldNotReachHere(String msg) { throw new AnalysisError("should not reach here: " + msg); }
public Collection<TypeFlow<?>> getInputs() { return inputs.getElements(); }
@Override public int getArrayIndexScale(JavaKind elementKind) { throw shouldNotReachHere(); }
@Override public boolean addState(BigBang bb, TypeState add, boolean postFlow) { throw AnalysisError.shouldNotReachHere("The VirtualInvokeTypeFlow should not be updated directly."); }
@Override public boolean addState(BigBang bb, TypeState add, boolean postFlow) { throw AnalysisError.shouldNotReachHere("The SpecialInvokeTypeFlow should not be updated directly."); }
@Override public void update(BigBang bb) { throw AnalysisError.shouldNotReachHere("The SpecialInvokeTypeFlow should not be updated directly."); }