Spec-Zone.ru › OpenJDK 27

Interface DiscontinuedInstruction.RetInstruction

All Superinterfaces:
ClassFileElement, CodeElement, DiscontinuedInstruction, Instruction
Enclosing interface:
DiscontinuedInstruction
public static sealed interface DiscontinuedInstruction.RetInstruction extends DiscontinuedInstruction
Models return from 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_RET. Delivered as a CodeElement when traversing the elements of a CodeModel.

A return from subroutine instruction is composite:

RetInstruction(int slot)
where slot must be u2.

astore series of instructions store a returnAddress value to a local variable slot, making the slot usable by a return from subroutine instruction.

API Note:
Return from subroutine instructions are discontinued to enforce verification by type checking (JVMS §4.10.1) using the StackMapTable attribute.
See Java Virtual Machine Specification:
6.5.ret ret
Since:
24
See Also:
  • Opcode.Kind.DISCONTINUED_RET
  • 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.RetInstruction of(int slot)
Returns a return from subroutine instruction.
static DiscontinuedInstruction.RetInstruction of(Opcode op, int slot)
Returns a return from subroutine instruction.
int slot()
Returns the local variable slot with return address.

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

slot

int slot()
Returns the local variable slot with return address. It is a u2 value.
Returns:
the local variable slot with return address

of

static DiscontinuedInstruction.RetInstruction of(Opcode op, int slot)
Returns a return from subroutine instruction.

slot must be u1 for ret, or u2 for wide ret.

API Note:
The explicit op argument allows creating wide ret instructions with slot in the range of regular ret instructions.
Parameters:
op - the opcode for the specific type of return from subroutine instruction, which must be of kind Opcode.Kind.DISCONTINUED_RET
slot - the local variable slot to load return address from
Returns:
a return from subroutine instruction
Throws:
IllegalArgumentException - if the opcode kind is not Opcode.Kind.DISCONTINUED_RET or if slot is out of range

of

static DiscontinuedInstruction.RetInstruction of(int slot)
Returns a return from subroutine instruction.

slot must be u2.

Parameters:
slot - the local variable slot to load return address from
Returns:
a return from subroutine instruction
Throws:
IllegalArgumentException - if slot is not u2

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