Spec-Zone.ru › OpenJDK 27

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:

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 StackMapTable attribute.
Since:
24
See Also:
  • Opcode.Kind.DISCONTINUED_JSR
  • StackMapTableAttribute

Nested Class Summary

Nested classes/interfaces declared in interface DiscontinuedInstruction

DiscontinuedInstruction.JsrInstruction, DiscontinuedInstruction.RetInstruction
Modifier and Type Interface Description
static interface  DiscontinuedInstruction.JsrInstruction
Models jump subroutine instructions discontinued from the code array of a Code attribute since class file major version 51 (JVMS §4.9.1).
static interface  DiscontinuedInstruction.RetInstruction
Models return from subroutine instructions discontinued from the code array of a Code attribute since class file major version 51 (JVMS §4.9.1).

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
Modifier and Type Method Description
Opcode opcode()
Returns the operation of this instruction.
int sizeInBytes()
Returns the size in bytes of this instruction.

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

Report a bug or suggest an enhancement
For further API reference and developer documentation see the Java SE Documentation, which contains more detailed, developer-targeted descriptions with conceptual overviews, definitions of terms, workarounds, and working code examples. Other versions.
Java is a trademark or registered trademark of Oracle and/or its affiliates in the US and other countries.
Copyright © 1993, 2026, Oracle and/or its affiliates, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
All rights reserved. Use is subject to license terms and the documentation redistribution policy.

© 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API