Class VariableInstructionForm

  • Direct Known Subclasses:
    SwitchForm, WideForm

    public abstract class VariableInstructionForm
    extends ByteCodeForm
    This abstract class implements the common code for instructions which have variable lengths. This is currently the *switch instructions and some wide (_w) instructions.
    • Method Detail

      • setRewrite4Bytes

        public void setRewrite4Bytes​(int operand,
                                     int[] rewrite)
        Given an int operand, set the rewrite bytes for the next available operand position and the three immediately following it to a highest-byte, mid-high, mid-low, low-byte encoding of the operand. Note that unlike the ByteCode setOperand* operations, this starts with an actual bytecode rewrite array (rather than a ByteCodeForm prototype rewrite array). Also, this method overwrites -1 values in the rewrite array - so if you start with an array that looks like: {100, -1, -1, -1, -1, 200, -1, -1, -1, -1} then calling setRewrite4Bytes(0, rewrite) the first time will convert it to: {100, 0, 0, 0, 0, 200, -1, -1, -1, -1} Calling setRewrite4Bytes(0, rewrite) a second time will convert it to: {100, 0, 0, 0, 0, 200, 0, 0, 0, 0}
        Parameters:
        operand - int to set the rewrite bytes to
        rewrite - int[] bytes to rewrite
      • setRewrite4Bytes

        public void setRewrite4Bytes​(int operand,
                                     int absPosition,
                                     int[] rewrite)
        This method writes operand directly into the rewrite array at index position specified.
        Parameters:
        operand - value to write
        absPosition - position in array to write. Note that this is absolute position in the array, so one can overwrite the bytecode if one isn't careful.
        rewrite - array to write into
      • setRewrite2Bytes

        public void setRewrite2Bytes​(int operand,
                                     int absPosition,
                                     int[] rewrite)
        This method writes operand directly into the rewrite array at index position specified.
        Parameters:
        operand - value to write
        absPosition - position in array to write. Note that this is absolute position in the array, so one can overwrite the bytecode if one isn't careful.
        rewrite - array to write into