Package com.ibm.wala.ipa.slicer.thin
Class CISDG
- java.lang.Object
-
- com.ibm.wala.ipa.slicer.thin.CISDG
-
- All Implemented Interfaces:
IClassHierarchyDweller,ISDG,EdgeManager<Statement>,Graph<Statement>,NodeManager<Statement>,NumberedEdgeManager<Statement>,NumberedGraph<Statement>,NumberedNodeManager<Statement>,Iterable<Statement>
public class CISDG extends Object implements ISDG
A context-insensitive SDG. This class assumes that it is given a normal NO_HEAP SDG. It adds context-insensitive heap information directly from heap stores to corresponding loads, based on an underlying pointer analysis.
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedCISDG(SDG<InstanceKey> noHeap, Map<Statement,Set<PointerKey>> mod, Map<Statement,Set<PointerKey>> ref)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddEdge(Statement src, Statement dst)voidaddNode(Statement n)add a node to this graphbooleancontainsNode(Statement N)booleanequals(Object obj)IClassHierarchygetClassHierarchy()Slicer.ControlDependenceOptionsgetCOptions()Slicer.ControlDependenceOptionsused to construct this graph.intgetMaxNumber()StatementgetNode(int number)intgetNumber(Statement N)intgetNumberOfNodes()PDGgetPDG(CGNode node)Get the program dependence graph constructed for a particular node.intgetPredNodeCount(Statement N)Return the number ofimmediate predecessornodes of nIntSetgetPredNodeNumbers(Statement node)Iterator<Statement>getPredNodes(Statement N)Return anIteratorover the immediate predecessor nodes of n This method never returnsnull.intgetSuccNodeCount(Statement N)Return the number ofimmediate successornodes of this Node in the GraphIntSetgetSuccNodeNumbers(Statement node)Iterator<Statement>getSuccNodes(Statement N)Return an Iterator over the immediate successor nodes of nbooleanhasEdge(Statement src, Statement dst)inthashCode()Iterator<? extends Statement>iterateLazyNodes()Iterate over the nodes which have been discovered so far, but do NOT eagerly construct the entire graph.Iterator<Statement>iterateNodes(IntSet s)Iterator<Statement>iterator()voidremoveAllIncidentEdges(Statement node)voidremoveEdge(Statement src, Statement dst)voidremoveIncomingEdges(Statement node)voidremoveNode(Statement n)remove a node from this graphvoidremoveNodeAndEdges(Statement N)remove a node and all its incident edgesvoidremoveOutgoingEdges(Statement node)StringtoString()-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
-
-
-
Constructor Detail
-
CISDG
protected CISDG(SDG<InstanceKey> noHeap, Map<Statement,Set<PointerKey>> mod, Map<Statement,Set<PointerKey>> ref)
-
-
Method Detail
-
addEdge
public void addEdge(Statement src, Statement dst)
- Specified by:
addEdgein interfaceEdgeManager<Statement>
-
addNode
public void addNode(Statement n)
Description copied from interface:NodeManageradd a node to this graph- Specified by:
addNodein interfaceNodeManager<Statement>
-
containsNode
public boolean containsNode(Statement N)
- Specified by:
containsNodein interfaceNodeManager<Statement>- Returns:
- true iff the graph contains the specified node
-
getCOptions
public Slicer.ControlDependenceOptions getCOptions()
Description copied from interface:ISDGSlicer.ControlDependenceOptionsused to construct this graph.- Specified by:
getCOptionsin interfaceISDG
-
getMaxNumber
public int getMaxNumber()
- Specified by:
getMaxNumberin interfaceNumberedNodeManager<Statement>
-
getNode
public Statement getNode(int number)
- Specified by:
getNodein interfaceNumberedNodeManager<Statement>
-
getNumber
public int getNumber(Statement N)
- Specified by:
getNumberin interfaceNumberedNodeManager<Statement>
-
getNumberOfNodes
public int getNumberOfNodes()
- Specified by:
getNumberOfNodesin interfaceNodeManager<Statement>- Returns:
- the number of nodes in this graph
-
getPDG
public PDG getPDG(CGNode node)
Description copied from interface:ISDGGet the program dependence graph constructed for a particular node.
-
getPredNodeCount
public int getPredNodeCount(Statement N)
Description copied from interface:EdgeManagerReturn the number ofimmediate predecessornodes of n- Specified by:
getPredNodeCountin interfaceEdgeManager<Statement>- Returns:
- the number of immediate predecessors of n.
-
getPredNodeNumbers
public IntSet getPredNodeNumbers(Statement node)
- Specified by:
getPredNodeNumbersin interfaceNumberedEdgeManager<Statement>- Returns:
- the numbers identifying the immediate predecessors of node
-
getPredNodes
public Iterator<Statement> getPredNodes(Statement N)
Description copied from interface:EdgeManagerReturn anIteratorover the immediate predecessor nodes of n This method never returnsnull.- Specified by:
getPredNodesin interfaceEdgeManager<Statement>- Returns:
- an
Iteratorover the immediate predecessor nodes of this Node.
-
getSuccNodeCount
public int getSuccNodeCount(Statement N)
Description copied from interface:EdgeManagerReturn the number ofimmediate successornodes of this Node in the Graph- Specified by:
getSuccNodeCountin interfaceEdgeManager<Statement>- Returns:
- the number of immediate successor Nodes of this Node in the Graph.
-
getSuccNodeNumbers
public IntSet getSuccNodeNumbers(Statement node)
- Specified by:
getSuccNodeNumbersin interfaceNumberedEdgeManager<Statement>- Returns:
- the numbers identifying the immediate successors of node
-
getSuccNodes
public Iterator<Statement> getSuccNodes(Statement N)
Description copied from interface:EdgeManagerReturn an Iterator over the immediate successor nodes of nThis method never returns
null.- Specified by:
getSuccNodesin interfaceEdgeManager<Statement>- Returns:
- an Iterator over the immediate successor nodes of n
-
hasEdge
public boolean hasEdge(Statement src, Statement dst)
- Specified by:
hasEdgein interfaceEdgeManager<Statement>
-
iterateLazyNodes
public Iterator<? extends Statement> iterateLazyNodes()
Description copied from interface:ISDGIterate over the nodes which have been discovered so far, but do NOT eagerly construct the entire graph.- Specified by:
iterateLazyNodesin interfaceISDG
-
iterateNodes
public Iterator<Statement> iterateNodes(IntSet s)
- Specified by:
iterateNodesin interfaceNumberedNodeManager<Statement>- Returns:
- iterator of nodes with the numbers in set s
-
removeAllIncidentEdges
public void removeAllIncidentEdges(Statement node)
- Specified by:
removeAllIncidentEdgesin interfaceEdgeManager<Statement>
-
removeEdge
public void removeEdge(Statement src, Statement dst)
- Specified by:
removeEdgein interfaceEdgeManager<Statement>
-
removeIncomingEdges
public void removeIncomingEdges(Statement node)
- Specified by:
removeIncomingEdgesin interfaceEdgeManager<Statement>
-
removeNode
public void removeNode(Statement n)
Description copied from interface:NodeManagerremove a node from this graph- Specified by:
removeNodein interfaceNodeManager<Statement>
-
removeNodeAndEdges
public void removeNodeAndEdges(Statement N)
Description copied from interface:Graphremove a node and all its incident edges- Specified by:
removeNodeAndEdgesin interfaceGraph<Statement>
-
removeOutgoingEdges
public void removeOutgoingEdges(Statement node)
- Specified by:
removeOutgoingEdgesin interfaceEdgeManager<Statement>
-
getClassHierarchy
public IClassHierarchy getClassHierarchy()
- Specified by:
getClassHierarchyin interfaceIClassHierarchyDweller
-
-