Class OperandStack

  • public class OperandStack
    extends Object
    • 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
      • 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)
      • load

        public void load​(ClassNode type,
                         int idx)
      • pushBool

        public void pushBool​(boolean inclusive)
      • getTopOperand

        public ClassNode getTopOperand()