Spec-Zone.ru › OpenJDK 27

Интерфейс DiscontinuedInstruction.RetInstruction

Все суперинтерфейсы:
ClassFileElement, CodeElement, DiscontinuedInstruction, Instruction
Внешний интерфейс:
DiscontinuedInstruction
public static sealed interface DiscontinuedInstruction.RetInstruction extends DiscontinuedInstruction
Моделирует инструкции возврата из подпрограмм, исключённые из массива code атрибута Code начиная с основной версии файла класса 51 (JVMS §4.9.1). Соответствующие коды операций имеют вид Opcode.Kind.DISCONTINUED_RET. Возвращается как CodeElement при обходе элементов CodeModel.

Инструкция возврата из подпрограммы является составной:

RetInstruction(int slot)
где slot должно быть u2.

Серия инструкций astore сохраняет значение returnAddress в слот локальной переменной, делая этот слот доступным для инструкции возврата из подпрограммы.

Примечание API:
Инструкции возврата из подпрограмм исключены, чтобы обеспечить проверку типов (JVMS §4.10.1) с помощью атрибута StackMapTable.
См. Спецификация виртуальной машины Java:
6.5.ret ret
Начиная с:
24
См. также:
  • Opcode.Kind.DISCONTINUED_RET
  • StackMapTableAttribute

Краткое описание вложенных классов

Вложенные классы и интерфейсы, объявленные в интерфейсе DiscontinuedInstruction

DiscontinuedInstruction.JsrInstruction, DiscontinuedInstruction.RetInstruction
Модификатор и тип Интерфейс Описание
static interface  DiscontinuedInstruction.JsrInstruction
Моделирует инструкции перехода к подпрограмме, исключённые из массива code атрибута Code начиная с основной версии файла класса 51 (JVMS §4.9.1).
static interface  DiscontinuedInstruction.RetInstruction
Моделирует инструкции возврата из подпрограмм, исключённые из массива code атрибута Code начиная с основной версии файла класса 51 (JVMS §4.9.1).

Краткое описание методов

Модификатор и тип Метод Описание
static DiscontinuedInstruction.RetInstruction of(int slot)
Возвращает инструкцию возврата из подпрограммы.
static DiscontinuedInstruction.RetInstruction of(Opcode op, int slot)
Возвращает инструкцию возврата из подпрограммы.
int slot()
Возвращает слот локальной переменной, содержащий адрес возврата.

Методы, объявленные в интерфейсе Instruction

opcode, sizeInBytes
Модификатор и тип Метод Описание
Opcode opcode()
Возвращает операцию этой инструкции.
int sizeInBytes()
Возвращает размер этой инструкции в байтах.

Подробное описание методов

slot

int slot()
Возвращает слот локальной переменной, содержащий адрес возврата. Это значение u2.
Возвращает:
слот локальной переменной, содержащий адрес возврата

of

static DiscontinuedInstruction.RetInstruction of(Opcode op, int slot)
Возвращает инструкцию возврата из подпрограммы.

slot должно быть u1 для ret или u2 для wide ret.

Примечание API:
Явный аргумент op позволяет создавать инструкции wide ret с slot в диапазоне обычных инструкций ret.
Параметры:
op — код операции для конкретного типа инструкции возврата из подпрограммы; он должен иметь вид Opcode.Kind.DISCONTINUED_RET
slot — слот локальной переменной, из которого загружается адрес возврата
Возвращает:
инструкцию возврата из подпрограммы
Вызывает исключение:
IllegalArgumentException — если вид кода операции не равен Opcode.Kind.DISCONTINUED_RET или slot находится вне допустимого диапазона

of

static DiscontinuedInstruction.RetInstruction of(int slot)
Возвращает инструкцию возврата из подпрограммы.

slot должно быть u2.

Параметры:
slot — слот локальной переменной, из которого загружается адрес возврата
Возвращает:
инструкцию возврата из подпрограммы
Вызывает исключение:
IllegalArgumentException — если slot не является u2

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её дочерних компаний в США и других странах.
Авторское право © 1993, 2026, Oracle и/или её дочерние компании, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API