Package org.codehaus.groovy.control
Class OptimizerVisitor
java.lang.Object
org.codehaus.groovy.ast.CodeVisitorSupport
org.codehaus.groovy.ast.ClassCodeVisitorSupport
org.codehaus.groovy.ast.ClassCodeExpressionTransformer
org.codehaus.groovy.control.OptimizerVisitor
- All Implemented Interfaces:
ExpressionTransformer,GroovyClassVisitor,GroovyCodeVisitor,ErrorCollecting
Visitor to produce several optimizations:
- to replace numbered constants with references to static fields
- remove superfluous references to GroovyObject interface
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected SourceUnitReturns the source unit currently being optimized.transform(Expression exp) Rewrites constant expressions that can be cached in synthetic fields.voidvisitClass(ClassNode node, SourceUnit source) Applies optimizer rewrites to the supplied class.voidvisitClosureExpression(ClosureExpression expression) Leaves closure bodies untouched so constant caching does not leak into closure classes.Methods inherited from class org.codehaus.groovy.ast.ClassCodeExpressionTransformer
setSourcePosition, visitAnnotation, visitAssertStatement, visitCaseStatement, visitConstructorOrMethod, visitDoWhileLoop, visitExpressionStatement, visitField, visitForLoop, visitIfElse, visitProperty, visitReturnStatement, visitSwitch, visitSynchronizedStatement, visitThrowStatement, visitWhileLoopMethods inherited from class org.codehaus.groovy.ast.ClassCodeVisitorSupport
addError, visitAnnotations, visitAnnotations, visitBlockStatement, visitBreakStatement, visitCatchStatement, visitClass, visitClassCodeContainer, visitConstructor, visitContinueStatement, visitDeclarationExpression, visitImports, visitMethod, visitObjectInitializerStatements, visitPackage, visitStatement, visitStatementAnnotations, visitTryCatchFinallyMethods inherited from class org.codehaus.groovy.ast.CodeVisitorSupport
afterSwitchCaseStatementsVisited, afterSwitchConditionExpressionVisited, visitArgumentlistExpression, visitArrayExpression, visitAttributeExpression, visitBinaryExpression, visitBitwiseNegationExpression, visitBooleanExpression, visitBytecodeExpression, visitCastExpression, visitClassExpression, visitClosureListExpression, visitConstantExpression, visitConstructorCallExpression, visitEmptyStatement, visitFieldExpression, visitGStringExpression, visitLambdaExpression, visitListExpression, visitMapEntryExpression, visitMapExpression, visitMethodCallExpression, visitMethodPointerExpression, visitMethodReferenceExpression, visitNotExpression, visitPostfixExpression, visitPrefixExpression, visitPropertyExpression, visitRangeExpression, visitShortTernaryExpression, visitSpreadExpression, visitSpreadMapExpression, visitStaticMethodCallExpression, visitTernaryExpression, visitTupleExpression, visitUnaryMinusExpression, visitUnaryPlusExpression, visitVariableExpressionMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.codehaus.groovy.ast.GroovyCodeVisitor
visit, visit, visitEmptyExpression, visitListOfExpressions
-
Constructor Details
-
OptimizerVisitor
Creates an optimizer visitor.- Parameters:
cu- the owning compilation unit
-
-
Method Details
-
visitClass
Applies optimizer rewrites to the supplied class.- Parameters:
node- the class to optimizesource- the source unit containing the class
-
transform
Rewrites constant expressions that can be cached in synthetic fields.- Specified by:
transformin interfaceExpressionTransformer- Overrides:
transformin classClassCodeExpressionTransformer- Parameters:
exp- the expression to transform- Returns:
- the transformed expression
-
getSourceUnit
Returns the source unit currently being optimized.- Specified by:
getSourceUnitin classClassCodeVisitorSupport- Returns:
- the active source unit
-
visitClosureExpression
Leaves closure bodies untouched so constant caching does not leak into closure classes.- Specified by:
visitClosureExpressionin interfaceGroovyCodeVisitor- Overrides:
visitClosureExpressionin classClassCodeExpressionTransformer- Parameters:
expression- the closure expression being skipped
-