Package 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
  Description
  `WideForm(int opcode, String name)`
  Constructs a new instance with the specified opcode, name, operandType and rewrite.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `setByteCodeOperands(ByteCode byteCode, OperandManager operandManager, int codeLength)`
  Sets the rewrite of the byteCode.
  `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 Details

  - ### WideForm

    public WideForm(int opcode, String name)
    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.

- ## Method Details

  - ### setByteCodeOperands

    public void setByteCodeOperands(ByteCode byteCode, OperandManager operandManager, int codeLength)
    Description copied from class: `ByteCodeForm`
    Sets the rewrite of the byteCode.
    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