W3cubDocs

/OpenJDK 25

Interface DiscontinuedInstruction.JsrInstruction

All Superinterfaces:
ClassFileElement, CodeElement, DiscontinuedInstruction, Instruction
Enclosing interface:
DiscontinuedInstruction
public static sealed interface DiscontinuedInstruction.JsrInstruction extends DiscontinuedInstruction
Models jump subroutine instructions discontinued from the code array of a Code attribute since class file major version 51 (JVMS 4.9.1). Corresponding opcodes have a kind of Opcode.Kind.DISCONTINUED_JSR. Delivered as a CodeElement when traversing the elements of a CodeModel.

A jump subroutine instruction is composite:

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

Jump subroutine instructions push a returnAddress value to the operand stack, and astore series of instructions can then store this value to a local variable slot.

API Note:
Jump subroutine instructions are discontinued to enforce verification by type checking (JVMS 4.10.1) using the StackMapTable attribute.
Since:
24
See Also:

Nested Class Summary

Method Summary

Modifier and Type Method Description
static DiscontinuedInstruction.JsrInstruction of(Label target)
Returns a jump subroutine instruction.
static DiscontinuedInstruction.JsrInstruction of(Opcode op, Label target)
Returns a jump subroutine instruction.
Label target()
Returns the target of the jump subroutine instruction.

Methods declared in interface Instruction

opcode, sizeInBytes

Method Details

target

Label target()
Returns the target of the jump subroutine instruction.
Returns:
the target of the jump subroutine instruction

of

static DiscontinuedInstruction.JsrInstruction of(Opcode op, Label target)
Returns a jump subroutine instruction.
API Note:
The explicit op argument allows creating jsr_w instructions to avoid short jumps.
Parameters:
op - the opcode for the specific type of jump subroutine instruction, which must be of kind Opcode.Kind.DISCONTINUED_JSR
target - target label of the subroutine
Returns:
a jump subroutine instruction
Throws:
IllegalArgumentException - if the opcode kind is not Opcode.Kind.DISCONTINUED_JSR.

of

static DiscontinuedInstruction.JsrInstruction of(Label target)
Returns a jump subroutine instruction.
Parameters:
target - target label of the subroutine
Returns:
a jump subroutine instruction

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/classfile/instruction/DiscontinuedInstruction.JsrInstruction.html