Spec-Zone.ru › OpenJDK 27

Интерфейс 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
См. также:
  • Opcode.Kind.DISCONTINUED_JSR
  • 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.JsrInstruction of(Label target)
Возвращает инструкцию перехода к подпрограмме.
static DiscontinuedInstruction.JsrInstruction of(Opcode op, Label target)
Возвращает инструкцию перехода к подпрограмме.
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 — метка цели подпрограммы
Возвращает:
инструкцию перехода к подпрограмме

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по 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