public class AccrueExt_c extends polyglot.ast.Ext_c implements AccrueExt
Constructor and Description |
---|
AccrueExt_c() |
Modifier and Type | Method and Description |
---|---|
java.lang.Integer |
enclosingFinallyDepth()
How many enclosing finally blocks is this node nested inside? This information
is used during dataflow analysis to help manage syspended execution contexts.
|
static AccrueExt |
ext(polyglot.ast.Node n) |
<T> T |
getAnalysisResult(java.lang.Object analysisKey) |
<T> T |
getAnalysisResult(java.lang.Object analysisKey,
AnalysisContext context) |
<T> T |
getAnalysisResult(java.lang.Object analysisKey,
AnalysisContext context,
polyglot.visit.FlowGraph.PeerKey peerKey) |
polyglot.ast.JLang |
lang() |
int |
numArgumentsOnResultStack()
During a dataflow analysis, when this term is encountered, how many
arguments should there be on the expression result stack? For example,
for an addition (e1 + e2) there will be two, one for each operand.
|
<T> void |
recordAnalysisResult(java.lang.Object analysisKey,
AnalysisContext context,
polyglot.visit.FlowGraph.PeerKey peerKey,
T result) |
<T> void |
recordAnalysisResult(java.lang.Object analysisKey,
AnalysisContext context,
T result) |
<T> void |
recordAnalysisResult(java.lang.Object analysisKey,
T result) |
void |
registerPointerStmts(StmtRegistrar registrar,
RegisterPointerStmtsVisitor v) |
<T> T |
removeAnalysisResult(java.lang.Object analysisKey) |
<T> T |
removeAnalysisResult(java.lang.Object analysisKey,
AnalysisContext context) |
<T> T |
removeAnalysisResult(java.lang.Object analysisKey,
AnalysisContext context,
polyglot.visit.FlowGraph.PeerKey peerKey) |
void |
setEnclosingFinallyDepth(int finallyDepth)
Set the number of finally blocks that this node is nested inside.
|
addDecls, buildTypes, buildTypesEnter, checkConstants, childExpectedType, copy, copy, copy, disambiguate, disambiguateEnter, disambiguateOverride, dump, dump, dump, dump, dump, enterChildScope, enterScope, exceptionCheck, exceptionCheckEnter, ext, ext, extRewrite, extRewriteEnter, init, initPred, node, pred, prettyPrint, prettyPrint, prettyPrint, prettyPrint, prettyPrint, print, printBlock, printSubStmt, superLang, throwTypes, toString, translate, typeCheck, typeCheckEnter, typeCheckOverride, visitChild, visitChildren, visitList
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
addDecls, buildTypes, buildTypesEnter, checkConstants, childExpectedType, copy, copy, disambiguate, disambiguateEnter, disambiguateOverride, dump, dump, dump, dump, enterChildScope, enterScope, exceptionCheck, exceptionCheckEnter, extRewrite, extRewriteEnter, prettyPrint, prettyPrint, prettyPrint, prettyPrint, prettyPrint, throwTypes, translate, typeCheck, typeCheckEnter, typeCheckOverride, visitChild, visitChildren, visitList
public static AccrueExt ext(polyglot.ast.Node n)
public final polyglot.ast.JLang lang()
lang
in interface polyglot.ast.NodeOps
lang
in class polyglot.ast.Ext_c
public void registerPointerStmts(StmtRegistrar registrar, RegisterPointerStmtsVisitor v)
registerPointerStmts
in interface AccrueExt
public int numArgumentsOnResultStack()
AccrueExt
numArgumentsOnResultStack
in interface AccrueExt
VarContextDataFlow
public <T> void recordAnalysisResult(java.lang.Object analysisKey, AnalysisContext context, polyglot.visit.FlowGraph.PeerKey peerKey, T result)
recordAnalysisResult
in interface AccrueExt
public <T> void recordAnalysisResult(java.lang.Object analysisKey, AnalysisContext context, T result)
recordAnalysisResult
in interface AccrueExt
public <T> void recordAnalysisResult(java.lang.Object analysisKey, T result)
recordAnalysisResult
in interface AccrueExt
public <T> T removeAnalysisResult(java.lang.Object analysisKey, AnalysisContext context, polyglot.visit.FlowGraph.PeerKey peerKey)
removeAnalysisResult
in interface AccrueExt
public <T> T removeAnalysisResult(java.lang.Object analysisKey, AnalysisContext context)
removeAnalysisResult
in interface AccrueExt
public <T> T removeAnalysisResult(java.lang.Object analysisKey)
removeAnalysisResult
in interface AccrueExt
public <T> T getAnalysisResult(java.lang.Object analysisKey, AnalysisContext context, polyglot.visit.FlowGraph.PeerKey peerKey)
getAnalysisResult
in interface AccrueExt
public <T> T getAnalysisResult(java.lang.Object analysisKey, AnalysisContext context)
getAnalysisResult
in interface AccrueExt
public <T> T getAnalysisResult(java.lang.Object analysisKey)
getAnalysisResult
in interface AccrueExt
public java.lang.Integer enclosingFinallyDepth()
AccrueExt
void m() { ; // finally depth here is 0 try { ; // finally depth here is 0 } finally { ; // finally depth here is 1 try { ; // finally depth here is 1 } catch (Exception e) { ; // finally depth here is 1 ... } finally { ; // finally depth here is 2 } ; // finally depth here is 1 } ; // finally depth here is 0 }Note that for a finally block node, the number of enclosing finally blocks does not include itself.
enclosingFinallyDepth
in interface AccrueExt
public void setEnclosingFinallyDepth(int finallyDepth)
AccrueExt
setEnclosingFinallyDepth
in interface AccrueExt