org.codehaus.groovy.classgen.asm

## Class ExpressionAsVariableSlot

- java.lang.Object
- - org.codehaus.groovy.ast.ASTNode
  - - org.codehaus.groovy.ast.AnnotatedNode
    - - org.codehaus.groovy.ast.expr.Expression
      - - org.codehaus.groovy.classgen.BytecodeExpression
        - - org.codehaus.groovy.classgen.asm.ExpressionAsVariableSlot

    public class ExpressionAsVariableSlot
    extends BytecodeExpression

Helper class that takes an Expression and if visited will load it normally, storing the result in a helper variable, which then can be requested after the visit is completed. A copy of the variable will stay on the stack. Subsequent visits will load the stored value instead of visiting the expression again

Author:
  Jochen "blackdrag" Theodorou

### Field Summary

### Fields inherited from class org.codehaus.groovy.classgen.BytecodeExpression

`NOP`

### Constructor Summary

Constructors
Constructor and Description
`ExpressionAsVariableSlot(WriterController controller, Expression expression)`
`ExpressionAsVariableSlot(WriterController controller, Expression expression, java.lang.String name)`

### Method Summary

All Methods Instance Methods Concrete Methods
`int` `getIndex()` returns the index of the bytecode variable
`java.lang.String` `getText()`
`void` `visit(org.objectweb.asm.MethodVisitor mv)`

### Methods inherited from class org.codehaus.groovy.classgen.BytecodeExpression

`transformExpression, visit`

### Methods inherited from class org.codehaus.groovy.ast.expr.Expression

`getType, setType, transformExpressions, transformExpressions`

### Methods inherited from class org.codehaus.groovy.ast.AnnotatedNode

`addAnnotation, addAnnotations, getAnnotations, getAnnotations, getDeclaringClass, hasNoRealSourcePosition, isSynthetic, setDeclaringClass, setHasNoRealSourcePosition, setSynthetic`

### Methods inherited from class org.codehaus.groovy.ast.ASTNode

`copyNodeMetaData, getColumnNumber, getLastColumnNumber, getLastLineNumber, getLineNumber, getNodeMetaData, getNodeMetaData, putNodeMetaData, removeNodeMetaData, setColumnNumber, setLastColumnNumber, setLastLineNumber, setLineNumber, setNodeMetaData, setSourcePosition`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### ExpressionAsVariableSlot

    public ExpressionAsVariableSlot(WriterController controller,
                                    Expression expression,
                                    java.lang.String name)

#### ExpressionAsVariableSlot

    public ExpressionAsVariableSlot(WriterController controller,
                                    Expression expression)

### Method Detail

#### visit

    public void visit(org.objectweb.asm.MethodVisitor mv)

Specified by:
  `visit` in class `BytecodeExpression`

#### getIndex

    public int getIndex()

returns the index of the bytecode variable

#### getText

    public java.lang.String getText()

Overrides:
  `getText` in class `ASTNode`