public class DefUseDataFlow extends VarContextDataFlow<DefUseAbsVal>
PreciseDataFlow.PreciseCFGBuilder<FlowItem extends polyglot.visit.DataFlow.Item>polyglot.visit.DataFlow.BoolItem<FlowItem extends polyglot.visit.DataFlow.Item>, polyglot.visit.DataFlow.ConditionNavigator<FlowItem extends polyglot.visit.DataFlow.Item>, polyglot.visit.DataFlow.FlowGraphSource<FlowItem extends polyglot.visit.DataFlow.Item>, polyglot.visit.DataFlow.Frame<FlowItem extends polyglot.visit.DataFlow.Item>, polyglot.visit.DataFlow.Item| Modifier and Type | Field and Description |
|---|---|
protected java.util.Set<AbstractLocation> |
aUnitDefs |
protected java.util.Set<AbstractLocation> |
aUnitObs |
protected java.util.Set<EdgeIdentifier> |
aUnitUses |
protected DefUseAnalysisUtil |
autil |
protected java.lang.String |
data_dep_results_key |
protected boolean |
heap_assign_is_use
Treat heap assignments as uses of the left-hand side.
|
protected java.util.Map<DataFlowNodeIdentifier,java.lang.Integer> |
nodePostordering |
DONT_TRACK_BOTTOM, output, WARN_ON_MISSING_EDGES, workQueue| Constructor and Description |
|---|
DefUseDataFlow(DefUseAnalysisUtil autil,
WorkQueue<VarContext<DefUseAbsVal>> workQueue,
polyglot.frontend.Job job,
polyglot.types.TypeSystem ts,
polyglot.ast.NodeFactory nf) |
| Modifier and Type | Method and Description |
|---|---|
static <T> void |
addResults(java.lang.String resultKey,
AccrueExt rec,
AnalysisContext ctx,
java.util.Set<T> results)
Adds a set of results to the current set
|
protected void |
check(polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> p) |
protected void |
check(polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph,
polyglot.ast.Term n,
boolean entry,
VarContext<DefUseAbsVal> inItem,
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> outItems) |
protected DefUseAbsVal |
createHeapDefinition(java.util.Set<AbstractLocation> locs,
polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer) |
protected DefUseAbsVal |
createLocalDefinition(java.lang.String defined,
polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer) |
protected FinalVarContext<DefUseAbsVal> |
flowArithmeticException(VarContext<DefUseAbsVal> dfIn,
polyglot.ast.Binary cause,
polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer) |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> |
flowArrayAccess(polyglot.ast.ArrayAccess n,
VarContext<DefUseAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> |
flowArrayAccessAssign(polyglot.ast.ArrayAccessAssign n,
VarContext<DefUseAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> |
flowArrayInit(polyglot.ast.ArrayInit n,
VarContext<DefUseAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> |
flowBinary(polyglot.ast.Binary n,
VarContext<DefUseAbsVal> dfIn,
VarContext<DefUseAbsVal> trueItem,
VarContext<DefUseAbsVal> falseItem,
polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> |
flowCall(polyglot.ast.Call n,
VarContext<DefUseAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> |
flowCast(polyglot.ast.Cast n,
VarContext<DefUseAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> |
flowCatch(polyglot.ast.Catch n,
VarContext<DefUseAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
Compute the dataflow for
n |
protected FinalVarContext<DefUseAbsVal> |
flowClassCastException(VarContext<DefUseAbsVal> dfIn,
polyglot.ast.Cast cause,
DefUseAbsVal causeDFI,
polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer) |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> |
flowCodeDecl(polyglot.ast.CodeDecl n,
VarContext<DefUseAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> |
flowConstructorCall(polyglot.ast.ConstructorCall n,
VarContext<DefUseAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> |
flowExpr(polyglot.ast.Expr n,
VarContext<DefUseAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> |
flowField(polyglot.ast.Field n,
VarContext<DefUseAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> |
flowFieldAssign(polyglot.ast.FieldAssign n,
VarContext<DefUseAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> |
flowFieldDecl(polyglot.ast.FieldDecl n,
VarContext<DefUseAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> |
flowFinally(polyglot.ast.Block n,
VarContext<DefUseAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> |
flowFormal(polyglot.ast.Formal n,
VarContext<DefUseAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> |
flowIf(polyglot.ast.If n,
VarContext<DefUseAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
Compute the dataflow for
n |
protected java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> |
flowImpl(VarContext<DefUseAbsVal> trueItem,
VarContext<DefUseAbsVal> falseItem,
VarContext<DefUseAbsVal> otherItem,
polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer) |
protected FinalVarContext<DefUseAbsVal> |
flowImpossibleException(FinalVarContext<DefUseAbsVal> res,
polyglot.types.ClassType exType,
polyglot.ast.Node cause) |
protected FinalVarContext<DefUseAbsVal> |
flowImpossibleException(VarContext<DefUseAbsVal> dfIn,
polyglot.types.ClassType exType,
polyglot.ast.Node cause,
polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer) |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> |
flowInstanceof(polyglot.ast.Instanceof n,
VarContext<DefUseAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> |
flowLit(polyglot.ast.Lit n,
VarContext<DefUseAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> |
flowLocal(polyglot.ast.Local n,
VarContext<DefUseAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> |
flowLocalAssign(polyglot.ast.LocalAssign n,
VarContext<DefUseAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> |
flowLocalDecl(polyglot.ast.LocalDecl n,
VarContext<DefUseAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> |
flowNew(polyglot.ast.New n,
VarContext<DefUseAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> |
flowNewArray(polyglot.ast.NewArray n,
VarContext<DefUseAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
Compute the dataflow for
n |
protected FinalVarContext<DefUseAbsVal> |
flowNullPointerException(VarContext<DefUseAbsVal> dfIn,
polyglot.ast.Node cause,
DefUseAbsVal causeDFI,
polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer) |
protected FinalVarContext<DefUseAbsVal> |
flowOutOfBoundsException(VarContext<DefUseAbsVal> dfIn,
polyglot.ast.Expr cause,
polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer) |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> |
flowReturn(polyglot.ast.Return n,
VarContext<DefUseAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> |
flowSpecial(polyglot.ast.Special n,
VarContext<DefUseAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> |
flowStmt(polyglot.ast.Stmt n,
VarContext<DefUseAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> |
flowThrow(polyglot.ast.Throw n,
VarContext<DefUseAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> |
flowTry(polyglot.ast.Try n,
VarContext<DefUseAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> |
flowTypeNode(polyglot.ast.TypeNode n,
VarContext<DefUseAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> |
flowUnary(polyglot.ast.Unary n,
VarContext<DefUseAbsVal> dfIn,
VarContext<DefUseAbsVal> trueItem,
VarContext<DefUseAbsVal> falseItem,
polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
Compute the dataflow for
n |
protected FinalVarContext<DefUseAbsVal> |
flowUncheckedException(VarContext<DefUseAbsVal> dfIn,
polyglot.types.ClassType exType,
polyglot.ast.Node cause,
polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer) |
protected static java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> |
itemToMapWithExceptionResults(VarContext<DefUseAbsVal> dfIn,
java.util.Set<polyglot.visit.FlowGraph.EdgeKey> edgeKeys) |
protected int |
postorderNodeIDs(polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> p,
int count,
java.util.Set<NodeIdentifier> visited) |
protected DefUseAbsVal |
upperBound(java.util.Collection<DefUseAbsVal> l) |
argumentsOnResultStack, autil, checkInvariants, confluence, constructMissingContextForEdgeKey, createInitialItem, dataflow, edgeKeyConvert, finalVarContextToDataFlowMap, flow, flow, flowAssert, flowAssign, flowBlock, flowBranch, flowConditional, flowConstructorDecl, flowDo, flowEmpty, flowEval, flowInitializer, flowLabeled, flowMethodDecl, flowSuppress, flowSynchronized, flowWhile, ignoreNode, keyConvert, post, postFieldDecl, safeConfluence, setWarnOnEdgesMissingDatacreateCFGBuilder, currentContext, dataFlowNodeIdentifierForPeer, dataFlowNodeIdentifierForPeer, initGraph, peerForDataFlowNodeIdentifierconfluence, constructItemsFromCondition, createFrame, createInitialItem, currentFlowGraph, dataflow, dataflow, dataflow, dumpFlowGraph, enterCall, filterItems, filterItemsExceptionSubclass, filterItemsNonError, filterItemsNonException, findSCCs, flow, flow, flow, flowBooleanConditions, flowToBooleanFlow, hasTrueFalseBranches, initGraph, itemsToMap, itemToMap, lang, leave, leaveCall, safeConfluence, safeConfluencebegin, catchErrors, enter, enterCall, enterError, errorQueue, hasErrors, job, leaveCall, leaveCall, nodeFactory, typeSystembypass, bypass, bypassChildren, override, visitChildrenprotected final DefUseAnalysisUtil autil
protected final java.util.Set<EdgeIdentifier> aUnitUses
protected final java.util.Set<AbstractLocation> aUnitObs
protected final java.util.Set<AbstractLocation> aUnitDefs
protected final boolean heap_assign_is_use
protected final java.lang.String data_dep_results_key
protected java.util.Map<DataFlowNodeIdentifier,java.lang.Integer> nodePostordering
public DefUseDataFlow(DefUseAnalysisUtil autil, WorkQueue<VarContext<DefUseAbsVal>> workQueue, polyglot.frontend.Job job, polyglot.types.TypeSystem ts, polyglot.ast.NodeFactory nf)
public static <T> void addResults(java.lang.String resultKey,
AccrueExt rec,
AnalysisContext ctx,
java.util.Set<T> results)
resultKey - The key of the analysis result to record.rec - The extension object to record these results on.ctx - The AnalysisContext to associate these results with.results - protected int postorderNodeIDs(polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> p, int count, java.util.Set<NodeIdentifier> visited)
protected void check(polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> p) throws polyglot.types.SemanticException
check in class polyglot.visit.DataFlow<VarContext<DefUseAbsVal>>polyglot.types.SemanticExceptionprotected java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> flowImpl(VarContext<DefUseAbsVal> trueItem, VarContext<DefUseAbsVal> falseItem, VarContext<DefUseAbsVal> otherItem, polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
flowImpl in class VarContextDataFlow<DefUseAbsVal>protected void check(polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph, polyglot.ast.Term n, boolean entry, VarContext<DefUseAbsVal> inItem, java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> outItems) throws polyglot.types.SemanticException
check in class polyglot.visit.DataFlow<VarContext<DefUseAbsVal>>polyglot.types.SemanticExceptionpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> flowCodeDecl(polyglot.ast.CodeDecl n, VarContext<DefUseAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
VarContextDataFlownflowCodeDecl in class VarContextDataFlow<DefUseAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> flowLocalDecl(polyglot.ast.LocalDecl n, VarContext<DefUseAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
DataFlowDispatchnflowLocalDecl in interface DataFlowDispatch<VarContext<DefUseAbsVal>>flowLocalDecl in class VarContextDataFlow<DefUseAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> flowFormal(polyglot.ast.Formal n, VarContext<DefUseAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
DataFlowDispatchnflowFormal in interface DataFlowDispatch<VarContext<DefUseAbsVal>>flowFormal in class VarContextDataFlow<DefUseAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> flowLocal(polyglot.ast.Local n, VarContext<DefUseAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
DataFlowDispatchnflowLocal in interface DataFlowDispatch<VarContext<DefUseAbsVal>>flowLocal in class VarContextDataFlow<DefUseAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> flowLocalAssign(polyglot.ast.LocalAssign n, VarContext<DefUseAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
DataFlowDispatchnflowLocalAssign in interface DataFlowDispatch<VarContext<DefUseAbsVal>>flowLocalAssign in class VarContextDataFlow<DefUseAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> flowField(polyglot.ast.Field n, VarContext<DefUseAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
DataFlowDispatchnflowField in interface DataFlowDispatch<VarContext<DefUseAbsVal>>flowField in class VarContextDataFlow<DefUseAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> flowFieldDecl(polyglot.ast.FieldDecl n, VarContext<DefUseAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
DataFlowDispatchnflowFieldDecl in interface DataFlowDispatch<VarContext<DefUseAbsVal>>flowFieldDecl in class VarContextDataFlow<DefUseAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> flowFieldAssign(polyglot.ast.FieldAssign n, VarContext<DefUseAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
DataFlowDispatchnflowFieldAssign in interface DataFlowDispatch<VarContext<DefUseAbsVal>>flowFieldAssign in class VarContextDataFlow<DefUseAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> flowArrayAccess(polyglot.ast.ArrayAccess n, VarContext<DefUseAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
DataFlowDispatchnflowArrayAccess in interface DataFlowDispatch<VarContext<DefUseAbsVal>>flowArrayAccess in class VarContextDataFlow<DefUseAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurrence of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> flowArrayAccessAssign(polyglot.ast.ArrayAccessAssign n, VarContext<DefUseAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
DataFlowDispatchnflowArrayAccessAssign in interface DataFlowDispatch<VarContext<DefUseAbsVal>>flowArrayAccessAssign in class VarContextDataFlow<DefUseAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> flowArrayInit(polyglot.ast.ArrayInit n, VarContext<DefUseAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
DataFlowDispatchnflowArrayInit in interface DataFlowDispatch<VarContext<DefUseAbsVal>>flowArrayInit in class VarContextDataFlow<DefUseAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> flowNewArray(polyglot.ast.NewArray n, VarContext<DefUseAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
DataFlowDispatchnflowNewArray in interface DataFlowDispatch<VarContext<DefUseAbsVal>>flowNewArray in class VarContextDataFlow<DefUseAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> flowCall(polyglot.ast.Call n, VarContext<DefUseAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
DataFlowDispatchnflowCall in interface DataFlowDispatch<VarContext<DefUseAbsVal>>flowCall in class VarContextDataFlow<DefUseAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> flowNew(polyglot.ast.New n, VarContext<DefUseAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
DataFlowDispatchnflowNew in interface DataFlowDispatch<VarContext<DefUseAbsVal>>flowNew in class VarContextDataFlow<DefUseAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> flowConstructorCall(polyglot.ast.ConstructorCall n, VarContext<DefUseAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
DataFlowDispatchnflowConstructorCall in interface DataFlowDispatch<VarContext<DefUseAbsVal>>flowConstructorCall in class VarContextDataFlow<DefUseAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> flowThrow(polyglot.ast.Throw n, VarContext<DefUseAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
DataFlowDispatchnflowThrow in interface DataFlowDispatch<VarContext<DefUseAbsVal>>flowThrow in class VarContextDataFlow<DefUseAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> flowReturn(polyglot.ast.Return n, VarContext<DefUseAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
DataFlowDispatchnflowReturn in interface DataFlowDispatch<VarContext<DefUseAbsVal>>flowReturn in class VarContextDataFlow<DefUseAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> flowExpr(polyglot.ast.Expr n, VarContext<DefUseAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
DataFlowDispatchnflowExpr in interface DataFlowDispatch<VarContext<DefUseAbsVal>>flowExpr in class VarContextDataFlow<DefUseAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> flowCast(polyglot.ast.Cast n, VarContext<DefUseAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
DataFlowDispatchnflowCast in interface DataFlowDispatch<VarContext<DefUseAbsVal>>flowCast in class VarContextDataFlow<DefUseAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> flowBinary(polyglot.ast.Binary n, VarContext<DefUseAbsVal> dfIn, VarContext<DefUseAbsVal> trueItem, VarContext<DefUseAbsVal> falseItem, polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
DataFlowDispatchnflowBinary in interface DataFlowDispatch<VarContext<DefUseAbsVal>>flowBinary in class VarContextDataFlow<DefUseAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> flowSpecial(polyglot.ast.Special n, VarContext<DefUseAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
DataFlowDispatchnflowSpecial in interface DataFlowDispatch<VarContext<DefUseAbsVal>>flowSpecial in class VarContextDataFlow<DefUseAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> flowLit(polyglot.ast.Lit n, VarContext<DefUseAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
DataFlowDispatchnflowLit in interface DataFlowDispatch<VarContext<DefUseAbsVal>>flowLit in class VarContextDataFlow<DefUseAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> flowInstanceof(polyglot.ast.Instanceof n, VarContext<DefUseAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
DataFlowDispatchnflowInstanceof in interface DataFlowDispatch<VarContext<DefUseAbsVal>>flowInstanceof in class VarContextDataFlow<DefUseAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> flowUnary(polyglot.ast.Unary n, VarContext<DefUseAbsVal> dfIn, VarContext<DefUseAbsVal> trueItem, VarContext<DefUseAbsVal> falseItem, polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
DataFlowDispatchnflowUnary in interface DataFlowDispatch<VarContext<DefUseAbsVal>>flowUnary in class VarContextDataFlow<DefUseAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> flowStmt(polyglot.ast.Stmt n, VarContext<DefUseAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
VarContextDataFlownflowStmt in class VarContextDataFlow<DefUseAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> flowFinally(polyglot.ast.Block n, VarContext<DefUseAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
DataFlowDispatchnflowFinally in interface DataFlowDispatch<VarContext<DefUseAbsVal>>flowFinally in class VarContextDataFlow<DefUseAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> flowTypeNode(polyglot.ast.TypeNode n, VarContext<DefUseAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
DataFlowDispatchnflowTypeNode in interface DataFlowDispatch<VarContext<DefUseAbsVal>>flowTypeNode in class VarContextDataFlow<DefUseAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> flowTry(polyglot.ast.Try n, VarContext<DefUseAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
DataFlowDispatchnflowTry in interface DataFlowDispatch<VarContext<DefUseAbsVal>>flowTry in class VarContextDataFlow<DefUseAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> flowCatch(polyglot.ast.Catch n, VarContext<DefUseAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
DataFlowDispatchnflowCatch in interface DataFlowDispatch<VarContext<DefUseAbsVal>>flowCatch in class VarContextDataFlow<DefUseAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphpublic java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> flowIf(polyglot.ast.If n, VarContext<DefUseAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<DefUseAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
DataFlowDispatchnflowIf in interface DataFlowDispatch<VarContext<DefUseAbsVal>>flowIf in class VarContextDataFlow<DefUseAbsVal>n - AST node to compute the dataflow fordfIn - input dataflow itemgraph - dataflow graphpeer - occurance of the dataflow node in the flowgraphprotected FinalVarContext<DefUseAbsVal> flowUncheckedException(VarContext<DefUseAbsVal> dfIn, polyglot.types.ClassType exType, polyglot.ast.Node cause, polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
protected FinalVarContext<DefUseAbsVal> flowImpossibleException(VarContext<DefUseAbsVal> dfIn, polyglot.types.ClassType exType, polyglot.ast.Node cause, polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
protected FinalVarContext<DefUseAbsVal> flowImpossibleException(FinalVarContext<DefUseAbsVal> res, polyglot.types.ClassType exType, polyglot.ast.Node cause)
protected FinalVarContext<DefUseAbsVal> flowNullPointerException(VarContext<DefUseAbsVal> dfIn, polyglot.ast.Node cause, DefUseAbsVal causeDFI, polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
protected FinalVarContext<DefUseAbsVal> flowArithmeticException(VarContext<DefUseAbsVal> dfIn, polyglot.ast.Binary cause, polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
protected FinalVarContext<DefUseAbsVal> flowOutOfBoundsException(VarContext<DefUseAbsVal> dfIn, polyglot.ast.Expr cause, polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
protected FinalVarContext<DefUseAbsVal> flowClassCastException(VarContext<DefUseAbsVal> dfIn, polyglot.ast.Cast cause, DefUseAbsVal causeDFI, polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
protected DefUseAbsVal upperBound(java.util.Collection<DefUseAbsVal> l)
protected DefUseAbsVal createLocalDefinition(java.lang.String defined, polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
protected DefUseAbsVal createHeapDefinition(java.util.Set<AbstractLocation> locs, polyglot.visit.FlowGraph.Peer<VarContext<DefUseAbsVal>> peer)
protected static java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<DefUseAbsVal>> itemToMapWithExceptionResults(VarContext<DefUseAbsVal> dfIn, java.util.Set<polyglot.visit.FlowGraph.EdgeKey> edgeKeys)