Class OperandStack


public class OperandStack extends Object
  • Constructor Details

  • 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

      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)
    • toString

      public String toString()
      toString in class Object
    • getTopOperand

      public ClassNode getTopOperand()