W3cubDocs

/OpenJDK 25

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:

where slot must be within [0, 65535].

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:

Nested Class Summary

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

Method Details

slot

int slot()
Returns the local variable slot with return address. The value is within [0, 65535].
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 in the closed range of [0, 255] for ret, or within [0, 65535] 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 within [0, 65535].

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

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