Class AbstractDemandFlowGraph
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
- 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>
- Direct Known Subclasses:
DemandPointerFlowGraph
,DemandValueFlowGraph
A graph representing program flow, constructed method-by-method on demand
- See Also:
-
Nested Class Summary
Modifier and TypeClassDescriptionprotected static interface
-
Field Summary
Fields inherited from class com.ibm.wala.demandpa.flowgraph.AbstractFlowGraph
callDefs, callParams, cg, cha, heapModel, mam, params, returns
-
Constructor Summary
ConstructorDescriptionAbstractDemandFlowGraph
(CallGraph cg, HeapModel heapModel, MemoryAccessMap mam, IClassHierarchy cha) -
Method Summary
Modifier and TypeMethodDescriptionprotected void
addBlockInstructionConstraints
(CGNode node, ControlFlowGraph<SSAInstruction, ISSABasicBlock> cfg, ISSABasicBlock b, AbstractDemandFlowGraph.FlowStatementVisitor v) Add constraints for a particular basic block.protected void
addNodeInstructionConstraints
(CGNode node, IR ir) Add pointer flow constraints based on instructions in a given nodeprotected abstract void
addNodesForParameters
(CGNode node, IR ir) void
addSubgraphForNode
(CGNode node) add representation of flow for a node, if not already presentgetPossibleTargets
(CGNode node, CallSiteReference site, LocalPointerKey actualPk) get the callees that should be considered at a particular call sitegetPotentialCallers
(PointerKey formalPk) boolean
hasSubgraphForNode
(CGNode node) protected abstract AbstractDemandFlowGraph.FlowStatementVisitor
makeVisitor
(CGNode node) protected void
unconditionallyAddConstraintsFromNode
(CGNode node, IR ir) 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, edgeString, 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, nodeString, removeAllIncidentEdges, removeEdge, removeIncomingEdges, removeNode, removeNodeAndEdges, removeOutgoingEdges, stream, 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 java.lang.Iterable
forEach, spliterator
Methods inherited from interface com.ibm.wala.util.graph.labeled.LabeledEdgeManager
addEdge, getDefaultLabel, getEdgeLabels, getPredLabels, getPredNodeCount, getPredNodes, getPredNodes, getSuccLabels, getSuccNodeCount, getSuccNodes, hasEdge, removeEdge
Methods inherited from interface com.ibm.wala.util.graph.NodeManager
addNode, containsNode, getNumberOfNodes, iterator, removeNode, stream
Methods inherited from interface com.ibm.wala.util.graph.NumberedEdgeManager
getPredNodeNumbers, getSuccNodeNumbers
Methods inherited from interface com.ibm.wala.util.graph.NumberedNodeManager
getMaxNumber, getNode, getNumber, iterateNodes
-
Constructor Details
-
AbstractDemandFlowGraph
public AbstractDemandFlowGraph(CallGraph cg, HeapModel heapModel, MemoryAccessMap mam, IClassHierarchy cha)
-
-
Method Details
-
addSubgraphForNode
Description copied from interface:IFlowGraph
add representation of flow for a node, if not already present- Throws:
IllegalArgumentException
- if node == null- See Also:
-
hasSubgraphForNode
- See Also:
-
getParamSuccs
- See Also:
-
getParamPreds
- See Also:
-
getReturnSuccs
- See Also:
-
getReturnPreds
- See Also:
-
addNodesForParameters
-
unconditionallyAddConstraintsFromNode
-
addNodeInstructionConstraints
-
addBlockInstructionConstraints
protected void addBlockInstructionConstraints(CGNode node, ControlFlowGraph<SSAInstruction, ISSABasicBlock> cfg, ISSABasicBlock b, AbstractDemandFlowGraph.FlowStatementVisitor v) Add constraints for a particular basic block. -
makeVisitor
-
getPotentialCallers
- Parameters:
formalPk
- aPointerKey
representing either a formal parameter or return value- Returns:
- the
CallerSiteContext
s representing pointer callers offormalPk
's method
-
getPossibleTargets
public Set<CGNode> getPossibleTargets(CGNode node, CallSiteReference site, LocalPointerKey actualPk) Description copied from interface:IFlowGraph
get the callees that should be considered at a particular call site- Parameters:
node
- the callersite
- the call siteactualPk
- aLocalPointerKey
corresponding to the actual parameter or return value of interest. This may be used to filter out certain callees.- Returns:
- the callees of interest
-