com.ibm.wala.demandpa.flowgraph
Class DemandPointerFlowGraph

java.lang.Object
  extended by com.ibm.wala.util.graph.AbstractGraph<T>
      extended by com.ibm.wala.util.graph.AbstractNumberedGraph<T>
          extended by com.ibm.wala.util.graph.labeled.AbstractNumberedLabeledGraph<T,U>
              extended by com.ibm.wala.util.graph.labeled.SlowSparseNumberedLabeledGraph<java.lang.Object,IFlowLabel>
                  extended by com.ibm.wala.demandpa.flowgraph.AbstractFlowGraph
                      extended by com.ibm.wala.demandpa.flowgraph.AbstractDemandFlowGraph
                          extended by com.ibm.wala.demandpa.flowgraph.DemandPointerFlowGraph
All Implemented Interfaces:
IFlowGraph, EdgeManager<java.lang.Object>, Graph<java.lang.Object>, LabeledEdgeManager<java.lang.Object,IFlowLabel>, LabeledGraph<java.lang.Object,IFlowLabel>, NodeManager<java.lang.Object>, NumberedEdgeManager<java.lang.Object>, NumberedGraph<java.lang.Object>, NumberedNodeManager<java.lang.Object>, java.lang.Iterable<java.lang.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 label AssignLabel.noFilter()


Nested Class Summary
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
DemandPointerFlowGraph(CallGraph cg, HeapModel heapModel, MemoryAccessMap mam, ClassHierarchy cha)
           
 
Method Summary
protected  void addNodesForParameters(CGNode node)
          add nodes for parameters and return values
protected  AbstractDemandFlowGraph.FlowStatementVisitor makeVisitor(ExplicitCallGraph.ExplicitNode 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, getArrayReads, getInstrReturningTo, getInstrsPassingParam, getReadsOfInstanceField, getReadsOfStaticField, getWritesToInstanceField, getWritesToStaticField, isParam, visitPreds, visitSuccs
 
Methods inherited from class com.ibm.wala.util.graph.labeled.SlowSparseNumberedLabeledGraph
getEdgeManager, getNodeManager
 
Methods inherited from class com.ibm.wala.util.graph.labeled.AbstractNumberedLabeledGraph
addEdge, getDefaultLabel, getEdgeLabels, getPredLabels, getPredNodeCount, getPredNodes, getSuccLabels, getSuccNodeCount, 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.demandpa.flowgraph.IFlowGraph
addSubgraphForNode, getInstrReturningTo, getInstrsPassingParam, getPossibleTargets, getPotentialCallers, getReadsOfInstanceField, getReadsOfStaticField, getWritesToInstanceField, getWritesToStaticField, hasSubgraphForNode, isParam, visitPreds, visitSuccs
 
Methods inherited from interface com.ibm.wala.util.graph.Graph
removeNodeAndEdges
 
Methods inherited from interface com.ibm.wala.util.graph.NodeManager
addNode, containsNode, getNumberOfNodes, iterator, removeNode
 
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.labeled.LabeledEdgeManager
addEdge, getDefaultLabel, getEdgeLabels, getPredLabels, getPredNodeCount, getPredNodes, getSuccLabels, getSuccNodeCount, getSuccNodes, hasEdge, removeEdge
 
Methods inherited from interface com.ibm.wala.util.graph.EdgeManager
addEdge, getPredNodeCount, getPredNodes, getSuccNodeCount, getSuccNodes, hasEdge, removeAllIncidentEdges, removeEdge, removeIncomingEdges, removeOutgoingEdges
 

Constructor Detail

DemandPointerFlowGraph

public DemandPointerFlowGraph(CallGraph cg,
                              HeapModel heapModel,
                              MemoryAccessMap mam,
                              ClassHierarchy cha)
Method Detail

addNodesForParameters

protected void addNodesForParameters(CGNode node)
add nodes for parameters and return values

Specified by:
addNodesForParameters in class AbstractDemandFlowGraph
Parameters:
node -

makeVisitor

protected AbstractDemandFlowGraph.FlowStatementVisitor makeVisitor(ExplicitCallGraph.ExplicitNode node)
Specified by:
makeVisitor in class AbstractDemandFlowGraph