Package com.ibm.wala.demandpa.flowgraph
Class DemandPointerFlowGraph
- java.lang.Object
-
- com.ibm.wala.util.graph.AbstractGraph<T>
-
- com.ibm.wala.util.graph.AbstractNumberedGraph<T>
-
- com.ibm.wala.util.graph.labeled.AbstractNumberedLabeledGraph<T,U>
-
- com.ibm.wala.util.graph.labeled.SlowSparseNumberedLabeledGraph<Object,IFlowLabel>
-
- com.ibm.wala.demandpa.flowgraph.AbstractFlowGraph
-
- com.ibm.wala.demandpa.flowgraph.AbstractDemandFlowGraph
-
- com.ibm.wala.demandpa.flowgraph.DemandPointerFlowGraph
-
- All Implemented Interfaces:
IFlowGraph
,EdgeManager<Object>
,Graph<Object>
,LabeledEdgeManager<Object,IFlowLabel>
,LabeledGraph<Object,IFlowLabel>
,NodeManager<Object>
,NumberedEdgeManager<Object>
,NumberedGraph<Object>
,NumberedNodeManager<Object>
,Iterable<Object>
public class DemandPointerFlowGraph extends AbstractDemandFlowGraph implements IFlowGraph
A graph representation of statements flowing pointer values, but not primitive values. Nodes are variables, and edges are against value flow; assignment x = y yields edge from x to y with labelAssignLabel.noFilter()
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
DemandPointerFlowGraph.NewMultiDimInfo
static class
DemandPointerFlowGraph.StatementVisitor
A visitor that generates graph nodes and edges for an IR.-
Nested classes/interfaces inherited from class com.ibm.wala.demandpa.flowgraph.AbstractDemandFlowGraph
AbstractDemandFlowGraph.FlowStatementVisitor
-
-
Field Summary
-
Fields inherited from class com.ibm.wala.demandpa.flowgraph.AbstractFlowGraph
callDefs, callParams, cg, cha, heapModel, mam, params, returns
-
-
Constructor Summary
Constructors Constructor Description DemandPointerFlowGraph(CallGraph cg, HeapModel heapModel, MemoryAccessMap mam, IClassHierarchy cha)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
addNodesForParameters(CGNode node, IR ir)
add nodes for parameters and return valuesstatic DemandPointerFlowGraph.NewMultiDimInfo
getInfoForNewMultiDim(SSANewInstruction instruction, HeapModel heapModel, CGNode node)
collect information about the new instructions and putfield instructions used to model an allocation of a multi-dimensional array.protected AbstractDemandFlowGraph.FlowStatementVisitor
makeVisitor(CGNode node)
-
Methods inherited from class com.ibm.wala.demandpa.flowgraph.AbstractDemandFlowGraph
addBlockInstructionConstraints, addNodeInstructionConstraints, addSubgraphForNode, getParamPreds, getParamSuccs, getPossibleTargets, getPotentialCallers, getReturnPreds, getReturnSuccs, hasSubgraphForNode, unconditionallyAddConstraintsFromNode
-
Methods inherited from class com.ibm.wala.demandpa.flowgraph.AbstractFlowGraph
addExceptionDefConstraints, addNodeConstantConstraints, addNodePassthruExceptionConstraints, addNodesForInvocations, convertPointerKeyToHeapModel, getArrayReads, getInstrReturningTo, getInstrsPassingParam, getReadsOfInstanceField, getReadsOfStaticField, getWritesToInstanceField, getWritesToStaticField, isParam, visitPreds, visitSuccs
-
Methods inherited from class com.ibm.wala.util.graph.labeled.SlowSparseNumberedLabeledGraph
copyInto, duplicate, getEdgeManager, getNodeManager
-
Methods inherited from class com.ibm.wala.util.graph.labeled.AbstractNumberedLabeledGraph
addEdge, getDefaultLabel, getEdgeLabels, getPredLabels, getPredNodeCount, getPredNodeNumbers, getPredNodes, getSuccLabels, getSuccNodeCount, getSuccNodeNumbers, getSuccNodes, hasEdge, removeEdge
-
Methods inherited from class com.ibm.wala.util.graph.AbstractNumberedGraph
getMaxNumber, getNode, getNumber, getPredNodeNumbers, getSuccNodeNumbers, iterateNodes
-
Methods inherited from class com.ibm.wala.util.graph.AbstractGraph
addEdge, addNode, containsNode, getNumberOfNodes, getPredNodeCount, getPredNodes, getSuccNodeCount, getSuccNodes, hasEdge, iterator, removeAllIncidentEdges, removeEdge, removeIncomingEdges, removeNode, removeNodeAndEdges, removeOutgoingEdges, toString
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface com.ibm.wala.util.graph.EdgeManager
addEdge, getPredNodeCount, getPredNodes, getSuccNodeCount, getSuccNodes, hasEdge, removeAllIncidentEdges, removeEdge, removeIncomingEdges, removeOutgoingEdges
-
Methods inherited from interface com.ibm.wala.util.graph.Graph
removeNodeAndEdges
-
Methods inherited from interface com.ibm.wala.demandpa.flowgraph.IFlowGraph
addSubgraphForNode, getInstrReturningTo, getInstrsPassingParam, getPossibleTargets, getPotentialCallers, getReadsOfInstanceField, getReadsOfStaticField, getWritesToInstanceField, getWritesToStaticField, hasSubgraphForNode, isParam, visitPreds, visitSuccs
-
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
Methods inherited from interface com.ibm.wala.util.graph.labeled.LabeledEdgeManager
addEdge, getDefaultLabel, getEdgeLabels, getPredLabels, getPredNodeCount, getPredNodes, getSuccLabels, getSuccNodeCount, getSuccNodes, hasEdge, removeEdge
-
Methods inherited from interface com.ibm.wala.util.graph.NodeManager
addNode, containsNode, getNumberOfNodes, iterator, removeNode
-
-
-
-
Constructor Detail
-
DemandPointerFlowGraph
public DemandPointerFlowGraph(CallGraph cg, HeapModel heapModel, MemoryAccessMap mam, IClassHierarchy cha)
-
-
Method Detail
-
addNodesForParameters
protected void addNodesForParameters(CGNode node, IR ir)
add nodes for parameters and return values- Specified by:
addNodesForParameters
in classAbstractDemandFlowGraph
-
makeVisitor
protected AbstractDemandFlowGraph.FlowStatementVisitor makeVisitor(CGNode node)
- Specified by:
makeVisitor
in classAbstractDemandFlowGraph
-
getInfoForNewMultiDim
public static DemandPointerFlowGraph.NewMultiDimInfo getInfoForNewMultiDim(SSANewInstruction instruction, HeapModel heapModel, CGNode node)
collect information about the new instructions and putfield instructions used to model an allocation of a multi-dimensional array. excludes the new instruction itself (i.e., the allocation of the top-level multi-dim array).
-
-