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 classDemandPointerFlowGraph.NewMultiDimInfostatic classDemandPointerFlowGraph.StatementVisitorA 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 voidaddNodesForParameters(CGNode node, IR ir)add nodes for parameters and return valuesstatic DemandPointerFlowGraph.NewMultiDimInfogetInfoForNewMultiDim(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.FlowStatementVisitormakeVisitor(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:
addNodesForParametersin classAbstractDemandFlowGraph
-
makeVisitor
protected AbstractDemandFlowGraph.FlowStatementVisitor makeVisitor(CGNode node)
- Specified by:
makeVisitorin 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).
-
-