Package org.codehaus.groovy.classgen.asm
Class OperandStack
- java.lang.Object
-
- org.codehaus.groovy.classgen.asm.OperandStack
-
public class OperandStack extends Object
-
-
Constructor Summary
Constructors Constructor Description OperandStack(WriterController wc)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description ClassNode
box()
void
castToBool(int mark, boolean emptyDefault)
ensure last marked parameter on the stack is a primitive boolean if mark==stack size, we assume an empty expression or statement.void
doAsType(ClassNode targetType)
void
doGroovyCast(ClassNode targetType)
do Groovy cast for top level elementvoid
doGroovyCast(Variable v)
void
dup()
duplicate top elementint
getStackLength()
ClassNode
getTopOperand()
org.objectweb.asm.Label
jump(int ifIns)
void
jump(int ifIns, org.objectweb.asm.Label label)
void
load(ClassNode type, int idx)
void
loadOrStoreVariable(BytecodeVariable variable, boolean useReferenceDirectly)
void
pop()
remove operand stack top element using bytecode popvoid
popDownTo(int elements)
void
push(ClassNode type)
push operand on stackvoid
pushBool(boolean inclusive)
void
pushConstant(ConstantExpression expression)
load the constant on the operand stack.void
pushDynamicName(Expression name)
void
remove(int amount)
Remove amount elements from the operand stack, without using pop.void
replace(ClassNode type)
replace top level element with new element of given typevoid
replace(ClassNode type, int n)
replace n top level elements with new element of given typevoid
storeVar(BytecodeVariable variable)
void
swap()
swap two top level operandsString
toString()
-
-
-
Constructor Detail
-
OperandStack
public OperandStack(WriterController wc)
-
-
Method Detail
-
getStackLength
public int getStackLength()
-
popDownTo
public void popDownTo(int elements)
-
castToBool
public void castToBool(int mark, boolean emptyDefault)
ensure last marked parameter on the stack is a primitive boolean if mark==stack size, we assume an empty expression or statement. was used and we will use the value given in emptyDefault as boolean if mark==stack.size()-1 the top element will be cast to boolean using Groovy truth. In other cases we throw a GroovyBugError
-
pop
public void pop()
remove operand stack top element using bytecode pop
-
jump
public org.objectweb.asm.Label jump(int ifIns)
-
jump
public void jump(int ifIns, org.objectweb.asm.Label label)
-
dup
public void dup()
duplicate top element
-
box
public ClassNode box()
-
remove
public void remove(int amount)
Remove amount elements from the operand stack, without using pop. For example after a method invocation
-
push
public void push(ClassNode type)
push operand on stack
-
swap
public void swap()
swap two top level operands
-
replace
public void replace(ClassNode type)
replace top level element with new element of given type
-
replace
public void replace(ClassNode type, int n)
replace n top level elements with new element of given type
-
doGroovyCast
public void doGroovyCast(ClassNode targetType)
do Groovy cast for top level element
-
doGroovyCast
public void doGroovyCast(Variable v)
-
doAsType
public void doAsType(ClassNode targetType)
-
pushConstant
public void pushConstant(ConstantExpression expression)
load the constant on the operand stack.
-
pushDynamicName
public void pushDynamicName(Expression name)
-
loadOrStoreVariable
public void loadOrStoreVariable(BytecodeVariable variable, boolean useReferenceDirectly)
-
storeVar
public void storeVar(BytecodeVariable variable)
-
load
public void load(ClassNode type, int idx)
-
pushBool
public void pushBool(boolean inclusive)
-
getTopOperand
public ClassNode getTopOperand()
-
-