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
StackMapTableattribute. - 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.slotmust be in the closed range of[0, 255]forret, or within[0, 65535]forwide ret.- API Note:
- The explicit
opargument allows creatingwide retinstructions withslotin the range of regularretinstructions. - Parameters:
op- the opcode for the specific type of return from subroutine instruction, which must be of kindOpcode.Kind.DISCONTINUED_RETslot- 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_RETor ifslotis out of range
-
of
Returns a return from subroutine instruction.slotmust be within[0, 65535].- Parameters:
slot- the local variable slot to load return address from- Returns:
- a return from subroutine instruction
- Throws:
IllegalArgumentException- ifslotis out of range
-