Class InterproceduralCFG
java.lang.Object
com.ibm.wala.ipa.cfg.AbstractInterproceduralCFG<ISSABasicBlock>
com.ibm.wala.ipa.cfg.InterproceduralCFG
- All Implemented Interfaces:
EdgeManager<BasicBlockInContext<ISSABasicBlock>>
,Graph<BasicBlockInContext<ISSABasicBlock>>
,NodeManager<BasicBlockInContext<ISSABasicBlock>>
,NumberedEdgeManager<BasicBlockInContext<ISSABasicBlock>>
,NumberedGraph<BasicBlockInContext<ISSABasicBlock>>
,NumberedNodeManager<BasicBlockInContext<ISSABasicBlock>>
,Iterable<BasicBlockInContext<ISSABasicBlock>>
Interprocedural control-flow graph.
TODO: think about a better implementation; perhaps a lazy view of the constituent CFGs Lots of ways this can be optimized?
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionMethods inherited from class com.ibm.wala.ipa.cfg.AbstractInterproceduralCFG
addEdge, addEdgesToNonEntryBlock, addNode, callGraphUpdated, containsNode, getCallGraph, getCallSiteForCallBlock, getCallSites, getCallTargets, getCFG, getCGNode, getEntry, getExit, getLastInstructionForBlock, getMaxNumber, getNode, getNumber, getNumberOfNodes, getPredNodeCount, getPredNodeNumbers, getPredNodes, getReturnSites, getSuccNodeCount, getSuccNodeNumbers, getSuccNodes, hasCall, hasCall, hasEdge, isReturn, iterateNodes, iterator, removeAllIncidentEdges, removeEdge, removeIncomingEdges, removeNode, removeNodeAndEdges, removeOutgoingEdges, stream, toString
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
Constructor Details
-
InterproceduralCFG
-
InterproceduralCFG
-
-
Method Details
-
getCFG
public ControlFlowGraph<SSAInstruction,ISSABasicBlock> getCFG(CGNode n) throws IllegalArgumentException - Specified by:
getCFG
in classAbstractInterproceduralCFG<ISSABasicBlock>
- Returns:
- the cfg for n, or null if none found
- Throws:
IllegalArgumentException
- if n == null
-