public void dumpDataflow(AnalysisType analysis) { System.out.println(this.getClass().getName() + " analysis for " + getCFG().getMethodName() + getCFG().getMethodSig() + " { "); try { for (Location loc : getCFG().orderedLocations()) { System.out.println("\nBefore: " + analysis.factToString(getFactAtLocation(loc))); System.out.println("Location: " + loc); System.out.println("After: " + analysis.factToString(getFactAfterLocation(loc))); } } catch (DataflowAnalysisException e) { AnalysisContext.logError("error dumping dataflow analysis", e); System.out.println(e); } System.out.println("}"); } }
@Override public String edgeAnnotate(Edge edge) { String edgeAnnotation = ""; try { edgeAnnotation = " " + dataflow.getAnalysis().factToString(dataflow.getAnalysis().getFactOnEdge(edge)); } catch (Throwable e) { // ignore } return edgeAnnotation; }
@Override public String blockAnnotate(BasicBlock bb) { boolean flip = isForwards() != dataflow.getAnalysis().isForwards(); Fact fact = flip ? dataflow.getStartFact(bb) : dataflow.getResultFact(bb); return " " + dataflow.getAnalysis().factToString(fact); }
@Override public String blockStartAnnotate(BasicBlock bb) { boolean flip = isForwards() != dataflow.getAnalysis().isForwards(); Fact fact = flip ? dataflow.getResultFact(bb) : dataflow.getStartFact(bb); return " " + dataflow.getAnalysis().factToString(fact); }
@Override public String instructionAnnotate(InstructionHandle handle, BasicBlock bb) { try { boolean flip = isForwards() != dataflow.getAnalysis().isForwards(); Location loc = new Location(handle, bb); Fact fact = flip ? dataflow.getAnalysis().getFactAfterLocation(loc) : dataflow.getAnalysis().getFactAtLocation(loc); return " " + dataflow.getAnalysis().factToString(fact); } catch (DataflowAnalysisException e) { throw new IllegalStateException("Caught exception: " + e.toString()); } }
analysis.initEntryFact(start); if (debug) { debug(block, "Init entry fact ==> " + analysis.factToString(start) + "\n"); debug(block, logicalPred, edge, "Edge transfer " + analysis.factToString(predFact) + " ==> " + analysis.factToString(edgeFact)); debug(block, logicalPred, edge, "\n First pred is " + analysis.factToString(edgeFact) + "\n last updated at " + analysis.getLastUpdateTimestamp(predFact) + "\n"); } else { debug(block, logicalPred, edge, "\n Meet " + analysis.factToString(start) + "\n with " + analysis.factToString(edgeFact) System.out.println(" [" + pos + "]==> " + analysis.factToString(start) + " @ " + timestamp + " \n"); debug(block, "start fact is " + analysis.factToString(start) + "\n"); Fact tmpResult = analysis.createFact(); analysis.transfer(block, handle, start, tmpResult); System.out.println("\t" + handle + " " + analysis.factToString(tmpResult)); debug(block, "orig result is " + (origResult == null ? "TOP" : analysis.factToString(origResult)) + "\n"); "result is " + analysis.factToString(result) + " @ timestamp " + analysis.getLastUpdateTimestamp(result) + "\n");
public void dumpDataflow(AnalysisType analysis) { System.out.println(this.getClass().getName() + " analysis for " + getCFG().getMethodName() + getCFG().getMethodSig() + " { "); try { for (Location loc : getCFG().orderedLocations()) { System.out.println("\nBefore: " + analysis.factToString(getFactAtLocation(loc))); System.out.println("Location: " + loc); System.out.println("After: " + analysis.factToString(getFactAfterLocation(loc))); } } catch (DataflowAnalysisException e) { AnalysisContext.logError("error dumping dataflow analysis", e); System.out.println(e); } System.out.println("}"); } }
@Override public String edgeAnnotate(Edge edge) { String edgeAnnotation = ""; try { edgeAnnotation = " " + dataflow.getAnalysis().factToString(dataflow.getAnalysis().getFactOnEdge(edge)); } catch (Throwable e) { // ignore } return edgeAnnotation; }
@Override public String blockStartAnnotate(BasicBlock bb) { boolean flip = isForwards() != dataflow.getAnalysis().isForwards(); Fact fact = flip ? dataflow.getResultFact(bb) : dataflow.getStartFact(bb); return " " + dataflow.getAnalysis().factToString(fact); }
@Override public String blockAnnotate(BasicBlock bb) { boolean flip = isForwards() != dataflow.getAnalysis().isForwards(); Fact fact = flip ? dataflow.getStartFact(bb) : dataflow.getResultFact(bb); return " " + dataflow.getAnalysis().factToString(fact); }
@Override public String instructionAnnotate(InstructionHandle handle, BasicBlock bb) { try { boolean flip = isForwards() != dataflow.getAnalysis().isForwards(); Location loc = new Location(handle, bb); Fact fact = flip ? dataflow.getAnalysis().getFactAfterLocation(loc) : dataflow.getAnalysis().getFactAtLocation(loc); return " " + dataflow.getAnalysis().factToString(fact); } catch (DataflowAnalysisException e) { throw new IllegalStateException("Caught exception: " + e.toString()); } }
analysis.initEntryFact(start); if (DEBUG) { debug(block, "Init entry fact ==> " + analysis.factToString(start) + "\n"); debug(block, logicalPred, edge, "Edge transfer " + analysis.factToString(predFact) + " ==> " + analysis.factToString(edgeFact)); debug(block, logicalPred, edge, "\n First pred is " + analysis.factToString(edgeFact) + "\n last updated at " + analysis.getLastUpdateTimestamp(predFact) + "\n"); } else { debug(block, logicalPred, edge, "\n Meet " + analysis.factToString(start) + "\n with " + analysis.factToString(edgeFact) System.out.println(" [" + pos + "]==> " + analysis.factToString(start) + " @ " + timestamp + " \n"); debug(block, "start fact is " + analysis.factToString(start) + "\n"); Fact tmpResult = analysis.createFact(); analysis.transfer(block, handle, start, tmpResult); System.out.println("\t" + handle + " " + analysis.factToString(tmpResult)); debug(block, "orig result is " + (origResult == null ? "TOP" : analysis.factToString(origResult)) + "\n"); "result is " + analysis.factToString(result) + " @ timestamp " + analysis.getLastUpdateTimestamp(result) + "\n");