|
Groovy 1.7.11 | |||||||
FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.codehaus.groovy.classgen.CompileStack
public class CompileStack extends Object
This class is a helper for AsmClassGenerator. It manages different aspects of the code of a code block like handling labels, defining variables, and scopes. After a MethodNode is visited clear should be called, for initialization the method init should be used.
Some Notes:
Nested Class Summary | |
---|---|
protected static class |
CompileStack.BlockRecorder
|
protected static class |
CompileStack.LabelRange
|
Method Summary | |
---|---|
void
|
addExceptionBlock(org.objectweb.asm.Label start, org.objectweb.asm.Label end, org.objectweb.asm.Label goal, String sig)
initializes this class for a MethodNode. |
void
|
applyBlockRecorder()
|
void
|
applyFinallyBlocks(org.objectweb.asm.Label label, boolean isBreakLabel)
|
void
|
clear()
|
boolean
|
containsVariable(String name)
Returns the label for the given name |
org.objectweb.asm.Label
|
createLocalLabel(String name)
|
int
|
defineTemporaryVariable(def var, boolean store)
|
int
|
defineTemporaryVariable(String name, boolean store)
|
int
|
defineTemporaryVariable(String name, ClassNode node, boolean store)
|
Variable
|
defineVariable(def v, boolean initFromStack)
@param name the name of the variable of interest |
org.objectweb.asm.Label
|
getBreakLabel()
|
org.objectweb.asm.Label
|
getContinueLabel()
|
org.objectweb.asm.Label
|
getLabel(String name)
|
protected org.objectweb.asm.Label
|
getNamedBreakLabel(String name)
Creates a new break label and a element for the state stack so pop has to be called later |
protected org.objectweb.asm.Label
|
getNamedContinueLabel(String name)
because a boolean Expression may not be evaluated completly it is important to keep the registers clean |
VariableScope
|
getScope()
|
Variable
|
getVariable(String variableName)
|
Variable
|
getVariable(String variableName, boolean mustExist)
creates a temporary variable. |
boolean
|
hasBlockRecorder()
|
protected void
|
init(VariableScope el, Parameter[] parameters, org.objectweb.asm.MethodVisitor mv, ClassNode cn)
Causes the statestack to add an element and sets the given scope as new current variable scope. |
void
|
pop()
|
void
|
popBlockRecorderVisit(CompileStack.BlockRecorder finallyBlock)
|
void
|
pushBlockRecorder(CompileStack.BlockRecorder recorder)
|
void
|
pushBlockRecorderVisit(CompileStack.BlockRecorder finallyBlock)
|
protected void
|
pushBooleanExpression()
|
protected void
|
pushLoop(VariableScope el, String labelName)
|
protected void
|
pushLoop(String labelName)
Used for |
protected void
|
pushState()
|
protected org.objectweb.asm.Label
|
pushSwitch()
|
protected void
|
pushVariableScope(VariableScope el)
|
void
|
removeVar(int tempIndex)
|
void
|
writeExceptionTable(CompileStack.BlockRecorder block, org.objectweb.asm.Label goal, String sig)
|
Methods inherited from class Object | |
---|---|
wait, wait, wait, equals, toString, hashCode, getClass, notify, notifyAll |
Method Detail |
---|
public void addExceptionBlock(org.objectweb.asm.Label start, org.objectweb.asm.Label end, org.objectweb.asm.Label goal, String sig)
public void applyBlockRecorder()
public void applyFinallyBlocks(org.objectweb.asm.Label label, boolean isBreakLabel)
public void clear()
public boolean containsVariable(String name)
public org.objectweb.asm.Label createLocalLabel(String name)
public int defineTemporaryVariable(def var, boolean store)
public int defineTemporaryVariable(String name, boolean store)
public int defineTemporaryVariable(String name, ClassNode node, boolean store)
public Variable defineVariable(def v, boolean initFromStack)
name
- the name of the variable of interest
public org.objectweb.asm.Label getBreakLabel()
public org.objectweb.asm.Label getContinueLabel()
public org.objectweb.asm.Label getLabel(String name)
protected org.objectweb.asm.Label getNamedBreakLabel(String name)
protected org.objectweb.asm.Label getNamedContinueLabel(String name)
public VariableScope getScope()
public Variable getVariable(String variableName)
public Variable getVariable(String variableName, boolean mustExist)
name
- defines type and namestore
- defines if the toplevel argument of the stack should be stored
public boolean hasBlockRecorder()
protected void init(VariableScope el, Parameter[] parameters, org.objectweb.asm.MethodVisitor mv, ClassNode cn)
public void pop()
public void popBlockRecorderVisit(CompileStack.BlockRecorder finallyBlock)
public void pushBlockRecorder(CompileStack.BlockRecorder recorder)
public void pushBlockRecorderVisit(CompileStack.BlockRecorder finallyBlock)
protected void pushBooleanExpression()
protected void pushLoop(VariableScope el, String labelName)
protected void pushLoop(String labelName)
continue foo
inside a loop to continue
the execution of the marked loop. This method will return
the break label of the loop if there is one found for the
name. If not, getLabel is used.
protected void pushState()
protected org.objectweb.asm.Label pushSwitch()
protected void pushVariableScope(VariableScope el)
public void removeVar(int tempIndex)
public void writeExceptionTable(CompileStack.BlockRecorder block, org.objectweb.asm.Label goal, String sig)
Copyright © 2003-2010 The Codehaus. All rights reserved.