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 Details

    • _dims

      private int _dims
  • Constructor Details

    • MultiANewArrayInstruction

      MultiANewArrayInstruction(Code owner)
  • Method Details

    • 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(Instruction orig)
      Description copied from class: Instruction
      Copy the given instruction data.
      Overrides:
      read in class ClassInstruction
    • read

      void read(DataInput in) throws 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:
      IOException
    • write

      void write(DataOutput out) throws 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:
      IOException