public class SimpleDemandPointerFlowGraph extends SlowSparseNumberedGraph<Object>
| Modifier and Type | Class and Description |
|---|---|
protected class |
SimpleDemandPointerFlowGraph.StatementVisitor
A visitor that generates graph nodes and edges for an IR.
|
| Constructor and Description |
|---|
SimpleDemandPointerFlowGraph(CallGraph cg,
HeapModel heapModel,
MemoryAccessMap fam,
IClassHierarchy cha) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
addBlockInstructionConstraints(CGNode node,
ControlFlowGraph<SSAInstruction,ISSABasicBlock> cfg,
ISSABasicBlock b,
SimpleDemandPointerFlowGraph.StatementVisitor v)
Add constraints for a particular basic block.
|
protected void |
addNodeInstructionConstraints(CGNode node,
IR ir,
DefUse du)
Add pointer flow constraints based on instructions in a given node
|
protected void |
addNodePassthruExceptionConstraints(CGNode node,
IR ir)
Add constraints to represent the flow of exceptions to the exceptional return value for this node
|
void |
addSubgraphForNode(CGNode node) |
protected HeapModel |
getHeapModel() |
int |
getPredNodeCount(Object N)
Return the number of
immediate predecessor nodes of n |
IntSet |
getPredNodeNumbers(Object node) |
Iterator<Object> |
getPredNodes(Object N)
Return an
Iterator over the immediate predecessor nodes of n
This method never returns null. |
int |
getSuccNodeCount(Object N)
Return the number of
immediate successor nodes of this Node in the Graph |
IntSet |
getSuccNodeNumbers(Object node) |
Iterator<Object> |
getSuccNodes(Object N)
Return an Iterator over the immediate successor nodes of n
|
boolean |
hasEdge(PointerKey src,
PointerKey dst) |
protected SimpleDemandPointerFlowGraph.StatementVisitor |
makeVisitor(ExplicitCallGraph.ExplicitNode node,
IR ir,
DefUse du) |
protected void |
unconditionallyAddConstraintsFromNode(CGNode node) |
copyInto, duplicate, getEdgeManager, getNodeManager, makegetMaxNumber, getNode, getNumber, iterateNodesaddEdge, addNode, containsNode, getNumberOfNodes, hasEdge, iterator, removeAllIncidentEdges, removeEdge, removeIncomingEdges, removeNode, removeNodeAndEdges, removeOutgoingEdges, toStringclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitremoveNodeAndEdgesaddNode, containsNode, getNumberOfNodes, iterator, removeNodeforEach, spliteratoraddEdge, hasEdge, removeAllIncidentEdges, removeEdge, removeIncomingEdges, removeOutgoingEdgespublic SimpleDemandPointerFlowGraph(CallGraph cg, HeapModel heapModel, MemoryAccessMap fam, IClassHierarchy cha)
public void addSubgraphForNode(CGNode node)
protected HeapModel getHeapModel()
public IntSet getPredNodeNumbers(Object node) throws UnimplementedError
getPredNodeNumbers in interface NumberedEdgeManager<Object>getPredNodeNumbers in class AbstractNumberedGraph<Object>UnimplementedErrorpublic IntSet getSuccNodeNumbers(Object node) throws IllegalArgumentException
getSuccNodeNumbers in interface NumberedEdgeManager<Object>getSuccNodeNumbers in class AbstractNumberedGraph<Object>IllegalArgumentExceptionpublic int getPredNodeCount(Object N) throws UnimplementedError
EdgeManagerimmediate predecessor nodes of ngetPredNodeCount in interface EdgeManager<Object>getPredNodeCount in class AbstractGraph<Object>UnimplementedErrorpublic Iterator<Object> getPredNodes(Object N) throws IllegalArgumentException
EdgeManagerIterator over the immediate predecessor nodes of n
This method never returns null.getPredNodes in interface EdgeManager<Object>getPredNodes in class AbstractGraph<Object>Iterator over the immediate predecessor nodes of this Node.IllegalArgumentExceptionpublic int getSuccNodeCount(Object N) throws UnimplementedError
EdgeManagerimmediate successor nodes of this Node in the GraphgetSuccNodeCount in interface EdgeManager<Object>getSuccNodeCount in class AbstractGraph<Object>UnimplementedErrorpublic Iterator<Object> getSuccNodes(Object N)
EdgeManager
This method never returns null.
getSuccNodes in interface EdgeManager<Object>getSuccNodes in class AbstractGraph<Object>public boolean hasEdge(PointerKey src, PointerKey dst)
protected void unconditionallyAddConstraintsFromNode(CGNode node)
protected void addNodePassthruExceptionConstraints(CGNode node, IR ir)
protected void addNodeInstructionConstraints(CGNode node, IR ir, DefUse du)
protected void addBlockInstructionConstraints(CGNode node, ControlFlowGraph<SSAInstruction,ISSABasicBlock> cfg, ISSABasicBlock b, SimpleDemandPointerFlowGraph.StatementVisitor v)
protected SimpleDemandPointerFlowGraph.StatementVisitor makeVisitor(ExplicitCallGraph.ExplicitNode node, IR ir, DefUse du)