Package serp.bytecode

Class MultiANewArrayInstruction

  • All Implemented Interfaces:
    BCEntity, VisitAcceptor

    public class MultiANewArrayInstruction
    extends ClassInstruction
    The multianewarray instruction, which creates a new multi-dimensional array.
    • Field Detail

      • _dims

        private int _dims
    • Constructor Detail

      • MultiANewArrayInstruction

        MultiANewArrayInstruction​(Code owner)
    • Method Detail

      • getLength

        int getLength()
        Description copied from class: Instruction
        Return the length in bytes of this opcode, including all arguments. For many opcodes this method relies on an up-to-date byte index.
        Overrides:
        getLength in class ClassInstruction
      • getStackChange

        public int getStackChange()
        Description copied from class: Instruction
        Return the number of stack positions this instruction pushes or pops during its execution.
        Overrides:
        getStackChange in class ClassInstruction
        Returns:
        0 if the stack is not affected by this instruction, a positive number if it pushes onto the stack, and a negative number if it pops from the stack
      • getDimensions

        public int getDimensions()
        Return the dimensions of the array, or -1 if not set.
      • setDimensions

        public MultiANewArrayInstruction setDimensions​(int dims)
        Set the dimensions of the array.
        Returns:
        this instruction, for method chaining
      • equalsInstruction

        public boolean equalsInstruction​(Instruction other)
        Two MultiANewArray instructions are equal if they have the same type and dimensions, or if the type and dimensions of either is unset.
        Overrides:
        equalsInstruction in class ClassInstruction
      • acceptVisit

        public void acceptVisit​(BCVisitor visit)
        Description copied from interface: VisitAcceptor
        Accept a visit from a BCVisitor, calling the appropriate methods to notify the visitor that it has entered this entity, and to provide it with the proper callbacks for each sub-entity owned by this one.
        Specified by:
        acceptVisit in interface VisitAcceptor
        Overrides:
        acceptVisit in class ClassInstruction
      • read

        void read​(java.io.DataInput in)
           throws java.io.IOException
        Description copied from class: Instruction
        Read the arguments for this opcode from the given stream. This method should be overridden by opcodes that take arguments.
        Overrides:
        read in class ClassInstruction
        Throws:
        java.io.IOException
      • write

        void write​(java.io.DataOutput out)
            throws java.io.IOException
        Description copied from class: Instruction
        Write the arguments for this opcode to the given stream. This method should be overridden by opcodes that take arguments.
        Overrides:
        write in class ClassInstruction
        Throws:
        java.io.IOException