Interface IFlowGraph
- All Superinterfaces:
EdgeManager<Object>, Graph<Object>, Iterable<Object>, LabeledEdgeManager<Object, IFlowLabel>, LabeledGraph<Object, IFlowLabel>, NodeManager<Object>
- All Known Implementing Classes:
AbstractDemandFlowGraph, AbstractFlowGraph, DemandPointerFlowGraph, DemandValueFlowGraph
-
Method Summary
Modifier and TypeMethodDescriptionvoidaddSubgraphForNode(CGNode node) add representation of flow for a node, if not already presentget theSSAInvokeInstructionwhose return value is assigned to a pointer key.getPossibleTargets(CGNode caller, CallSiteReference site, LocalPointerKey actualPk) get the callees that should be considered at a particular call sitegetPotentialCallers(PointerKey formalPk) booleanhasSubgraphForNode(CGNode node) booleanvoidvisitPreds(Object node, IFlowLabel.IFlowLabelVisitor v) Apply a visitor to the predecessors of some node.voidvisitSuccs(Object node, IFlowLabel.IFlowLabelVisitor v) Apply a visitor to the successors of some node.Methods inherited from interface EdgeManager
addEdge, getPredNodeCount, getPredNodes, getSuccNodeCount, getSuccNodes, hasEdge, removeAllIncidentEdges, removeEdge, removeIncomingEdges, removeOutgoingEdgesMethods inherited from interface Graph
removeNodeAndEdgesMethods 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, stream
-
Method Details
-
visitSuccs
Apply a visitor to the successors of some node. -
visitPreds
Apply a visitor to the predecessors of some node. -
addSubgraphForNode
add representation of flow for a node, if not already present- Throws:
IllegalArgumentException- if node == null
-
hasSubgraphForNode
-
isParam
- Returns:
trueiffpkis a formal parameter
-
getInstrsPassingParam
- Returns:
- the
SSAInvokeInstructions passing some pointer as a parameter
-
getInstrReturningTo
get theSSAInvokeInstructionwhose return value is assigned to a pointer key.- Returns:
- the instruction, or
nullif no return value is assigned to pk
-
getWritesToStaticField
Iterator<? extends Object> getWritesToStaticField(StaticFieldKey sfk) throws IllegalArgumentException - Parameters:
sfk- the static field- Returns:
- all the variables whose values are written to sfk
- Throws:
IllegalArgumentException- if sfk == null
-
getReadsOfStaticField
Iterator<? extends Object> getReadsOfStaticField(StaticFieldKey sfk) throws IllegalArgumentException - Parameters:
sfk- the static field- Returns:
- all the variables that get the value of sfk
- Throws:
IllegalArgumentException- if sfk == null
-
getWritesToInstanceField
-
getReadsOfInstanceField
-
getPotentialCallers
- Parameters:
formalPk- aPointerKeyrepresenting either a formal parameter or return value- Returns:
- the
CallerSiteContexts representing pointer callers offormalPk's method
-
getPossibleTargets
get the callees that should be considered at a particular call site- Parameters:
caller- the callersite- the call siteactualPk- aLocalPointerKeycorresponding to the actual parameter or return value of interest. This may be used to filter out certain callees.- Returns:
- the callees of interest
-