public interface IFlowGraph extends LabeledGraph<Object,IFlowLabel>
removeNodeAndEdges
addNode, containsNode, getNumberOfNodes, iterator, removeNode
forEach, spliterator
addEdge, getDefaultLabel, getEdgeLabels, getPredLabels, getPredNodeCount, getPredNodes, getSuccLabels, getSuccNodeCount, getSuccNodes, hasEdge, removeEdge
addEdge, getPredNodeCount, getPredNodes, getSuccNodeCount, getSuccNodes, hasEdge, removeAllIncidentEdges, removeEdge, removeIncomingEdges, removeOutgoingEdges
void visitSuccs(Object node, IFlowLabel.IFlowLabelVisitor v)
void visitPreds(Object node, IFlowLabel.IFlowLabelVisitor v)
void addSubgraphForNode(CGNode node) throws IllegalArgumentException
IllegalArgumentException
- if node == nullboolean hasSubgraphForNode(CGNode node)
boolean isParam(LocalPointerKey pk)
pk
- true
iff pk
is a formal parameterIterator<SSAAbstractInvokeInstruction> getInstrsPassingParam(LocalPointerKey pk)
pk
- SSAInvokeInstruction
s passing some pointer as a parameterSSAAbstractInvokeInstruction getInstrReturningTo(LocalPointerKey pk)
SSAInvokeInstruction
whose return value is assigned to a pointer key.null
if no return value is assigned to pkIterator<? extends Object> getWritesToStaticField(StaticFieldKey sfk) throws IllegalArgumentException
sfk
- the static fieldIllegalArgumentException
- if sfk == nullIterator<? extends Object> getReadsOfStaticField(StaticFieldKey sfk) throws IllegalArgumentException
sfk
- the static fieldIllegalArgumentException
- if sfk == nullIterator<PointerKey> getWritesToInstanceField(PointerKey pk, IField f)
Iterator<PointerKey> getReadsOfInstanceField(PointerKey pk, IField f)
Set<CallerSiteContext> getPotentialCallers(PointerKey formalPk)
formalPk
- a PointerKey
representing either a formal parameter or return valueCallerSiteContext
s representing pointer callers of formalPk
's methodSet<CGNode> getPossibleTargets(CGNode caller, CallSiteReference site, LocalPointerKey actualPk)
caller
- the callersite
- the call siteactualPk
- a LocalPointerKey
corresponding to the actual parameter or return value of interest. This may be used
to filter out certain callees.