Class NewClassRefForm


  • 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 Detail

      • NewClassRefForm

        public NewClassRefForm​(int opcode,
                               java.lang.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 Detail

      • 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].