Class ASMSetupVisitor
- java.lang.Object
-
- org.glassfish.pfl.dynamic.codegen.impl.TreeWalker
-
- org.glassfish.pfl.dynamic.codegen.impl.ASMSetupVisitor
-
- All Implemented Interfaces:
Visitor
public class ASMSetupVisitor extends TreeWalker
Visitor that can prepare an AST for bytecode generation, or verify that an AST has been correctly prepared.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
ASMSetupVisitor.ErrorReport
Class used to represnt an AST verification errorstatic class
ASMSetupVisitor.Mode
(package private) static class
ASMSetupVisitor.SlotAllocator
private static class
ASMSetupVisitor.VariableContext
Defines the context in which a variable occurs.
-
Field Summary
Fields Modifier and Type Field Description private java.util.List<ASMSetupVisitor.ErrorReport>
errors
private ASMSetupVisitor.Mode
mode
private ASMSetupVisitor.SlotAllocator
slotAllocator
private ASMSetupVisitor.VariableContext
variableDefiningContext
-
Fields inherited from class org.glassfish.pfl.dynamic.codegen.impl.TreeWalker
context
-
-
Constructor Summary
Constructors Constructor Description ASMSetupVisitor(TreeWalkerContext context)
ASMSetupVisitor(TreeWalkerContext context, ASMSetupVisitor.Mode mode)
-
Method Summary
-
Methods inherited from class org.glassfish.pfl.dynamic.codegen.impl.TreeWalker
arrayIndexExpressionBeforeExpr, assignmentStatementBeforeLeftSide, caseBranchBeforeBodyStatement, ifExpressionBeforeFalsePart, ifExpressionBeforeTruePart, ifStatementBeforeFalsePart, ifStatementBeforeTruePart, newArrExpressionAfterExpression, newArrExpressionAfterSize, newArrExpressionBeforeExpression, newObjExpressionBeforeArg, nonStaticCallExpressionBeforeArg, postArrayIndexExpression, postArrayLengthExpression, postAssignmentStatement, postBreakStatement, postCaseBranch, postCastExpression, postConstantExpression, postDefinitionStatement, postExpression, postFieldGenerator, postIfExpression, postIfStatement, postInstofExpression, postNewArrExpression, postNewObjExpression, postNode, postNonStaticCallExpression, postNonStaticFieldAccessExpression, postReturnStatement, postStatement, postStaticCallExpression, postStaticFieldAccessExpression, postSuperCallExpression, postSuperObjExpression, postSwitchStatement, postThisExpression, postThisObjExpression, postThrowStatement, postUnaryOperatorExpression, postVariable, postVoidExpression, postWhileStatement, preArrayLengthExpression, preBreakStatement, preCaseBranch, preCastExpression, preConstantExpression, preExpression, preFieldGenerator, preIfExpression, preIfStatement, preInstofExpression, preNewArrExpression, preNewObjExpression, preNode, preNonStaticCallExpression, preReturnStatement, preStatement, preStaticCallExpression, preSuperCallExpression, preSuperObjExpression, preSwitchStatement, preThisExpression, preThisObjExpression, preThrowStatement, preUnaryOperatorExpression, preVoidExpression, preWhileStatement, staticCallExpressionBeforeArg, superCallExpressionBeforeArg, superObjExpressionBeforeArg, switchStatementBeforeCaseBranches, switchStatementBeforeDefault, thisObjExpressionBeforeArg, visitArrayIndexExpression, visitArrayLengthExpression, visitAssignmentStatement, visitBinaryOperatorExpression, visitBlockStatement, visitBreakStatement, visitCaseBranch, visitCastExpression, visitClassGenerator, visitConstantExpression, visitDefinitionStatement, visitExpression, visitFieldGenerator, visitIfExpression, visitIfStatement, visitInstofExpression, visitMethodGenerator, visitNewArrExpression, visitNewObjExpression, visitNode, visitNonStaticCallExpression, visitNonStaticFieldAccessExpression, visitReturnStatement, visitStatement, visitStaticCallExpression, visitStaticFieldAccessExpression, visitSuperCallExpression, visitSuperObjExpression, visitSwitchStatement, visitThisExpression, visitThisObjExpression, visitThrowStatement, visitTryStatement, visitUnaryOperatorExpression, visitVariable, visitVoidExpression, visitWhileStatement, whileStatementBeforeBody
-
-
-
-
Field Detail
-
variableDefiningContext
private ASMSetupVisitor.VariableContext variableDefiningContext
-
mode
private ASMSetupVisitor.Mode mode
-
slotAllocator
private ASMSetupVisitor.SlotAllocator slotAllocator
-
errors
private java.util.List<ASMSetupVisitor.ErrorReport> errors
-
-
Constructor Detail
-
ASMSetupVisitor
public ASMSetupVisitor(TreeWalkerContext context)
-
ASMSetupVisitor
public ASMSetupVisitor(TreeWalkerContext context, ASMSetupVisitor.Mode mode)
-
-
Method Detail
-
getVerificationErrors
public java.util.List<ASMSetupVisitor.ErrorReport> getVerificationErrors()
-
verificationError
private void verificationError(Node node, java.lang.String msg)
-
preparing
private boolean preparing()
-
preClassGenerator
public boolean preClassGenerator(ClassGeneratorImpl arg)
- Overrides:
preClassGenerator
in classTreeWalker
-
preMethodGenerator
public boolean preMethodGenerator(MethodGenerator arg)
- Overrides:
preMethodGenerator
in classTreeWalker
-
methodGeneratorBeforeArguments
public boolean methodGeneratorBeforeArguments(MethodGenerator arg)
- Overrides:
methodGeneratorBeforeArguments
in classTreeWalker
-
methodGeneratorAfterArguments
public void methodGeneratorAfterArguments(MethodGenerator arg)
- Overrides:
methodGeneratorAfterArguments
in classTreeWalker
-
postMethodGenerator
public void postMethodGenerator(MethodGenerator arg)
- Overrides:
postMethodGenerator
in classTreeWalker
-
classGeneratorBeforeFields
public boolean classGeneratorBeforeFields(ClassGeneratorImpl arg)
- Overrides:
classGeneratorBeforeFields
in classTreeWalker
-
classGeneratorBeforeInitializer
public void classGeneratorBeforeInitializer(ClassGeneratorImpl arg)
- Overrides:
classGeneratorBeforeInitializer
in classTreeWalker
-
classGeneratorBeforeMethod
public void classGeneratorBeforeMethod(ClassGeneratorImpl arg)
- Overrides:
classGeneratorBeforeMethod
in classTreeWalker
-
classGeneratorBeforeConstructor
public void classGeneratorBeforeConstructor(ClassGeneratorImpl arg)
- Overrides:
classGeneratorBeforeConstructor
in classTreeWalker
-
postClassGenerator
public void postClassGenerator(ClassGeneratorImpl arg)
- Overrides:
postClassGenerator
in classTreeWalker
-
preBlockStatement
public boolean preBlockStatement(BlockStatement arg)
- Overrides:
preBlockStatement
in classTreeWalker
-
blockStatementBeforeBodyStatement
public void blockStatementBeforeBodyStatement(BlockStatement arg, Statement stmt)
- Overrides:
blockStatementBeforeBodyStatement
in classTreeWalker
-
postBlockStatement
public void postBlockStatement(BlockStatement arg)
- Overrides:
postBlockStatement
in classTreeWalker
-
preDefinitionStatement
public boolean preDefinitionStatement(DefinitionStatement arg)
- Overrides:
preDefinitionStatement
in classTreeWalker
-
definitionStatementBeforeExpr
public boolean definitionStatementBeforeExpr(DefinitionStatement arg)
- Overrides:
definitionStatementBeforeExpr
in classTreeWalker
-
preTryStatement
public boolean preTryStatement(TryStatement arg)
- Overrides:
preTryStatement
in classTreeWalker
-
tryStatementBeforeBlock
public void tryStatementBeforeBlock(TryStatement arg, Type type, Variable var, BlockStatement block)
- Overrides:
tryStatementBeforeBlock
in classTreeWalker
-
tryStatementBeforeFinalPart
public boolean tryStatementBeforeFinalPart(TryStatement arg)
- Overrides:
tryStatementBeforeFinalPart
in classTreeWalker
-
postTryStatement
public void postTryStatement(TryStatement arg)
- Overrides:
postTryStatement
in classTreeWalker
-
preAssignmentStatement
public boolean preAssignmentStatement(AssignmentStatement arg)
- Overrides:
preAssignmentStatement
in classTreeWalker
-
preNonStaticFieldAccessExpression
public boolean preNonStaticFieldAccessExpression(ExpressionFactory.NonStaticFieldAccessExpression arg)
- Overrides:
preNonStaticFieldAccessExpression
in classTreeWalker
-
preStaticFieldAccessExpression
public boolean preStaticFieldAccessExpression(ExpressionFactory.StaticFieldAccessExpression arg)
- Overrides:
preStaticFieldAccessExpression
in classTreeWalker
-
preArrayIndexExpression
public boolean preArrayIndexExpression(ExpressionFactory.ArrayIndexExpression arg)
- Overrides:
preArrayIndexExpression
in classTreeWalker
-
initializeEmitter
private void initializeEmitter(ExpressionFactory.NonStaticFieldAccessExpression arg)
-
initializeEmitter
private void initializeEmitter(ExpressionFactory.StaticFieldAccessExpression arg)
-
initializeEmitter
private void initializeEmitter(ExpressionFactory.ArrayIndexExpression arg)
-
compareEmitter
private void compareEmitter(java.lang.String nodeType, Node arg, EmitterFactory.Emitter expected, EmitterFactory.Emitter actual)
-
handleEmitter
private void handleEmitter(Node arg, EmitterFactory.Emitter em)
-
initializeVariableEmitter
private void initializeVariableEmitter(Variable param)
-
defineLocalVariable
private void defineLocalVariable(Variable arg)
-
allocateLocalVariable
private void allocateLocalVariable(Variable param)
-
finishVariableDefinition
private void finishVariableDefinition(Variable param)
-
preVariable
public boolean preVariable(Variable arg)
- Overrides:
preVariable
in classTreeWalker
-
preBinaryOperatorExpression
public boolean preBinaryOperatorExpression(ExpressionFactory.BinaryOperatorExpression arg)
- Overrides:
preBinaryOperatorExpression
in classTreeWalker
-
binaryOperatorExpressionBeforeRight
public void binaryOperatorExpressionBeforeRight(ExpressionFactory.BinaryOperatorExpression arg)
- Overrides:
binaryOperatorExpressionBeforeRight
in classTreeWalker
-
postBinaryOperatorExpression
public void postBinaryOperatorExpression(ExpressionFactory.BinaryOperatorExpression arg)
- Overrides:
postBinaryOperatorExpression
in classTreeWalker
-
-