|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectcom.ibm.wala.ipa.cfg.InterproceduralCFG
public class InterproceduralCFG
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 | |
|---|---|
InterproceduralCFG(CallGraph CG,
CFGCache cfgCache,
WarningSet warnings)
Build an Interprocedural CFG from a call graph. |
|
InterproceduralCFG(CallGraph CG,
CFGProvider P,
Filter relevant,
boolean partitionExits,
WarningSet warnings)
Build an Interprocedural CFG from a call graph. |
|
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Constructor Detail |
|---|
public InterproceduralCFG(CallGraph CG,
CFGCache cfgCache,
WarningSet warnings)
CG - the call graphwarnings - an object to track analysis warnings
public InterproceduralCFG(CallGraph CG,
CFGProvider P,
Filter relevant,
boolean partitionExits,
WarningSet warnings)
CG - the call graphP - an object that provides CFGs for call graph nodes.relevant - a filter which accepts those call graph nodes which should be
included in the I-CFG. Other nodes are ignored.| Method Detail |
|---|
public ControlFlowGraph getCFG(CGNode n)
n -
public static CallSiteReference makeCallSiteReference(ClassLoaderReference loader,
int pc,
IInvokeInstruction call)
public ControlFlowGraph getCFG(IBasicBlock B)
B -
public CGNode getCGNode(IBasicBlock B)
B -
public void removeNodeAndEdges(BasicBlockInContext N)
Graph
removeNodeAndEdges in interface Graph<BasicBlockInContext>public java.util.Iterator<BasicBlockInContext> iterator()
iterator in interface NodeManager<BasicBlockInContext>iterator in interface java.lang.Iterable<BasicBlockInContext>public int getNumberOfNodes()
getNumberOfNodes in interface NodeManager<BasicBlockInContext>public void addNode(BasicBlockInContext n)
NodeManager
addNode in interface NodeManager<BasicBlockInContext>public void removeNode(BasicBlockInContext n)
NodeManager
removeNode in interface NodeManager<BasicBlockInContext>public java.util.Iterator<? extends BasicBlockInContext> getPredNodes(BasicBlockInContext N)
EdgeManagernodes of this Node
in the Graph.
This method never returns null.
getPredNodes in interface EdgeManager<BasicBlockInContext>public int getPredNodeCount(BasicBlockInContext N)
EdgeManagerimmediate predecessor
nodes of this Node
in the Graph.
getPredNodeCount in interface EdgeManager<BasicBlockInContext>public java.util.Iterator<? extends BasicBlockInContext> getSuccNodes(BasicBlockInContext N)
EdgeManagernodes of this Node in
the Graph
This method never returns null.
getSuccNodes in interface EdgeManager<BasicBlockInContext>public int getSuccNodeCount(BasicBlockInContext N)
EdgeManagerimmediate successor
nodes of this Node
in the Graph
getSuccNodeCount in interface EdgeManager<BasicBlockInContext>
public void addEdge(BasicBlockInContext src,
BasicBlockInContext dst)
addEdge in interface EdgeManager<BasicBlockInContext>
public void removeEdge(BasicBlockInContext src,
BasicBlockInContext dst)
removeEdge in interface EdgeManager<BasicBlockInContext>public void removeAllIncidentEdges(BasicBlockInContext node)
removeAllIncidentEdges in interface EdgeManager<BasicBlockInContext>public java.lang.String toString()
toString in class java.lang.Objectpublic boolean containsNode(BasicBlockInContext N)
containsNode in interface NodeManager<BasicBlockInContext>public boolean hasCall(BasicBlockInContext B)
B -
public java.util.Set<CGNode> getCallTargets(IBasicBlock B)
B -
java.lang.IllegalArgumentException - if B is nullpublic void removeIncomingEdges(BasicBlockInContext node)
removeIncomingEdges in interface EdgeManager<BasicBlockInContext>public void removeOutgoingEdges(BasicBlockInContext node)
removeOutgoingEdges in interface EdgeManager<BasicBlockInContext>
public boolean hasEdge(BasicBlockInContext src,
BasicBlockInContext dst)
hasEdge in interface EdgeManager<BasicBlockInContext>public int getNumber(BasicBlockInContext N)
getNumber in interface NumberedNodeManager<BasicBlockInContext>public BasicBlockInContext getNode(int number)
getNode in interface NumberedNodeManager<BasicBlockInContext>public int getMaxNumber()
getMaxNumber in interface NumberedNodeManager<BasicBlockInContext>public java.util.Iterator<BasicBlockInContext> iterateNodes(IntSet s)
iterateNodes in interface NumberedNodeManager<BasicBlockInContext>public IntSet getSuccNodeNumbers(BasicBlockInContext node)
getSuccNodeNumbers in interface NumberedEdgeManager<BasicBlockInContext>public IntSet getPredNodeNumbers(BasicBlockInContext node)
getPredNodeNumbers in interface NumberedEdgeManager<BasicBlockInContext>public java.lang.Object getEntry(CGNode n)
public java.util.Iterator<BasicBlockInContext> getReturnSites(BasicBlockInContext bb)
object - node in the IPCFG that ends in a call
java.lang.IllegalArgumentException - if bb is nullpublic java.util.Iterator<BasicBlockInContext> getCallSites(BasicBlockInContext bb)
public boolean isReturn(java.lang.Object object)
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||