Интерфейс DiscontinuedInstruction.JsrInstruction
- Все супер-интерфейсы:
ClassFileElement, CodeElement, DiscontinuedInstruction, Instruction
- Охватывающий интерфейс:
DiscontinuedInstruction
public static sealed interface DiscontinuedInstruction.JsrInstruction extends DiscontinuedInstruction
code атрибута Code начиная с основной версии файла класса 51 (JVMS §4.9.1). Соответствующие коды операций имеют вид Opcode.Kind.DISCONTINUED_JSR. Возвращается в виде CodeElement при обходе элементов CodeModel. Инструкция перехода к подпрограмме является составной:
JsrInstruction(Label target)
Из-за физических ограничений инструкции jsr не могут кодировать метки, расположенные слишком далеко в списке элементов кода. В таких случаях ClassFile.ShortJumpsOption определяет, как CodeBuilder записывает недопустимую модель инструкции jsr.
Инструкции перехода к подпрограмме помещают значение returnAddress в стек операндов, а последовательность инструкций astore может затем сохранить это значение в ячейке локальной переменной.
- Примечание API:
- Инструкции перехода к подпрограмме исключены, чтобы обеспечить проверку типов (JVMS §4.10.1) с помощью атрибута
StackMapTable. - Начиная с версии:
- 24
- См. также:
Краткое описание вложенных классов
Вложенные классы/интерфейсы, объявленные в интерфейсе DiscontinuedInstruction
DiscontinuedInstruction.JsrInstruction, DiscontinuedInstruction.RetInstruction | Модификатор и тип | Интерфейс | Описание |
|---|---|---|
static interface |
DiscontinuedInstruction.JsrInstruction |
|
static interface |
DiscontinuedInstruction.RetInstruction |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static DiscontinuedInstruction.JsrInstruction |
of |
Возвращает инструкцию перехода к подпрограмме. |
static DiscontinuedInstruction.JsrInstruction |
of |
Возвращает инструкцию перехода к подпрограмме. |
Label |
target() |
Возвращает цель инструкции перехода к подпрограмме. |
Методы, объявленные в интерфейсе Instruction
opcode, sizeInBytes | Модификатор и тип | Метод | Описание |
|---|---|---|
Opcode |
opcode() |
Возвращает операцию этой инструкции. |
int |
sizeInBytes() |
Возвращает размер этой инструкции в байтах. |
Подробное описание методов
target
Label target()
- Возвращает:
- цель инструкции перехода к подпрограмме
of
static DiscontinuedInstruction.JsrInstruction of(Opcode op, Label target)
- Примечание API:
- Явный аргумент
opпозволяет создавать инструкцииjsr_w, чтобы избежать коротких переходов. - Параметры:
-
op— код операции для конкретного типа инструкции перехода к подпрограмме; он должен иметь видOpcode.Kind.DISCONTINUED_JSR -
target— метка цели подпрограммы - Возвращает:
- инструкцию перехода к подпрограмме
- Вызывает исключение:
-
IllegalArgumentException— если код операции не имеет видOpcode.Kind.DISCONTINUED_JSR.
of
static DiscontinuedInstruction.JsrInstruction of(Label target)
- Параметры:
-
target— метка цели подпрограммы - Возвращает:
- инструкцию перехода к подпрограмме
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.