public abstract class AbstractDemandFlowGraph extends AbstractFlowGraph
| Modifier and Type | Class and Description |
|---|---|
protected static interface |
AbstractDemandFlowGraph.FlowStatementVisitor |
callDefs, callParams, cg, cha, heapModel, mam, params, returns| Constructor and Description |
|---|
AbstractDemandFlowGraph(CallGraph cg,
HeapModel heapModel,
MemoryAccessMap mam,
IClassHierarchy cha) |
addExceptionDefConstraints, addNodeConstantConstraints, addNodePassthruExceptionConstraints, addNodesForInvocations, convertPointerKeyToHeapModel, getArrayReads, getInstrReturningTo, getInstrsPassingParam, getReadsOfInstanceField, getReadsOfStaticField, getWritesToInstanceField, getWritesToStaticField, isParam, visitPreds, visitSuccscopyInto, duplicate, getEdgeManager, getNodeManageraddEdge, getDefaultLabel, getEdgeLabels, getPredLabels, getPredNodeCount, getPredNodeNumbers, getPredNodes, getSuccLabels, getSuccNodeCount, getSuccNodeNumbers, getSuccNodes, hasEdge, removeEdgegetMaxNumber, getNode, getNumber, getPredNodeNumbers, getSuccNodeNumbers, iterateNodesaddEdge, addNode, containsNode, getNumberOfNodes, getPredNodeCount, getPredNodes, getSuccNodeCount, getSuccNodes, hasEdge, iterator, removeAllIncidentEdges, removeEdge, removeIncomingEdges, removeNode, removeNodeAndEdges, removeOutgoingEdges, toStringclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitaddNode, containsNode, getNumberOfNodes, iterator, removeNodepublic AbstractDemandFlowGraph(CallGraph cg, HeapModel heapModel, MemoryAccessMap mam, IClassHierarchy cha)
public void addSubgraphForNode(CGNode node) throws IllegalArgumentException
IFlowGraphIllegalArgumentException - if node == nullpublic boolean hasSubgraphForNode(CGNode node)
public Iterator<PointerKeyAndCallSite> getParamSuccs(LocalPointerKey pk)
public Iterator<PointerKeyAndCallSite> getParamPreds(LocalPointerKey pk)
public Iterator<PointerKeyAndCallSite> getReturnSuccs(LocalPointerKey pk)
public Iterator<PointerKeyAndCallSite> getReturnPreds(LocalPointerKey pk)
protected void unconditionallyAddConstraintsFromNode(CGNode node, IR ir)
protected void addNodeInstructionConstraints(CGNode node, IR ir, DefUse du)
protected void addBlockInstructionConstraints(CGNode node, ControlFlowGraph<SSAInstruction,ISSABasicBlock> cfg, ISSABasicBlock b, AbstractDemandFlowGraph.FlowStatementVisitor v)
protected abstract AbstractDemandFlowGraph.FlowStatementVisitor makeVisitor(CGNode node)
public Set<CallerSiteContext> getPotentialCallers(PointerKey formalPk)
formalPk - a PointerKey representing either a formal parameter or return valueCallerSiteContexts representing pointer callers of formalPk's methodpublic Set<CGNode> getPossibleTargets(CGNode node, CallSiteReference site, LocalPointerKey actualPk)
IFlowGraphnode - 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.Copyright © 2015. All rights reserved.