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, visitListclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitaddDecls, 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, visitListpublic static AccrueExt ext(polyglot.ast.Node n)
public final polyglot.ast.JLang lang()
lang in interface polyglot.ast.NodeOpslang in class polyglot.ast.Ext_cpublic void registerPointerStmts(StmtRegistrar registrar, RegisterPointerStmtsVisitor v)
registerPointerStmts in interface AccrueExtpublic int numArgumentsOnResultStack()
AccrueExtnumArgumentsOnResultStack in interface AccrueExtVarContextDataFlowpublic <T> void recordAnalysisResult(java.lang.Object analysisKey,
AnalysisContext context,
polyglot.visit.FlowGraph.PeerKey peerKey,
T result)
recordAnalysisResult in interface AccrueExtpublic <T> void recordAnalysisResult(java.lang.Object analysisKey,
AnalysisContext context,
T result)
recordAnalysisResult in interface AccrueExtpublic <T> void recordAnalysisResult(java.lang.Object analysisKey,
T result)
recordAnalysisResult in interface AccrueExtpublic <T> T removeAnalysisResult(java.lang.Object analysisKey,
AnalysisContext context,
polyglot.visit.FlowGraph.PeerKey peerKey)
removeAnalysisResult in interface AccrueExtpublic <T> T removeAnalysisResult(java.lang.Object analysisKey,
AnalysisContext context)
removeAnalysisResult in interface AccrueExtpublic <T> T removeAnalysisResult(java.lang.Object analysisKey)
removeAnalysisResult in interface AccrueExtpublic <T> T getAnalysisResult(java.lang.Object analysisKey,
AnalysisContext context,
polyglot.visit.FlowGraph.PeerKey peerKey)
getAnalysisResult in interface AccrueExtpublic <T> T getAnalysisResult(java.lang.Object analysisKey,
AnalysisContext context)
getAnalysisResult in interface AccrueExtpublic <T> T getAnalysisResult(java.lang.Object analysisKey)
getAnalysisResult in interface AccrueExtpublic 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 AccrueExtpublic void setEnclosingFinallyDepth(int finallyDepth)
AccrueExtsetEnclosingFinallyDepth in interface AccrueExt