Class DemandPointerFlowGraph
java.lang.Object
com.ibm.wala.util.graph.AbstractGraph<Object>
com.ibm.wala.util.graph.AbstractNumberedGraph<Object>
com.ibm.wala.util.graph.labeled.AbstractNumberedLabeledGraph<Object, IFlowLabel>
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>, NumberedLabeledEdgeManager<Object, IFlowLabel>, NumberedLabeledGraph<Object, IFlowLabel>, NodeManager<Object>, NumberedEdgeManager<Object>, NumberedGraph<Object>, NumberedNodeManager<Object>, Serializable, Iterable<Object>
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 label
AssignLabel.noFilter()- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classstatic classA visitor that generates graph nodes and edges for an IR.Nested classes/interfaces inherited from class AbstractDemandFlowGraph
AbstractDemandFlowGraph.FlowStatementVisitor -
Field Summary
Fields inherited from class AbstractFlowGraph
callDefs, callParams, cg, cha, heapModel, mam, params, returns -
Constructor Summary
ConstructorsConstructorDescriptionDemandPointerFlowGraph(CallGraph cg, HeapModel heapModel, MemoryAccessMap mam, IClassHierarchy cha) -
Method Summary
Modifier and TypeMethodDescriptionprotected voidaddNodesForParameters(CGNode node, IR ir) add nodes for parameters and return valuesgetInfoForNewMultiDim(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.makeVisitor(CGNode node) Methods inherited from class AbstractDemandFlowGraph
addBlockInstructionConstraints, addNodeInstructionConstraints, addSubgraphForNode, getParamPreds, getParamSuccs, getPossibleTargets, getPotentialCallers, getReturnPreds, getReturnSuccs, hasSubgraphForNode, unconditionallyAddConstraintsFromNodeMethods inherited from class AbstractFlowGraph
addExceptionDefConstraints, addNodeConstantConstraints, addNodePassthruExceptionConstraints, addNodesForInvocations, convertPointerKeyToHeapModel, getArrayReads, getInstrReturningTo, getInstrsPassingParam, getReadsOfInstanceField, getReadsOfStaticField, getWritesToInstanceField, getWritesToStaticField, isParam, visitPreds, visitSuccsMethods inherited from class SlowSparseNumberedLabeledGraph
copyInto, duplicate, getEdgeManager, getNodeManagerMethods inherited from class AbstractNumberedLabeledGraph
addEdge, edgeString, getDefaultLabel, getEdgeLabels, getPredLabels, getPredNodeCount, getPredNodeNumbers, getPredNodes, getSuccLabels, getSuccNodeCount, getSuccNodeNumbers, getSuccNodes, hasEdge, removeEdgeMethods inherited from class AbstractNumberedGraph
getMaxNumber, getNode, getNumber, getPredNodeNumbers, getSuccNodeNumbers, iterateNodesMethods inherited from class AbstractGraph
addEdge, addNode, containsNode, getNumberOfNodes, getPredNodeCount, getPredNodes, getSuccNodeCount, getSuccNodes, hasEdge, iterator, nodeString, removeAllIncidentEdges, removeEdge, removeIncomingEdges, removeNode, removeNodeAndEdges, removeOutgoingEdges, stream, toStringMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface EdgeManager
addEdge, getPredNodeCount, getPredNodes, getSuccNodeCount, getSuccNodes, hasEdge, removeAllIncidentEdges, removeEdge, removeIncomingEdges, removeOutgoingEdgesMethods inherited from interface Graph
removeNodeAndEdgesMethods inherited from interface IFlowGraph
addSubgraphForNode, getInstrReturningTo, getInstrsPassingParam, getPossibleTargets, getPotentialCallers, getReadsOfInstanceField, getReadsOfStaticField, getWritesToInstanceField, getWritesToStaticField, hasSubgraphForNode, isParam, visitPreds, visitSuccsMethods inherited from interface Iterable
forEach, spliteratorMethods inherited from interface LabeledEdgeManager
addEdge, getDefaultLabel, getEdgeLabels, getPredLabels, getPredNodeCount, getPredNodes, getPredNodes, getSuccLabels, getSuccNodeCount, getSuccNodes, hasEdge, removeEdgeMethods inherited from interface NodeManager
addNode, containsNode, getNumberOfNodes, iterator, removeNode, streamMethods inherited from interface NumberedEdgeManager
getPredNodeNumbers, getSuccNodeNumbersMethods inherited from interface NumberedNodeManager
getMaxNumber, getNode, getNumber, iterateNodes
-
Constructor Details
-
DemandPointerFlowGraph
public DemandPointerFlowGraph(CallGraph cg, HeapModel heapModel, MemoryAccessMap mam, IClassHierarchy cha)
-
-
Method Details
-
addNodesForParameters
add nodes for parameters and return values- Specified by:
addNodesForParametersin classAbstractDemandFlowGraph
-
makeVisitor
- 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).
-