org.apache.commons.compress.harmony.unpack200.bytecode.forms

## Class WideForm

- java.lang.Object
- - org.apache.commons.compress.harmony.unpack200.bytecode.forms.ByteCodeForm
  - - org.apache.commons.compress.harmony.unpack200.bytecode.forms.VariableInstructionForm
    - - org.apache.commons.compress.harmony.unpack200.bytecode.forms.WideForm

-     public class WideForm
      extends VariableInstructionForm

  This class implements the byte code form for the wide instruction. Unlike other instructions, it can take multiple forms, depending on what is being widened.

- - ### Field Summary

    - ### Fields inherited from class org.apache.commons.compress.harmony.unpack200.bytecode.forms.ByteCodeForm

      `byteCodeArray, byteCodesByName, WIDENED`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `WideForm(int opcode, String name)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `setByteCodeOperands(ByteCode byteCode, OperandManager operandManager, int codeLength)` When passed a byteCode, an OperandTable and a SegmentConstantPool, this method will set the rewrite of the byteCode appropriately.
    `protected void` | `setByteCodeOperandsFormat1(int instruction, ByteCode byteCode, OperandManager operandManager, int codeLength)` This method sets the rewrite array for the bytecode using Format 1 of the JVM spec: an opcode and two index bytes.
    `protected void` | `setByteCodeOperandsFormat2(int instruction, ByteCode byteCode, OperandManager operandManager, int codeLength)` This method sets the rewrite array for the bytecode using Format 2 of the JVM spec: an opcode, two index bytes, and two constant bytes.

    - ### Methods inherited from class org.apache.commons.compress.harmony.unpack200.bytecode.forms.VariableInstructionForm

      `setRewrite2Bytes, setRewrite4Bytes, setRewrite4Bytes`

    - ### Methods inherited from class org.apache.commons.compress.harmony.unpack200.bytecode.forms.ByteCodeForm

      `calculateOperandPosition, firstOperandIndex, fixUpByteCodeTargets, get, getName, getOpcode, getRewrite, getRewriteCopy, hasMultipleByteCodes, hasNoOperand, nestedMustStartClassPool, operandLength, toString`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### WideForm

          public WideForm(int opcode,
                          String name)

  - ### Method Detail

    - #### setByteCodeOperands

          public void setByteCodeOperands(ByteCode byteCode,
                                          OperandManager operandManager,
                                          int codeLength)

      Description copied from class: `ByteCodeForm`
      When passed a byteCode, an OperandTable and a SegmentConstantPool, this method will set the rewrite of the byteCode appropriately.
      Specified by:
        `setByteCodeOperands` in class `ByteCodeForm`
      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).

    - #### setByteCodeOperandsFormat1

          protected void setByteCodeOperandsFormat1(int instruction,
                                                    ByteCode byteCode,
                                                    OperandManager operandManager,
                                                    int codeLength)

      This method sets the rewrite array for the bytecode using Format 1 of the JVM spec: an opcode and two index bytes. This is used for ?load/?store/ret
      Parameters:
        `instruction` - should be 132
        `byteCode` - the byte code whose rewrite array should be updated
        `operandManager` - the source of the operands
        `codeLength` - ignored

    - #### setByteCodeOperandsFormat2

          protected void setByteCodeOperandsFormat2(int instruction,
                                                    ByteCode byteCode,
                                                    OperandManager operandManager,
                                                    int codeLength)

      This method sets the rewrite array for the bytecode using Format 2 of the JVM spec: an opcode, two index bytes, and two constant bytes. This is used for iinc.
      Parameters:
        `instruction` - int should be 132
        `byteCode` - ByteCode whose rewrite array should be updated
        `operandManager` - OperandManager source of the operands
        `codeLength` - ignored

Copyright © 2002–2022 The Apache Software Foundation. All rights reserved.