Interface BranchInstruction

All Superinterfaces:
ClassFileElement, CodeElement, Instruction

public sealed interface BranchInstruction extends Instruction
Models a branching instruction (conditional or unconditional) in the code array of a Code attribute. Corresponding opcodes have a kind of Opcode.Kind.BRANCH. Delivered as a CodeElement when traversing the elements of a CodeModel.

A branch instruction is composite:

BranchInstruction(
    Opcode opcode,
    Label target
)

Due to physical restrictions, some types of instructions cannot encode labels too far away in the list of code elements. In such cases, the ClassFile.ShortJumpsOption controls how an invalid branch instruction model is written by a CodeBuilder.

Since:
24
See Also:
  • Method Details

    • target

      Label target()
      Returns the branch target of this instruction.
      Returns:
      the branch target of this instruction
    • of

      static BranchInstruction of(Opcode op, Label target)
      Returns a branch instruction.
      Parameters:
      op - the opcode for the specific type of branch instruction, which must be of kind Opcode.Kind.BRANCH
      target - the target of the branch
      Returns:
      a branch instruction
      Throws:
      IllegalArgumentException - if the opcode kind is not Opcode.Kind.BRANCH