public class NewClassRefForm extends ClassRefForm
This class is an extension of the ClassRefForm. It has two purposes: 1. To keep track of the last type used in a new() instruction in the current class. 2. To allow the sender to create instances of either a specified class (which then becomes the new class) or the last used new class.
  • Constructor Details

    • NewClassRefForm

      public NewClassRefForm(int opcode, String name, int[] rewrite)
      Constructs a new instance with the specified opcode, name, operandType and rewrite.
      Parameters:
      opcode - index corresponding to the opcode's value.
      name - String printable name of the opcode.
      rewrite - Operand positions (which will later be rewritten in ByteCodes) are indicated by -1.
  • Method Details

    • setByteCodeOperands

      public void setByteCodeOperands(ByteCode byteCode, OperandManager operandManager, int codeLength) throws Pack200Exception
      Description copied from class: ByteCodeForm
      Sets the rewrite of the byteCode.
      Overrides:
      setByteCodeOperands in class ReferenceForm
      Parameters:
      byteCode - ByteCode to be updated (!)
      operandManager - OperandTable from which to draw info
      codeLength - Length of bytes (excluding this bytecode) from the beginning of the method. Used in calculating padding for some variable-length bytecodes (such as lookupswitch, tableswitch).
      Throws:
      Pack200Exception - if a type is not supported or an index not in the range [0, Integer.MAX_VALUE].