org.apache.bcel.generic

## Class BranchHandle

- java.lang.Object
- - org.apache.bcel.generic.InstructionHandle
  - - org.apache.bcel.generic.BranchHandle

-     public final class BranchHandle
      extends InstructionHandle

  BranchHandle is returned by specialized InstructionList.append() whenever a BranchInstruction is appended. This is useful when the target of this instruction is not known at time of creation and must be set later via setTarget().
  Version:
    $Id: BranchHandle.java 1806200 2017-08-25 16:33:06Z ggregory $
  See Also:
    `InstructionHandle`, `Instruction`, `InstructionList`

- - ### Field Summary

    - ### Fields inherited from class org.apache.bcel.generic.InstructionHandle

      `i_position`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `addHandle()` Handle adds itself to the list of resuable handles.
    `int` | `getPosition()`
    `InstructionHandle` | `getTarget()`
    `void` | `setInstruction(Instruction i)` Set new contents.
    `void` | `setTarget(InstructionHandle ih)` Pass new target to instruction.
    `protected int` | `updatePosition(int offset, int max_offset)` Called by InstructionList.setPositions when setting the position for every instruction.
    `void` | `updateTarget(InstructionHandle old_ih, InstructionHandle new_ih)` Update target of instruction.

    - ### Methods inherited from class org.apache.bcel.generic.InstructionHandle

      `accept, addAttribute, addTargeter, getAttribute, getAttributes, getInstruction, getNext, getPrev, getTargeters, hasTargeters, removeAllTargeters, removeAttribute, removeTargeter, swapInstruction, toString, toString`

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

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

- - ### Method Detail

    - #### addHandle

          protected void addHandle()

      Handle adds itself to the list of resuable handles.
      Overrides:
        `addHandle` in class `InstructionHandle`

    - #### getPosition

          public int getPosition()

      Overrides:
        `getPosition` in class `InstructionHandle`
      Returns:
        the position, i.e., the byte code offset of the contained instruction. This is accurate only after InstructionList.setPositions() has been called.

    - #### updatePosition

          protected int updatePosition(int offset,
                                       int max_offset)

      Description copied from class: `InstructionHandle`
      Called by InstructionList.setPositions when setting the position for every instruction. In the presence of variable length instructions `setPositions()' performs multiple passes over the instruction list to calculate the correct (byte) positions and offsets by calling this function.
      Overrides:
        `updatePosition` in class `InstructionHandle`
      Parameters:
        `offset` - additional offset caused by preceding (variable length) instructions
        `max_offset` - the maximum offset that may be caused by these instructions
      Returns:
        additional offset caused by possible change of this instruction's length

    - #### setTarget

          public void setTarget(InstructionHandle ih)

      Pass new target to instruction.

    - #### updateTarget

          public void updateTarget(InstructionHandle old_ih,
                                   InstructionHandle new_ih)

      Update target of instruction.

    - #### getTarget

          public InstructionHandle getTarget()

      Returns:
        target of instruction.

    - #### setInstruction

          public void setInstruction(Instruction i)

      Set new contents. Old instruction is disposed and may not be used anymore.
      Overrides:
        `setInstruction` in class `InstructionHandle`

Copyright © 2004–2019 The Apache Software Foundation. All rights reserved.