Spec-Zone.ru › OpenJDK 25

Интерфейс 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 должно находиться в пределах [0, 65535].

Последовательности инструкций 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 DiscontinuedInstruction.RetInstruction of(int slot)
Возвращает инструкцию возврата из подпрограммы.
static DiscontinuedInstruction.RetInstruction of(Opcode op, int slot)
Возвращает инструкцию возврата из подпрограммы.
int slot()
Возвращает слот локальной переменной с адресом возврата.

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

opcode, sizeInBytes

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

slot

int slot()
Возвращает слот локальной переменной с адресом возврата. Значение находится в пределах [0, 65535].
Возвращает:
слот локальной переменной с адресом возврата

of

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

slot должно находиться в замкнутом диапазоне [0, 255] для ret или в пределах [0, 65535] для 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 должно находиться в пределах [0, 65535].

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

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/classfile/instruction/DiscontinuedInstruction.RetInstruction.html

Spec-Zone.ru

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