Module io.smallrye.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 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 ) using the
StackMapTableattribute. - Since:
- 24
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from interface io.smallrye.classfile.instruction.DiscontinuedInstruction
DiscontinuedInstruction.JsrInstruction, DiscontinuedInstruction.RetInstruction -
Method Summary
Methods inherited from interface io.smallrye.classfile.Instruction
opcode, sizeInBytes
-
Method Details
-
slot
int slot()Returns the local variable slot with return address. It is au2value.- Returns:
- the local variable slot with return address
-
of
- 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 beu2.- Parameters:
slot- the local variable slot to load return address from- Returns:
- a return from subroutine instruction
- Throws:
IllegalArgumentException- ifslotis notu2
-