Package serp.bytecode

# Class JumpInstruction

java.lang.Object
serp.bytecode.Instruction
serp.bytecode.JumpInstruction

All Implemented Interfaces:
  `BCEntity`, `InstructionPtr`, `VisitAcceptor`

Direct Known Subclasses:
  `GotoInstruction`, `IfInstruction`, `LookupSwitchInstruction`, `SwitchInstruction`, `TableSwitchInstruction`

public abstract class JumpInstruction extends Instruction implements InstructionPtr
An instruction that specifies a position in the code block to jump to. Examples include `go2, jsr`, etc.

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.
`boolean`
`equalsInstruction(Instruction other)`
JumpInstructions are equal if they represent the same operation and the instruction they jump to is the same, or if the jump Instruction of either is unset.
`int`
`getOffset()`
`Instruction`
`getTarget()`
Get the current target instruction to jump to, if it has been set.
`void`
`replaceTarget(Instruction oldTarget, Instruction newTarget)`
Replace the given old, likely invalid, target with a new target.
`void`
`setOffset(int offset)`
`JumpInstruction`
`setTarget(Instruction instruction)`
Set the instruction to jump to; the instruction must already be added to the code block.
`void`
`updateTargets()`
Use the byte indexes read from the class file to calculate and set references to the target instruction(s) for this ptr.

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

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

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

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

### Methods inherited from interface serp.bytecode.InstructionPtr

`getCode`

## Method Details

### getTarget

public Instruction getTarget()
Get the current target instruction to jump to, if it has been set.

### setTarget

public JumpInstruction setTarget(Instruction instruction)
Set the instruction to jump to; the instruction must already be added to the code block.

Returns:
  this instruction, for method chaining

### equalsInstruction

public boolean equalsInstruction(Instruction other)
JumpInstructions are equal if they represent the same operation and the instruction they jump to is the same, or if the jump Instruction of either is unset.

Overrides:
  `equalsInstruction` in class `Instruction`

### updateTargets

public void updateTargets()
Description copied from interface: `InstructionPtr`
Use the byte indexes read from the class file to calculate and set references to the target instruction(s) for this ptr. This method will be called after the byte code has been read in for the first time and before it is written after modification.

Specified by:
  `updateTargets` in interface `InstructionPtr`

### replaceTarget

public void replaceTarget(Instruction oldTarget, Instruction newTarget)
Description copied from interface: `InstructionPtr`
Replace the given old, likely invalid, target with a new target. The new target Instruction is guaranteed to be in the same code block as this InstructionPtr.

Specified by:
  `replaceTarget` in interface `InstructionPtr`

### 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`

### setOffset

public void setOffset(int offset)

### getOffset

public int getOffset()