# Class JSR

java.lang.Object
org.apache.bcel.generic.Instruction
org.apache.bcel.generic.BranchInstruction
org.apache.bcel.generic.JsrInstruction
org.apache.bcel.generic.JSR

All Implemented Interfaces:
  `Cloneable, InstructionTargeter, StackProducer, TypedInstruction, UnconditionalBranch, VariableLengthInstruction`

public class JSR extends JsrInstruction implements VariableLengthInstruction
JSR - Jump to subroutine

- ## Field Summary

  ### Fields inherited from class BranchInstruction

  `index, position, target`

  ### Fields inherited from class Instruction

  `length, opcode`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `JSR(InstructionHandle target)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `accept(Visitor v)`
  Call corresponding visitor method(s).
  `void`
  `dump(DataOutputStream out)`
  Dumps instruction as byte code to stream out.
  `protected int`
  `updatePosition(int offset, int maxOffset)`
  Called by InstructionList.setPositions when setting the position for every instruction.

  ### Methods inherited from class JsrInstruction

  `getType, physicalSuccessor`

  ### Methods inherited from class BranchInstruction

  `containsTarget, getIndex, getPosition, getTarget, getTargetOffset, getTargetOffset, initFromFile, setIndex, setPosition, setTarget, toString, updateTarget`

  ### Methods inherited from class Instruction

  `consumeStack, copy, equals, getComparator, getLength, getName, getOpcode, hashCode, isValidByte, isValidShort, produceStack, readInstruction, setComparator, toString, toString`

  ### Methods inherited from class Object

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

  ### Methods inherited from interface StackProducer

  `produceStack`

- ## Constructor Details

  - ### JSR

    public JSR(InstructionHandle target)

- ## Method Details

  - ### accept

    public void accept(Visitor v)
    Call corresponding visitor method(s). The order is: Call visitor methods of implemented interfaces first, then call methods according to the class hierarchy in descending order, that is, the most specific visitXXX() call comes last.
    Specified by:
      `accept` in class `Instruction`
    Parameters:
      `v` - Visitor object.

  - ### dump

    public void dump(DataOutputStream out) throws IOException
    Dumps instruction as byte code to stream out.
    Overrides:
      `dump` in class `BranchInstruction`
    Parameters:
      `out` - Output stream.
    Throws:
      `IOException` - Thrown when an I/O exception of some sort has occurred.

  - ### updatePosition

    protected int updatePosition(int offset, int maxOffset)
    Description copied from class: `BranchInstruction`
    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 `BranchInstruction`
    Parameters:
      `offset` - additional offset caused by preceding (variable length) instructions.
      `maxOffset` - the maximum offset that may be caused by these instructions.
    Returns:
      additional offset caused by possible change of this instruction's length.