public class ExplodedControlFlowGraph extends Object implements ControlFlowGraph<SSAInstruction,IExplodedBasicBlock>
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitforEach, spliteratorpublic static ExplodedControlFlowGraph make(IR ir)
public IExplodedBasicBlock entry()
ControlFlowGraphentry in interface ControlFlowGraph<SSAInstruction,IExplodedBasicBlock>public IExplodedBasicBlock exit()
exit in interface ControlFlowGraph<SSAInstruction,IExplodedBasicBlock>public IExplodedBasicBlock getBlockForInstruction(int index)
getBlockForInstruction in interface ControlFlowGraph<SSAInstruction,IExplodedBasicBlock>index - an instruction indexpublic BitVector getCatchBlocks()
getCatchBlocks in interface ControlFlowGraph<SSAInstruction,IExplodedBasicBlock>public Collection<IExplodedBasicBlock> getExceptionalPredecessors(IExplodedBasicBlock bb)
ControlFlowGraphgetExceptionalPredecessors in interface ControlFlowGraph<SSAInstruction,IExplodedBasicBlock>public List<IExplodedBasicBlock> getExceptionalSuccessors(IExplodedBasicBlock bb)
ControlFlowGraphgetExceptionalSuccessors in interface ControlFlowGraph<SSAInstruction,IExplodedBasicBlock>public SSAInstruction[] getInstructions()
getInstructions in interface ControlFlowGraph<SSAInstruction,IExplodedBasicBlock>public IMethod getMethod() throws UnimplementedError
getMethod in interface ControlFlowGraph<SSAInstruction,IExplodedBasicBlock>UnimplementedErrorpublic Collection<IExplodedBasicBlock> getNormalPredecessors(IExplodedBasicBlock bb)
ControlFlowGraphgetNormalPredecessors in interface ControlFlowGraph<SSAInstruction,IExplodedBasicBlock>public Collection<IExplodedBasicBlock> getNormalSuccessors(IExplodedBasicBlock bb)
ControlFlowGraphgetNormalSuccessors in interface ControlFlowGraph<SSAInstruction,IExplodedBasicBlock>public int getProgramCounter(int index)
throws UnimplementedError
ControlFlowGraphgetProgramCounter in interface ControlFlowGraph<SSAInstruction,IExplodedBasicBlock>index - an instruction indexUnimplementedErrorpublic void removeNodeAndEdges(IExplodedBasicBlock N) throws UnsupportedOperationException
GraphremoveNodeAndEdges in interface Graph<IExplodedBasicBlock>UnsupportedOperationException - if the graph implementation does not allow removalpublic void addNode(IExplodedBasicBlock n) throws UnsupportedOperationException
NodeManageraddNode in interface NodeManager<IExplodedBasicBlock>UnsupportedOperationExceptionpublic boolean containsNode(IExplodedBasicBlock N)
containsNode in interface NodeManager<IExplodedBasicBlock>public int getNumberOfNodes()
getNumberOfNodes in interface NodeManager<IExplodedBasicBlock>public Iterator<IExplodedBasicBlock> iterator()
iterator in interface NodeManager<IExplodedBasicBlock>iterator in interface Iterable<IExplodedBasicBlock>Iterator of the nodes in this graphpublic void removeNode(IExplodedBasicBlock n) throws UnsupportedOperationException
NodeManagerremoveNode in interface NodeManager<IExplodedBasicBlock>UnsupportedOperationExceptionpublic void addEdge(IExplodedBasicBlock src, IExplodedBasicBlock dst) throws UnsupportedOperationException
addEdge in interface EdgeManager<IExplodedBasicBlock>UnsupportedOperationExceptionpublic int getPredNodeCount(IExplodedBasicBlock bb) throws IllegalArgumentException
EdgeManagerimmediate predecessor nodes of ngetPredNodeCount in interface EdgeManager<IExplodedBasicBlock>IllegalArgumentExceptionpublic Iterator<IExplodedBasicBlock> getPredNodes(IExplodedBasicBlock bb) throws IllegalArgumentException
EdgeManagerIterator over the immediate predecessor nodes of n
This method never returns null.getPredNodes in interface EdgeManager<IExplodedBasicBlock>Iterator over the immediate predecessor nodes of this Node.IllegalArgumentExceptionpublic int getSuccNodeCount(IExplodedBasicBlock N) throws UnimplementedError
EdgeManagerimmediate successor nodes of this Node in the GraphgetSuccNodeCount in interface EdgeManager<IExplodedBasicBlock>UnimplementedErrorpublic Iterator<IExplodedBasicBlock> getSuccNodes(IExplodedBasicBlock bb)
EdgeManager
This method never returns null.
getSuccNodes in interface EdgeManager<IExplodedBasicBlock>public boolean hasEdge(IExplodedBasicBlock src, IExplodedBasicBlock dst) throws UnimplementedError
hasEdge in interface EdgeManager<IExplodedBasicBlock>UnimplementedErrorpublic void removeAllIncidentEdges(IExplodedBasicBlock node) throws UnsupportedOperationException
removeAllIncidentEdges in interface EdgeManager<IExplodedBasicBlock>UnsupportedOperationExceptionpublic void removeEdge(IExplodedBasicBlock src, IExplodedBasicBlock dst) throws UnsupportedOperationException
removeEdge in interface EdgeManager<IExplodedBasicBlock>UnsupportedOperationExceptionpublic void removeIncomingEdges(IExplodedBasicBlock node) throws UnsupportedOperationException
removeIncomingEdges in interface EdgeManager<IExplodedBasicBlock>UnsupportedOperationExceptionpublic void removeOutgoingEdges(IExplodedBasicBlock node) throws UnsupportedOperationException
removeOutgoingEdges in interface EdgeManager<IExplodedBasicBlock>UnsupportedOperationExceptionpublic int getMaxNumber()
getMaxNumber in interface NumberedNodeManager<IExplodedBasicBlock>public IExplodedBasicBlock getNode(int number)
getNode in interface NumberedNodeManager<IExplodedBasicBlock>public int getNumber(IExplodedBasicBlock n) throws IllegalArgumentException
getNumber in interface NumberedNodeManager<IExplodedBasicBlock>IllegalArgumentExceptionpublic Iterator<IExplodedBasicBlock> iterateNodes(IntSet s) throws UnimplementedError
iterateNodes in interface NumberedNodeManager<IExplodedBasicBlock>UnimplementedErrorpublic IntSet getPredNodeNumbers(IExplodedBasicBlock node)
getPredNodeNumbers in interface NumberedEdgeManager<IExplodedBasicBlock>public IntSet getSuccNodeNumbers(IExplodedBasicBlock node) throws UnimplementedError
getSuccNodeNumbers in interface NumberedEdgeManager<IExplodedBasicBlock>UnimplementedErrorpublic IR getIR()