public class NonFatalPostDominatorDataFlow extends PostDominatorDataFlow
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
autil, postdoms
Constructor and Description |
---|
NonFatalPostDominatorDataFlow(polyglot.frontend.Job job,
polyglot.types.TypeSystem ts,
polyglot.ast.NodeFactory nf,
DominationAnalysisUtil autil) |
Modifier and Type | Method and Description |
---|---|
protected void |
check(polyglot.visit.FlowGraph<accrue.analysis.domination.ImmediatePostDominator> graph,
polyglot.visit.FlowGraph.Peer<accrue.analysis.domination.ImmediatePostDominator> p) |
protected java.util.Map<polyglot.visit.FlowGraph.EdgeKey,accrue.analysis.domination.ImmediatePostDominator> |
flow(java.util.List<accrue.analysis.domination.ImmediatePostDominator> inItems,
java.util.List<polyglot.visit.FlowGraph.EdgeKey> inItemKeys,
polyglot.visit.FlowGraph<accrue.analysis.domination.ImmediatePostDominator> graph,
polyglot.visit.FlowGraph.Peer<accrue.analysis.domination.ImmediatePostDominator> peer) |
protected java.util.List<polyglot.visit.FlowGraph.Edge<accrue.analysis.domination.ImmediatePostDominator>> |
nonFatalPeers(polyglot.visit.FlowGraph.Peer<accrue.analysis.domination.ImmediatePostDominator> peer) |
check, confluence, createInitialItem, dataflow, intersect, intersect, ipd, performDataflow, record
autil, createCFGBuilder, currentContext, dataFlowNodeIdentifierForPeer, dataFlowNodeIdentifierForPeer, initGraph, peerForDataFlowNodeIdentifier
confluence, constructItemsFromCondition, createFrame, createInitialItem, currentFlowGraph, dataflow, dataflow, dumpFlowGraph, enterCall, filterItems, filterItemsExceptionSubclass, filterItemsNonError, filterItemsNonException, findSCCs, flow, flow, flow, flow, flowBooleanConditions, flowToBooleanFlow, hasTrueFalseBranches, initGraph, itemsToMap, itemToMap, lang, leave, leaveCall, post, safeConfluence, safeConfluence, safeConfluence
begin, catchErrors, enter, enterCall, enterError, errorQueue, hasErrors, job, leaveCall, leaveCall, nodeFactory, typeSystem
bypass, bypass, bypassChildren, override, visitChildren
public NonFatalPostDominatorDataFlow(polyglot.frontend.Job job, polyglot.types.TypeSystem ts, polyglot.ast.NodeFactory nf, DominationAnalysisUtil autil)
protected java.util.Map<polyglot.visit.FlowGraph.EdgeKey,accrue.analysis.domination.ImmediatePostDominator> flow(java.util.List<accrue.analysis.domination.ImmediatePostDominator> inItems, java.util.List<polyglot.visit.FlowGraph.EdgeKey> inItemKeys, polyglot.visit.FlowGraph<accrue.analysis.domination.ImmediatePostDominator> graph, polyglot.visit.FlowGraph.Peer<accrue.analysis.domination.ImmediatePostDominator> peer)
flow
in class PostDominatorDataFlow
protected void check(polyglot.visit.FlowGraph<accrue.analysis.domination.ImmediatePostDominator> graph, polyglot.visit.FlowGraph.Peer<accrue.analysis.domination.ImmediatePostDominator> p) throws polyglot.types.SemanticException
check
in class PostDominatorDataFlow
polyglot.types.SemanticException
protected java.util.List<polyglot.visit.FlowGraph.Edge<accrue.analysis.domination.ImmediatePostDominator>> nonFatalPeers(polyglot.visit.FlowGraph.Peer<accrue.analysis.domination.ImmediatePostDominator> peer)