Interface DiscontinuedInstruction.JsrInstruction
- All Superinterfaces:
ClassFileElement, CodeElement, DiscontinuedInstruction, Instruction
- Enclosing interface:
DiscontinuedInstruction
public static sealed interface DiscontinuedInstruction.JsrInstruction extends DiscontinuedInstruction
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:
JsrInstruction(Label target)
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
StackMapTableattribute. - Since:
- 24
- See Also:
Nested Class Summary
Nested classes/interfaces declared in interface DiscontinuedInstruction
DiscontinuedInstruction.JsrInstruction, DiscontinuedInstruction.RetInstruction
Method Summary
| Modifier and Type | Method | Description |
|---|---|---|
static DiscontinuedInstruction.JsrInstruction |
of |
Returns a jump subroutine instruction. |
static DiscontinuedInstruction.JsrInstruction |
of |
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
of
static DiscontinuedInstruction.JsrInstruction of(Opcode op, Label target)
- API Note:
- The explicit
opargument allows creatingjsr_winstructions to avoid short jumps. - Parameters:
-
op- the opcode for the specific type of jump subroutine instruction, which must be of kindOpcode.Kind.DISCONTINUED_JSR -
target- target label of the subroutine - Returns:
- a jump subroutine instruction
- Throws:
-
IllegalArgumentException- if the opcode kind is notOpcode.Kind.DISCONTINUED_JSR.
of
static DiscontinuedInstruction.JsrInstruction of(Label target)
- 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