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
where
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
)
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
Nested classes/interfaces declared in interface java.lang.classfile.instruction.DiscontinuedInstruction
DiscontinuedInstruction.JsrInstruction, DiscontinuedInstruction.RetInstruction
-
Method Summary
Methods declared in interface java.lang.classfile.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
Returns a return from subroutine instruction.slot
must be in the closed range of[0, 255]
forret
, or within[0, 65535]
forwide ret
.- API Note:
- The explicit
op
argument allows creatingwide ret
instructions withslot
in the range of regularret
instructions. - Parameters:
op
- the opcode for the specific type of return from subroutine instruction, which must be of kindOpcode.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 notOpcode.Kind.DISCONTINUED_RET
or ifslot
is out of range
-
of
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
- ifslot
is out of range
-