public class PDG extends Object implements com.ibm.wala.util.graph.NumberedGraph<Statement>
| Modifier and Type | Class and Description |
|---|---|
static class |
PDG.Dependency
BEGIN Custom change: control deps
|
| Constructor and Description |
|---|
PDG(CGNode node,
PointerAnalysis<InstanceKey> pa,
Map<CGNode,com.ibm.wala.util.intset.OrdinalSet<PointerKey>> mod,
Map<CGNode,com.ibm.wala.util.intset.OrdinalSet<PointerKey>> ref,
Slicer.DataDependenceOptions dOptions,
Slicer.ControlDependenceOptions cOptions,
HeapExclusions exclusions,
CallGraph cg,
ModRef modRef) |
PDG(CGNode node,
PointerAnalysis<InstanceKey> pa,
Map<CGNode,com.ibm.wala.util.intset.OrdinalSet<PointerKey>> mod,
Map<CGNode,com.ibm.wala.util.intset.OrdinalSet<PointerKey>> ref,
Slicer.DataDependenceOptions dOptions,
Slicer.ControlDependenceOptions cOptions,
HeapExclusions exclusions,
CallGraph cg,
ModRef modRef,
boolean ignoreAllocHeapDefs) |
public PDG(CGNode node, PointerAnalysis<InstanceKey> pa, Map<CGNode,com.ibm.wala.util.intset.OrdinalSet<PointerKey>> mod, Map<CGNode,com.ibm.wala.util.intset.OrdinalSet<PointerKey>> ref, Slicer.DataDependenceOptions dOptions, Slicer.ControlDependenceOptions cOptions, HeapExclusions exclusions, CallGraph cg, ModRef modRef)
mod - the set of heap locations which may be written (transitively) by this node. These are logically return values in the
SDG.ref - the set of heap locations which may be read (transitively) by this node. These are logically parameters in the SDG.IllegalArgumentException - if node is nullpublic PDG(CGNode node, PointerAnalysis<InstanceKey> pa, Map<CGNode,com.ibm.wala.util.intset.OrdinalSet<PointerKey>> mod, Map<CGNode,com.ibm.wala.util.intset.OrdinalSet<PointerKey>> ref, Slicer.DataDependenceOptions dOptions, Slicer.ControlDependenceOptions cOptions, HeapExclusions exclusions, CallGraph cg, ModRef modRef, boolean ignoreAllocHeapDefs)
mod - the set of heap locations which may be written (transitively) by this node. These are logically return values in the
SDG.ref - the set of heap locations which may be read (transitively) by this node. These are logically parameters in the SDG.IllegalArgumentException - if node is nullpublic Set<Statement> getCallerParamStatements(SSAAbstractInvokeInstruction call) throws IllegalArgumentException
IllegalArgumentExceptionpublic Set<Statement> getCallStatements(SSAAbstractInvokeInstruction call) throws IllegalArgumentException
IllegalArgumentExceptionpublic Set<Statement> getCallerReturnStatements(SSAAbstractInvokeInstruction call) throws IllegalArgumentException
IllegalArgumentExceptionpublic static Statement ssaInstruction2Statement(CGNode node, SSAInstruction s, Map<SSAInstruction,Integer> instructionIndices, IR ir)
public static Map<SSAInstruction,Integer> computeInstructionIndices(IR ir)
public Statement[] getParamCalleeStatements()
public Statement[] getReturnStatements()
public CGNode getCallGraphNode()
public int getPredNodeCount(Statement N) throws com.ibm.wala.util.debug.UnimplementedError
getPredNodeCount in interface com.ibm.wala.util.graph.EdgeManager<Statement>com.ibm.wala.util.debug.UnimplementedErrorpublic Iterator<Statement> getPredNodes(Statement N)
getPredNodes in interface com.ibm.wala.util.graph.EdgeManager<Statement>public int getSuccNodeCount(Statement N) throws com.ibm.wala.util.debug.UnimplementedError
getSuccNodeCount in interface com.ibm.wala.util.graph.EdgeManager<Statement>com.ibm.wala.util.debug.UnimplementedErrorpublic Iterator<Statement> getSuccNodes(Statement N)
getSuccNodes in interface com.ibm.wala.util.graph.EdgeManager<Statement>public boolean hasEdge(Statement src, Statement dst) throws com.ibm.wala.util.debug.UnimplementedError
hasEdge in interface com.ibm.wala.util.graph.EdgeManager<Statement>com.ibm.wala.util.debug.UnimplementedErrorpublic void removeNodeAndEdges(Statement N) throws UnsupportedOperationException
removeNodeAndEdges in interface com.ibm.wala.util.graph.Graph<Statement>UnsupportedOperationExceptionpublic void addNode(Statement n)
addNode in interface com.ibm.wala.util.graph.NodeManager<Statement>public boolean containsNode(Statement N)
containsNode in interface com.ibm.wala.util.graph.NodeManager<Statement>public int getNumberOfNodes()
getNumberOfNodes in interface com.ibm.wala.util.graph.NodeManager<Statement>public void removeNode(Statement n)
removeNode in interface com.ibm.wala.util.graph.NodeManager<Statement>public void addEdge(Statement src, Statement dst)
addEdge in interface com.ibm.wala.util.graph.EdgeManager<Statement>public void removeAllIncidentEdges(Statement node) throws UnsupportedOperationException
removeAllIncidentEdges in interface com.ibm.wala.util.graph.EdgeManager<Statement>UnsupportedOperationExceptionpublic void removeEdge(Statement src, Statement dst) throws UnsupportedOperationException
removeEdge in interface com.ibm.wala.util.graph.EdgeManager<Statement>UnsupportedOperationExceptionpublic void removeIncomingEdges(Statement node) throws UnsupportedOperationException
removeIncomingEdges in interface com.ibm.wala.util.graph.EdgeManager<Statement>UnsupportedOperationExceptionpublic void removeOutgoingEdges(Statement node) throws UnsupportedOperationException
removeOutgoingEdges in interface com.ibm.wala.util.graph.EdgeManager<Statement>UnsupportedOperationExceptionpublic int getMaxNumber()
getMaxNumber in interface com.ibm.wala.util.graph.NumberedNodeManager<Statement>public Statement getNode(int number)
getNode in interface com.ibm.wala.util.graph.NumberedNodeManager<Statement>public int getNumber(Statement N)
getNumber in interface com.ibm.wala.util.graph.NumberedNodeManager<Statement>public Iterator<Statement> iterateNodes(com.ibm.wala.util.intset.IntSet s)
iterateNodes in interface com.ibm.wala.util.graph.NumberedNodeManager<Statement>public com.ibm.wala.util.intset.IntSet getPredNodeNumbers(Statement node)
getPredNodeNumbers in interface com.ibm.wala.util.graph.NumberedEdgeManager<Statement>public com.ibm.wala.util.intset.IntSet getSuccNodeNumbers(Statement node)
getSuccNodeNumbers in interface com.ibm.wala.util.graph.NumberedEdgeManager<Statement>Copyright © 2015. All rights reserved.