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
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 Details
-
OperandStack
-
-
Method Details
-
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
-
remove
public void remove(int amount)Remove amount elements from the operand stack, without using pop. For example after a method invocation -
push
push operand on stack -
swap
public void swap()swap two top level operands -
replace
replace top level element with new element of given type -
replace
replace n top level elements with new element of given type -
doGroovyCast
do Groovy cast for top level element -
doGroovyCast
-
doAsType
-
pushConstant
load the constant on the operand stack. -
pushDynamicName
-
loadOrStoreVariable
-
storeVar
-
load
-
pushBool
public void pushBool(boolean inclusive) -
toString
-
getTopOperand
-