Module io.github.dmlloyd.classfile
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 ).
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.
- Since:
- 24
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from interface io.github.dmlloyd.classfile.instruction.DiscontinuedInstruction
DiscontinuedInstruction.JsrInstruction, DiscontinuedInstruction.RetInstruction -
Method Summary
Methods inherited from interface io.github.dmlloyd.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.- 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
-