public class AntiDepDataFlow extends VarContextDataFlow<AntiDepAbsVal>
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 AntiDepAnalysisUtil |
autil |
protected java.util.Map<DataFlowNodeIdentifier,java.lang.Integer> |
nodePostordering |
DONT_TRACK_BOTTOM, output, WARN_ON_MISSING_EDGES, workQueue
Constructor and Description |
---|
AntiDepDataFlow(AntiDepAnalysisUtil autil,
WorkQueue<VarContext<AntiDepAbsVal>> 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<AntiDepAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> p) |
protected void |
check(polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph,
polyglot.ast.Term n,
boolean entry,
VarContext<AntiDepAbsVal> inItem,
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<AntiDepAbsVal>> outItems) |
protected AntiDepAbsVal |
createHeapUse(java.util.Set<AbstractLocation> locs,
polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer) |
protected AntiDepAbsVal |
createLocalUse(java.lang.String defined,
polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer) |
protected FinalVarContext<AntiDepAbsVal> |
flowArithmeticException(VarContext<AntiDepAbsVal> dfIn,
polyglot.ast.Binary cause,
polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer) |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<AntiDepAbsVal>> |
flowArrayAccess(polyglot.ast.ArrayAccess n,
VarContext<AntiDepAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<AntiDepAbsVal>> |
flowArrayAccessAssign(polyglot.ast.ArrayAccessAssign n,
VarContext<AntiDepAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<AntiDepAbsVal>> |
flowArrayInit(polyglot.ast.ArrayInit n,
VarContext<AntiDepAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<AntiDepAbsVal>> |
flowBinary(polyglot.ast.Binary n,
VarContext<AntiDepAbsVal> dfIn,
VarContext<AntiDepAbsVal> trueItem,
VarContext<AntiDepAbsVal> falseItem,
polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<AntiDepAbsVal>> |
flowCall(polyglot.ast.Call n,
VarContext<AntiDepAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<AntiDepAbsVal>> |
flowCast(polyglot.ast.Cast n,
VarContext<AntiDepAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<AntiDepAbsVal>> |
flowCatch(polyglot.ast.Catch n,
VarContext<AntiDepAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
Compute the dataflow for
n |
protected FinalVarContext<AntiDepAbsVal> |
flowClassCastException(VarContext<AntiDepAbsVal> dfIn,
polyglot.ast.Cast cause,
AntiDepAbsVal causeDFI,
polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer) |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<AntiDepAbsVal>> |
flowCodeDecl(polyglot.ast.CodeDecl n,
VarContext<AntiDepAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<AntiDepAbsVal>> |
flowConstructorCall(polyglot.ast.ConstructorCall n,
VarContext<AntiDepAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<AntiDepAbsVal>> |
flowExpr(polyglot.ast.Expr n,
VarContext<AntiDepAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<AntiDepAbsVal>> |
flowField(polyglot.ast.Field n,
VarContext<AntiDepAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<AntiDepAbsVal>> |
flowFieldAssign(polyglot.ast.FieldAssign n,
VarContext<AntiDepAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<AntiDepAbsVal>> |
flowFieldDecl(polyglot.ast.FieldDecl n,
VarContext<AntiDepAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<AntiDepAbsVal>> |
flowFormal(polyglot.ast.Formal n,
VarContext<AntiDepAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<AntiDepAbsVal>> |
flowIf(polyglot.ast.If n,
VarContext<AntiDepAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
Compute the dataflow for
n |
protected java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<AntiDepAbsVal>> |
flowImpl(VarContext<AntiDepAbsVal> trueItem,
VarContext<AntiDepAbsVal> falseItem,
VarContext<AntiDepAbsVal> otherItem,
polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer) |
protected FinalVarContext<AntiDepAbsVal> |
flowImpossibleException(FinalVarContext<AntiDepAbsVal> res,
polyglot.types.ClassType exType,
polyglot.ast.Node cause) |
protected FinalVarContext<AntiDepAbsVal> |
flowImpossibleException(VarContext<AntiDepAbsVal> dfIn,
polyglot.types.ClassType exType,
polyglot.ast.Node cause,
polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer) |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<AntiDepAbsVal>> |
flowInstanceof(polyglot.ast.Instanceof n,
VarContext<AntiDepAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<AntiDepAbsVal>> |
flowLit(polyglot.ast.Lit n,
VarContext<AntiDepAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<AntiDepAbsVal>> |
flowLocal(polyglot.ast.Local n,
VarContext<AntiDepAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<AntiDepAbsVal>> |
flowLocalAssign(polyglot.ast.LocalAssign n,
VarContext<AntiDepAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<AntiDepAbsVal>> |
flowLocalDecl(polyglot.ast.LocalDecl n,
VarContext<AntiDepAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<AntiDepAbsVal>> |
flowNew(polyglot.ast.New n,
VarContext<AntiDepAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<AntiDepAbsVal>> |
flowNewArray(polyglot.ast.NewArray n,
VarContext<AntiDepAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
Compute the dataflow for
n |
protected FinalVarContext<AntiDepAbsVal> |
flowNullPointerException(VarContext<AntiDepAbsVal> dfIn,
polyglot.ast.Node cause,
AntiDepAbsVal causeDFI,
polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer) |
protected FinalVarContext<AntiDepAbsVal> |
flowOutOfBoundsException(VarContext<AntiDepAbsVal> dfIn,
polyglot.ast.Expr cause,
polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer) |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<AntiDepAbsVal>> |
flowReturn(polyglot.ast.Return n,
VarContext<AntiDepAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<AntiDepAbsVal>> |
flowSpecial(polyglot.ast.Special n,
VarContext<AntiDepAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<AntiDepAbsVal>> |
flowStmt(polyglot.ast.Stmt n,
VarContext<AntiDepAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<AntiDepAbsVal>> |
flowThrow(polyglot.ast.Throw n,
VarContext<AntiDepAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<AntiDepAbsVal>> |
flowTry(polyglot.ast.Try n,
VarContext<AntiDepAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<AntiDepAbsVal>> |
flowTypeNode(polyglot.ast.TypeNode n,
VarContext<AntiDepAbsVal> dfIn,
polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
Compute the dataflow for
n |
java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<AntiDepAbsVal>> |
flowUnary(polyglot.ast.Unary n,
VarContext<AntiDepAbsVal> dfIn,
VarContext<AntiDepAbsVal> trueItem,
VarContext<AntiDepAbsVal> falseItem,
polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph,
polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
Compute the dataflow for
n |
protected FinalVarContext<AntiDepAbsVal> |
flowUncheckedException(VarContext<AntiDepAbsVal> dfIn,
polyglot.types.ClassType exType,
polyglot.ast.Node cause,
polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer) |
protected static java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<AntiDepAbsVal>> |
itemToMapWithExceptionResults(VarContext<AntiDepAbsVal> dfIn,
java.util.Set<polyglot.visit.FlowGraph.EdgeKey> edgeKeys) |
protected int |
postorderNodeIDs(polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> p,
int count,
java.util.Set<NodeIdentifier> visited) |
protected AntiDepAbsVal |
upperBound(java.util.Collection<AntiDepAbsVal> l) |
argumentsOnResultStack, autil, checkInvariants, confluence, constructMissingContextForEdgeKey, createInitialItem, dataflow, edgeKeyConvert, finalVarContextToDataFlowMap, flow, flow, flowAssert, flowAssign, flowBlock, flowBranch, flowConditional, flowConstructorDecl, flowDo, flowEmpty, flowEval, flowFinally, flowInitializer, flowLabeled, flowMethodDecl, flowSuppress, flowSynchronized, flowWhile, ignoreNode, keyConvert, post, postFieldDecl, safeConfluence, setWarnOnEdgesMissingData
createCFGBuilder, currentContext, dataFlowNodeIdentifierForPeer, dataFlowNodeIdentifierForPeer, initGraph, peerForDataFlowNodeIdentifier
confluence, 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, safeConfluence
begin, catchErrors, enter, enterCall, enterError, errorQueue, hasErrors, job, leaveCall, leaveCall, nodeFactory, typeSystem
bypass, bypass, bypassChildren, override, visitChildren
protected AntiDepAnalysisUtil autil
protected java.util.Map<DataFlowNodeIdentifier,java.lang.Integer> nodePostordering
public AntiDepDataFlow(AntiDepAnalysisUtil autil, WorkQueue<VarContext<AntiDepAbsVal>> 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<AntiDepAbsVal>> p, int count, java.util.Set<NodeIdentifier> visited)
protected void check(polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> p) throws polyglot.types.SemanticException
check
in class polyglot.visit.DataFlow<VarContext<AntiDepAbsVal>>
polyglot.types.SemanticException
protected void check(polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph, polyglot.ast.Term n, boolean entry, VarContext<AntiDepAbsVal> inItem, java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<AntiDepAbsVal>> outItems)
check
in class polyglot.visit.DataFlow<VarContext<AntiDepAbsVal>>
protected java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<AntiDepAbsVal>> flowImpl(VarContext<AntiDepAbsVal> trueItem, VarContext<AntiDepAbsVal> falseItem, VarContext<AntiDepAbsVal> otherItem, polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
flowImpl
in class VarContextDataFlow<AntiDepAbsVal>
public java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<AntiDepAbsVal>> flowCodeDecl(polyglot.ast.CodeDecl n, VarContext<AntiDepAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
VarContextDataFlow
n
flowCodeDecl
in class VarContextDataFlow<AntiDepAbsVal>
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<AntiDepAbsVal>> flowLocalDecl(polyglot.ast.LocalDecl n, VarContext<AntiDepAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
DataFlowDispatch
n
flowLocalDecl
in interface DataFlowDispatch<VarContext<AntiDepAbsVal>>
flowLocalDecl
in class VarContextDataFlow<AntiDepAbsVal>
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<AntiDepAbsVal>> flowFormal(polyglot.ast.Formal n, VarContext<AntiDepAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
DataFlowDispatch
n
flowFormal
in interface DataFlowDispatch<VarContext<AntiDepAbsVal>>
flowFormal
in class VarContextDataFlow<AntiDepAbsVal>
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<AntiDepAbsVal>> flowLocal(polyglot.ast.Local n, VarContext<AntiDepAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
DataFlowDispatch
n
flowLocal
in interface DataFlowDispatch<VarContext<AntiDepAbsVal>>
flowLocal
in class VarContextDataFlow<AntiDepAbsVal>
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<AntiDepAbsVal>> flowLocalAssign(polyglot.ast.LocalAssign n, VarContext<AntiDepAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
DataFlowDispatch
n
flowLocalAssign
in interface DataFlowDispatch<VarContext<AntiDepAbsVal>>
flowLocalAssign
in class VarContextDataFlow<AntiDepAbsVal>
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<AntiDepAbsVal>> flowField(polyglot.ast.Field n, VarContext<AntiDepAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
DataFlowDispatch
n
flowField
in interface DataFlowDispatch<VarContext<AntiDepAbsVal>>
flowField
in class VarContextDataFlow<AntiDepAbsVal>
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<AntiDepAbsVal>> flowFieldDecl(polyglot.ast.FieldDecl n, VarContext<AntiDepAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
DataFlowDispatch
n
flowFieldDecl
in interface DataFlowDispatch<VarContext<AntiDepAbsVal>>
flowFieldDecl
in class VarContextDataFlow<AntiDepAbsVal>
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<AntiDepAbsVal>> flowFieldAssign(polyglot.ast.FieldAssign n, VarContext<AntiDepAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
DataFlowDispatch
n
flowFieldAssign
in interface DataFlowDispatch<VarContext<AntiDepAbsVal>>
flowFieldAssign
in class VarContextDataFlow<AntiDepAbsVal>
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<AntiDepAbsVal>> flowArrayAccess(polyglot.ast.ArrayAccess n, VarContext<AntiDepAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
DataFlowDispatch
n
flowArrayAccess
in interface DataFlowDispatch<VarContext<AntiDepAbsVal>>
flowArrayAccess
in class VarContextDataFlow<AntiDepAbsVal>
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<AntiDepAbsVal>> flowArrayAccessAssign(polyglot.ast.ArrayAccessAssign n, VarContext<AntiDepAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
DataFlowDispatch
n
flowArrayAccessAssign
in interface DataFlowDispatch<VarContext<AntiDepAbsVal>>
flowArrayAccessAssign
in class VarContextDataFlow<AntiDepAbsVal>
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<AntiDepAbsVal>> flowArrayInit(polyglot.ast.ArrayInit n, VarContext<AntiDepAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
DataFlowDispatch
n
flowArrayInit
in interface DataFlowDispatch<VarContext<AntiDepAbsVal>>
flowArrayInit
in class VarContextDataFlow<AntiDepAbsVal>
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<AntiDepAbsVal>> flowNewArray(polyglot.ast.NewArray n, VarContext<AntiDepAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
DataFlowDispatch
n
flowNewArray
in interface DataFlowDispatch<VarContext<AntiDepAbsVal>>
flowNewArray
in class VarContextDataFlow<AntiDepAbsVal>
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<AntiDepAbsVal>> flowCall(polyglot.ast.Call n, VarContext<AntiDepAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
DataFlowDispatch
n
flowCall
in interface DataFlowDispatch<VarContext<AntiDepAbsVal>>
flowCall
in class VarContextDataFlow<AntiDepAbsVal>
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<AntiDepAbsVal>> flowNew(polyglot.ast.New n, VarContext<AntiDepAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
DataFlowDispatch
n
flowNew
in interface DataFlowDispatch<VarContext<AntiDepAbsVal>>
flowNew
in class VarContextDataFlow<AntiDepAbsVal>
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<AntiDepAbsVal>> flowConstructorCall(polyglot.ast.ConstructorCall n, VarContext<AntiDepAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
DataFlowDispatch
n
flowConstructorCall
in interface DataFlowDispatch<VarContext<AntiDepAbsVal>>
flowConstructorCall
in class VarContextDataFlow<AntiDepAbsVal>
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<AntiDepAbsVal>> flowThrow(polyglot.ast.Throw n, VarContext<AntiDepAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
DataFlowDispatch
n
flowThrow
in interface DataFlowDispatch<VarContext<AntiDepAbsVal>>
flowThrow
in class VarContextDataFlow<AntiDepAbsVal>
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<AntiDepAbsVal>> flowReturn(polyglot.ast.Return n, VarContext<AntiDepAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
DataFlowDispatch
n
flowReturn
in interface DataFlowDispatch<VarContext<AntiDepAbsVal>>
flowReturn
in class VarContextDataFlow<AntiDepAbsVal>
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<AntiDepAbsVal>> flowExpr(polyglot.ast.Expr n, VarContext<AntiDepAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
DataFlowDispatch
n
flowExpr
in interface DataFlowDispatch<VarContext<AntiDepAbsVal>>
flowExpr
in class VarContextDataFlow<AntiDepAbsVal>
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<AntiDepAbsVal>> flowCast(polyglot.ast.Cast n, VarContext<AntiDepAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
DataFlowDispatch
n
flowCast
in interface DataFlowDispatch<VarContext<AntiDepAbsVal>>
flowCast
in class VarContextDataFlow<AntiDepAbsVal>
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<AntiDepAbsVal>> flowBinary(polyglot.ast.Binary n, VarContext<AntiDepAbsVal> dfIn, VarContext<AntiDepAbsVal> trueItem, VarContext<AntiDepAbsVal> falseItem, polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
DataFlowDispatch
n
flowBinary
in interface DataFlowDispatch<VarContext<AntiDepAbsVal>>
flowBinary
in class VarContextDataFlow<AntiDepAbsVal>
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<AntiDepAbsVal>> flowSpecial(polyglot.ast.Special n, VarContext<AntiDepAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
DataFlowDispatch
n
flowSpecial
in interface DataFlowDispatch<VarContext<AntiDepAbsVal>>
flowSpecial
in class VarContextDataFlow<AntiDepAbsVal>
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<AntiDepAbsVal>> flowLit(polyglot.ast.Lit n, VarContext<AntiDepAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
DataFlowDispatch
n
flowLit
in interface DataFlowDispatch<VarContext<AntiDepAbsVal>>
flowLit
in class VarContextDataFlow<AntiDepAbsVal>
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<AntiDepAbsVal>> flowInstanceof(polyglot.ast.Instanceof n, VarContext<AntiDepAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
DataFlowDispatch
n
flowInstanceof
in interface DataFlowDispatch<VarContext<AntiDepAbsVal>>
flowInstanceof
in class VarContextDataFlow<AntiDepAbsVal>
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<AntiDepAbsVal>> flowUnary(polyglot.ast.Unary n, VarContext<AntiDepAbsVal> dfIn, VarContext<AntiDepAbsVal> trueItem, VarContext<AntiDepAbsVal> falseItem, polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
DataFlowDispatch
n
flowUnary
in interface DataFlowDispatch<VarContext<AntiDepAbsVal>>
flowUnary
in class VarContextDataFlow<AntiDepAbsVal>
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<AntiDepAbsVal>> flowStmt(polyglot.ast.Stmt n, VarContext<AntiDepAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
VarContextDataFlow
n
flowStmt
in class VarContextDataFlow<AntiDepAbsVal>
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<AntiDepAbsVal>> flowTypeNode(polyglot.ast.TypeNode n, VarContext<AntiDepAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
DataFlowDispatch
n
flowTypeNode
in interface DataFlowDispatch<VarContext<AntiDepAbsVal>>
flowTypeNode
in class VarContextDataFlow<AntiDepAbsVal>
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<AntiDepAbsVal>> flowTry(polyglot.ast.Try n, VarContext<AntiDepAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
DataFlowDispatch
n
flowTry
in interface DataFlowDispatch<VarContext<AntiDepAbsVal>>
flowTry
in class VarContextDataFlow<AntiDepAbsVal>
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<AntiDepAbsVal>> flowCatch(polyglot.ast.Catch n, VarContext<AntiDepAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
DataFlowDispatch
n
flowCatch
in interface DataFlowDispatch<VarContext<AntiDepAbsVal>>
flowCatch
in class VarContextDataFlow<AntiDepAbsVal>
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<AntiDepAbsVal>> flowIf(polyglot.ast.If n, VarContext<AntiDepAbsVal> dfIn, polyglot.visit.FlowGraph<VarContext<AntiDepAbsVal>> graph, polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
DataFlowDispatch
n
flowIf
in interface DataFlowDispatch<VarContext<AntiDepAbsVal>>
flowIf
in class VarContextDataFlow<AntiDepAbsVal>
n
- AST node to compute the dataflow fordfIn
- input dataflow itemgraph
- dataflow graphpeer
- occurance of the dataflow node in the flowgraphprotected FinalVarContext<AntiDepAbsVal> flowUncheckedException(VarContext<AntiDepAbsVal> dfIn, polyglot.types.ClassType exType, polyglot.ast.Node cause, polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
protected FinalVarContext<AntiDepAbsVal> flowImpossibleException(VarContext<AntiDepAbsVal> dfIn, polyglot.types.ClassType exType, polyglot.ast.Node cause, polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
protected FinalVarContext<AntiDepAbsVal> flowImpossibleException(FinalVarContext<AntiDepAbsVal> res, polyglot.types.ClassType exType, polyglot.ast.Node cause)
protected FinalVarContext<AntiDepAbsVal> flowNullPointerException(VarContext<AntiDepAbsVal> dfIn, polyglot.ast.Node cause, AntiDepAbsVal causeDFI, polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
protected FinalVarContext<AntiDepAbsVal> flowArithmeticException(VarContext<AntiDepAbsVal> dfIn, polyglot.ast.Binary cause, polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
protected FinalVarContext<AntiDepAbsVal> flowOutOfBoundsException(VarContext<AntiDepAbsVal> dfIn, polyglot.ast.Expr cause, polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
protected FinalVarContext<AntiDepAbsVal> flowClassCastException(VarContext<AntiDepAbsVal> dfIn, polyglot.ast.Cast cause, AntiDepAbsVal causeDFI, polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
protected AntiDepAbsVal upperBound(java.util.Collection<AntiDepAbsVal> l)
protected AntiDepAbsVal createLocalUse(java.lang.String defined, polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
protected AntiDepAbsVal createHeapUse(java.util.Set<AbstractLocation> locs, polyglot.visit.FlowGraph.Peer<VarContext<AntiDepAbsVal>> peer)
protected static java.util.Map<polyglot.visit.FlowGraph.EdgeKey,VarContext<AntiDepAbsVal>> itemToMapWithExceptionResults(VarContext<AntiDepAbsVal> dfIn, java.util.Set<polyglot.visit.FlowGraph.EdgeKey> edgeKeys)