Interface DiscontinuedInstruction.JsrInstruction
- All Superinterfaces:
- ClassFileElement,- CodeElement,- DiscontinuedInstruction,- Instruction
- Enclosing interface:
- DiscontinuedInstruction
public static sealed interface DiscontinuedInstruction.JsrInstruction
extends DiscontinuedInstruction
Models jump 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_JSR.
 Delivered as a CodeElement when traversing the elements of a
 CodeModel.
 A jump subroutine instruction is composite:
JsrInstruction(Label target)
 Due to physical restrictions, jsr instructions cannot
 encode labels too far away in the list of code elements.  In such cases,
 the ClassFile.ShortJumpsOption controls how an invalid jsr
 instruction model is written by a CodeBuilder.
 
 Jump subroutine instructions push a returnAddress value to the operand stack, and astore series of instructions can then store this value to a local
 variable slot.
- API Note:
- Jump subroutine instructions are discontinued to enforce verification by
 type checking (JVMS 4.10.1) using the StackMapTableattribute.
- Since:
- 24
- See Also:
- 
Nested Class SummaryNested classes/interfaces declared in interface java.lang.classfile.instruction.DiscontinuedInstructionDiscontinuedInstruction.JsrInstruction, DiscontinuedInstruction.RetInstruction
- 
Method SummaryModifier and TypeMethodDescriptionReturns a jump subroutine instruction.Returns a jump subroutine instruction.target()Returns the target of the jump subroutine instruction.Methods declared in interface java.lang.classfile.Instructionopcode, sizeInBytes
- 
Method Details- 
targetLabel target()Returns the target of the jump subroutine instruction.- Returns:
- the target of the jump subroutine instruction
 
- 
ofReturns a jump subroutine instruction.- API Note:
- The explicit opargument allows creatingjsr_winstructions to avoid short jumps.
- Parameters:
- op- the opcode for the specific type of jump subroutine instruction, which must be of kind- Opcode.Kind.DISCONTINUED_JSR
- target- target label of the subroutine
- Returns:
- a jump subroutine instruction
- Throws:
- IllegalArgumentException- if the opcode kind is not- Opcode.Kind.DISCONTINUED_JSR.
 
- 
ofReturns a jump subroutine instruction.- Parameters:
- target- target label of the subroutine
- Returns:
- a jump subroutine instruction
 
 
-