Package serp.bytecode

# Class WideInstruction

java.lang.Object
serp.bytecode.Instruction
serp.bytecode.TypedInstruction
serp.bytecode.LocalVariableInstruction
serp.bytecode.WideInstruction

All Implemented Interfaces:
  `BCEntity`, `VisitAcceptor`

public class WideInstruction extends LocalVariableInstruction
The `wide` instruction, which is used to allow other instructions to index values beyond what they can normally index baed on the length of their arguments.

Author:
  Abe White

## Method Summary

Modifier and Type
Method
Description
`void`
`acceptVisit(BCVisitor visit)`
Accept a visit from a `BCVisitor`, calling the appropriate methods to notify the visitor that it has entered this entity, and to provide it with the proper callbacks for each sub-entity owned by this one.
`WideInstruction`
`aload()`
Set the type of instruction this wide instruction modifies.
`WideInstruction`
`astore()`
Set the type of instruction this wide instruction modifies.
`WideInstruction`
`dload()`
Set the type of instruction this wide instruction modifies.
`WideInstruction`
`dstore()`
Set the type of instruction this wide instruction modifies.
`boolean`
`equalsInstruction(Instruction other)`
WideInstructions are equal if the instruction they augment is the same or unset.
`WideInstruction`
`fload()`
Set the type of instruction this wide instruction modifies.
`WideInstruction`
`fstore()`
Set the type of instruction this wide instruction modifies.
`int`
`getIncrement()`
Return the increment for this instruction if it augments IINC, or -1 if unset.
`int`
`getInstruction()`
Return the opcode of the instruction to modify; this will return one of the constants defined in `Constants`.
`int`
`getLogicalStackChange()`
Return the logical number of stack positions changed by this instruction.
`int`
`getStackChange()`
Return the number of stack positions this instruction pushes or pops during its execution.
`String`
`getTypeName()`
Return the type name for this instruction.
`WideInstruction`
`iinc()`
Set the type of instruction this wide instruction modifies.
`WideInstruction`
`iload()`
Set the type of instruction this wide instruction modifies.
`WideInstruction`
`istore()`
Set the type of instruction this wide instruction modifies.
`WideInstruction`
`lload()`
Set the type of instruction this wide instruction modifies.
`WideInstruction`
`lstore()`
Set the type of instruction this wide instruction modifies.
`WideInstruction`
`ret()`
Set the type of instruction this wide instruction modifies.
`WideInstruction`
`setIncrement(int val)`
Set the increment on this instruction if it augments IINC.
`WideInstruction`
`setInstruction(int opcode)`
Set the type of instruction this wide instruction modifies.
`WideInstruction`
`setInstruction(Instruction ins)`
Set the type of instruction this wide instruction modifies.
`TypedInstruction`
`setType(String type)`
Set the type of this instruction.

### Methods inherited from class serp.bytecode.LocalVariableInstruction

`getLocal, getLocalVariable, getParam, setLocal, setLocalVariable, setParam`

### Methods inherited from class serp.bytecode.TypedInstruction

`getType, getTypeBC, setType, setType`

### Methods inherited from class serp.bytecode.Instruction

`getByteIndex, getClassLoader, getCode, getLineNumber, getName, getOpcode, getPool, getProject, isValid`

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

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

## Method Details

### getStackChange

public int getStackChange()
Description copied from class: `Instruction`
Return the number of stack positions this instruction pushes or pops during its execution.

Overrides:
  `getStackChange` in class `Instruction`
Returns:
  0 if the stack is not affected by this instruction, a positive number if it pushes onto the stack, and a negative number if it pops from the stack

### getLogicalStackChange

public int getLogicalStackChange()
Description copied from class: `Instruction`
Return the logical number of stack positions changed by this instruction. In other words, ignore weirdness with longs and doubles taking two stack positions.

Overrides:
  `getLogicalStackChange` in class `Instruction`

### getTypeName

public String getTypeName()
Description copied from class: `TypedInstruction`
Return the type name for this instruction. If the type has not been set, this method will return null.

Overrides:
  `getTypeName` in class `LocalVariableInstruction`

### setType

public TypedInstruction setType(String type)
Description copied from class: `TypedInstruction`
Set the type of this instruction. Types that have no direct support will be converted accordingly.

Overrides:
  `setType` in class `LocalVariableInstruction`
Returns:
  this instruction, for method chaining

### getInstruction

public int getInstruction()
Return the opcode of the instruction to modify; this will return one of the constants defined in `Constants`.

### setInstruction

public WideInstruction setInstruction(Instruction ins)
Set the type of instruction this wide instruction modifies.

### setInstruction

public WideInstruction setInstruction(int opcode)
Set the type of instruction this wide instruction modifies.

### iinc

public WideInstruction iinc()
Set the type of instruction this wide instruction modifies.

Returns:
  this instruction, for method chaining

### ret

public WideInstruction ret()
Set the type of instruction this wide instruction modifies.

Returns:
  this instruction, for method chaining

### iload

public WideInstruction iload()
Set the type of instruction this wide instruction modifies.

Returns:
  this instruction, for method chaining

### fload

public WideInstruction fload()
Set the type of instruction this wide instruction modifies.

Returns:
  this instruction, for method chaining

### aload

public WideInstruction aload()
Set the type of instruction this wide instruction modifies.

Returns:
  this instruction, for method chaining

### lload

public WideInstruction lload()
Set the type of instruction this wide instruction modifies.

Returns:
  this instruction, for method chaining

### dload

public WideInstruction dload()
Set the type of instruction this wide instruction modifies.

Returns:
  this instruction, for method chaining

### istore

public WideInstruction istore()
Set the type of instruction this wide instruction modifies.

Returns:
  this instruction, for method chaining

### fstore

public WideInstruction fstore()
Set the type of instruction this wide instruction modifies.

Returns:
  this instruction, for method chaining

### astore

public WideInstruction astore()
Set the type of instruction this wide instruction modifies.

Returns:
  this instruction, for method chaining

### lstore

public WideInstruction lstore()
Set the type of instruction this wide instruction modifies.

Returns:
  this instruction, for method chaining

### dstore

public WideInstruction dstore()
Set the type of instruction this wide instruction modifies.

Returns:
  this instruction, for method chaining

### getIncrement

public int getIncrement()
Return the increment for this instruction if it augments IINC, or -1 if unset.

### setIncrement

public WideInstruction setIncrement(int val)
Set the increment on this instruction if it augments IINC.

Returns:
  this Instruction, for method chaining

### equalsInstruction

public boolean equalsInstruction(Instruction other)
WideInstructions are equal if the instruction they augment is the same or unset.

Overrides:
  `equalsInstruction` in class `LocalVariableInstruction`

### acceptVisit

public void acceptVisit(BCVisitor visit)
Description copied from interface: `VisitAcceptor`
Accept a visit from a `BCVisitor`, calling the appropriate methods to notify the visitor that it has entered this entity, and to provide it with the proper callbacks for each sub-entity owned by this one.

Specified by:
  `acceptVisit` in interface `VisitAcceptor`
Overrides:
  `acceptVisit` in class `Instruction`