Package com.ibm.wala.ipa.cfg
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>>
public class InterproceduralCFG extends AbstractInterproceduralCFG<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
Constructors Constructor Description InterproceduralCFG(CallGraph CG)
InterproceduralCFG(CallGraph cg, Filtersection<CGNode> filtersection)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description ControlFlowGraph<SSAInstruction,ISSABasicBlock>
getCFG(CGNode n)
-
Methods 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, 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 Detail
-
InterproceduralCFG
public InterproceduralCFG(CallGraph CG)
-
InterproceduralCFG
public InterproceduralCFG(CallGraph cg, Filtersection<CGNode> filtersection)
-
-
Method Detail
-
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
-
-