Интерфейс ConstantInstruction
- Все суперинтерфейсы:
ClassFileElement, CodeElement, Instruction
- Все известные подинтерфейсы:
ConstantInstruction.ArgumentConstantInstruction, ConstantInstruction.IntrinsicConstantInstruction, ConstantInstruction.LoadConstantInstruction
public sealed interface ConstantInstruction extends Instruction permits ConstantInstruction.IntrinsicConstantInstruction, ConstantInstruction.ArgumentConstantInstruction, ConstantInstruction.LoadConstantInstruction
Моделирует инструкцию загрузки константы в массиве
code атрибута
Code, включая «встроенные», «аргументные» и «загружающие» инструкции констант. Соответствующие коды операций имеют тип Opcode.Kind.CONSTANT. Передаётся как CodeElement при обходе элементов CodeModel. Загружаемое значение константы символически представлено как ConstantDesc:
ConstantInstruction(ConstantDesc constantValue)
Краткое описание вложенных классов
| Модификатор и тип | Интерфейс | Описание |
|---|---|---|
static interface |
ConstantInstruction.ArgumentConstantInstruction |
Моделирует инструкцию «аргументная константа», которая непосредственно кодирует значение константы в инструкции. |
static interface |
ConstantInstruction.IntrinsicConstantInstruction |
Моделирует инструкцию «встроенная константа», которая кодирует значение константы в своём коде операции. |
static interface |
ConstantInstruction.LoadConstantInstruction |
Моделирует инструкцию «загрузка константы», которая кодирует значение константы в пуле констант. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
ConstantDesc |
constantValue() |
Возвращает значение константы. |
static ConstantInstruction.ArgumentConstantInstruction |
ofArgument |
Возвращает инструкцию аргументной константы. |
static ConstantInstruction.IntrinsicConstantInstruction |
ofIntrinsic |
Возвращает инструкцию встроенной константы. |
static ConstantInstruction.LoadConstantInstruction |
ofLoad |
Возвращает инструкцию загрузки константы. |
TypeKind |
typeKind() |
Возвращает вычислительный тип константы. |
Методы, объявленные в интерфейсе Instruction
opcode, sizeInBytes | Модификатор и тип | Метод | Описание |
|---|---|---|
Opcode |
opcode() |
Возвращает операцию этой инструкции. |
int |
sizeInBytes() |
Возвращает размер этой инструкции в байтах. |
Подробное описание методов
constantValue
ConstantDesc constantValue()
Возвращает значение константы.
- Возвращает:
- значение константы
typeKind
TypeKind typeKind()
Возвращает вычислительный тип константы. Он определяется на основе
constantValue.- Возвращает:
- вычислительный тип константы
ofIntrinsic
static ConstantInstruction.IntrinsicConstantInstruction ofIntrinsic(Opcode op)
Возвращает инструкцию встроенной константы.
- Параметры:
-
op— код операции для конкретного типа инструкции встроенной константы; его тип должен бытьOpcode.Kind.CONSTANT - Возвращает:
- инструкцию встроенной константы
- Вызывает исключение:
-
IllegalArgumentException— если код операции не представляет константу с неявным значением
ofArgument
static ConstantInstruction.ArgumentConstantInstruction ofArgument(Opcode op, int value)
Возвращает инструкцию аргументной константы.
value должно находиться в диапазоне от byte до [-128, 127] для Opcode.BIPUSH и в диапазоне от short до
[-32768, 32767] для Opcode.SIPUSH.
- Параметры:
-
op— код операции для конкретного типа инструкции аргументной константы; им должен бытьOpcode.BIPUSHилиOpcode.SIPUSH -
value— значение константы - Возвращает:
- инструкцию аргументной константы
- Вызывает исключение:
-
IllegalArgumentException— если код операции не являетсяOpcode.BIPUSHилиOpcode.SIPUSHлибо если значение константы выходит за допустимый для кода операции диапазон
ofLoad
static ConstantInstruction.LoadConstantInstruction ofLoad(Opcode op, LoadableConstantEntry constant)
Возвращает инструкцию загрузки константы.
- Параметры:
-
op— код операции для конкретного типа инструкции загрузки константы; его тип должен бытьOpcode.Kind.CONSTANT -
constant— значение константы - Возвращает:
- инструкцию загрузки константы
- Вызывает исключение:
-
IllegalArgumentException— если код операции не являетсяOpcode.LDC,Opcode.LDC_WилиOpcode.LDC2_W
© 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.