Интерфейс CodeBuilder
- Все суперинтерфейсы:
ClassFileBuilder<CodeElement, CodeBuilder>, Consumer<CodeElement>
- Все известные подинтерфейсы:
CodeBuilder.BlockCodeBuilder
public sealed interface CodeBuilder extends ClassFileBuilder<CodeElement, CodeBuilder> permits CodeBuilder.BlockCodeBuilder (not exhaustive)
Code (тел методов). MethodBuilder.withCode(Consumer) — основной способ получить построитель кода; ClassBuilder.withMethodBody(Utf8Entry, Utf8Entry, int, Consumer) — это сокращённый вариант. Также существуют производные построители кода: block(Consumer), который обрабатывает блоки кода, и transforming(CodeTransform, Consumer), который применяет преобразования к существующим обработчикам; для обоих сначала требуется наличие построителя кода. Общие рекомендации и предостережения по использованию построителей для структур в формате файла class см. в ClassFileBuilder. В отличие от других построителей, порядок элементов в построителе кода имеет значение: он влияет на результирующий байт-код. Многие параметры Class-File API влияют на построители кода: ClassFile.DeadCodeOption и ClassFile.ShortJumpsOption влияют на результирующий байт-код, а ClassFile.DeadLabelsOption, ClassFile.DebugElementsOption, ClassFile.LineNumbersOption, ClassFile.StackMapsOption и ClassFile.AttributesProcessingOption влияют на результирующие атрибуты, добавляемые в построенный атрибут Code; некоторые элементы, переданные построителю кода, в противном случае игнорируются.
Фабрики инструкций
CodeBuilder предоставляет удобные методы для создания инструкций по их мнемоникам с передачей необходимых операндов (см. инструкции JVMS §6.5). - Для инструкций, кодирующих операнды в своём коде операции, таких как
aload_<n>, используются те же фабрики, что и для их обобщённых версий, напримерaload. Обратите внимание, что для некоторых инструкций-констант, таких какiconst_1, обобщённых версий нет, поэтому для них предусмотрены собственные фабрики. - Для инструкций, принимающих широкие операнды, таких как
ldc2_wилиwide, используются те же фабрики, что и для обычных версий, напримерldc(ConstantDesc). Обратите внимание, что дляgoto_wпредусмотрена собственная фабрика, чтобы избежать коротких переходов. - Фабрики инструкций
goto,instanceof,newиreturnназываются соответственноgoto_,instanceOf,new_иreturn_из-за совпадения с ключевыми словами языка программирования Java. - Фабрики не предоставляются для инструкций
jsr,jsr_w,retиwide ret, которые не могут присутствовать в файлах классов с основной версией 51 или выше. (JVMS §4.9.1) Их всё ещё можно передать с помощьюClassFileBuilder.with(E).
- Начиная с версии:
- 24
- См. также:
Краткое описание вложенных классов
| Модификатор и тип | Интерфейс | Описание |
|---|---|---|
static interface |
CodeBuilder.BlockCodeBuilder |
Построитель блоков кода. |
static interface |
CodeBuilder.CatchBuilder |
Построитель для добавления блоков catch. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
default CodeBuilder |
aaload() |
Генерирует инструкцию для загрузки из массива reference. |
default CodeBuilder |
aastore() |
Генерирует инструкцию для сохранения в массив reference. |
default CodeBuilder |
aconst_null() |
Генерирует инструкцию, помещающую нулевой объект reference в стек операндов. |
int |
allocateLocal |
Возвращает слот локальной переменной для новой локальной переменной. |
default CodeBuilder |
aload |
Генерирует инструкцию для загрузки reference из локальной переменной. |
default CodeBuilder |
anewarray |
Генерирует инструкцию для создания нового массива reference. |
default CodeBuilder |
anewarray |
Генерирует инструкцию для создания нового массива reference. |
default CodeBuilder |
areturn() |
Генерирует инструкцию для возврата reference из этого метода. |
default CodeBuilder |
arraylength() |
Генерирует инструкцию для получения длины массива. |
default CodeBuilder |
arrayLoad |
Генерирует инструкцию для загрузки из массива. |
default CodeBuilder |
arrayStore |
Генерирует инструкцию для сохранения в массив. |
default CodeBuilder |
astore |
Генерирует инструкцию для сохранения reference в локальной переменной. |
default CodeBuilder |
athrow() |
Генерирует инструкцию для выбрасывания исключения или ошибки. |
default CodeBuilder |
baload() |
|
default CodeBuilder |
bastore() |
|
default CodeBuilder |
bipush |
|
default CodeBuilder |
block |
Добавляет лексический блок в создаваемый метод. |
default CodeBuilder |
branch |
Генерирует инструкцию ветвления. |
default CodeBuilder |
caload() |
Генерирует инструкцию для загрузки из массива char. |
default CodeBuilder |
castore() |
Генерирует инструкцию для сохранения в массив char. |
default CodeBuilder |
characterRange |
Объявляет запись диапазона символов. |
default CodeBuilder |
checkcast |
Генерирует инструкцию для проверки, принадлежит ли объект указанному типу; если проверка не пройдена, выбрасывается ClassCastException. |
default CodeBuilder |
checkcast |
Генерирует инструкцию для проверки, принадлежит ли объект указанному типу; если проверка не пройдена, выбрасывается ClassCastException. |
default CodeBuilder |
conversion |
Генерирует инструкцию (инструкции) для преобразования fromType в toType. |
default CodeBuilder |
d2f() |
|
default CodeBuilder |
d2i() |
|
default CodeBuilder |
d2l() |
|
default CodeBuilder |
dadd() |
Генерирует инструкцию для сложения двух значений doubles. |
default CodeBuilder |
daload() |
Генерирует инструкцию для загрузки из массива double. |
default CodeBuilder |
dastore() |
Генерирует инструкцию для сохранения в массив double. |
default CodeBuilder |
dcmpg() |
|
default CodeBuilder |
dcmpl() |
|
default CodeBuilder |
dconst_0() |
Генерирует инструкцию, помещающую константу double со значением 0 в стек операндов. |
default CodeBuilder |
dconst_1() |
Генерирует инструкцию, помещающую константу double со значением 1 в стек операндов. |
default CodeBuilder |
ddiv() |
Генерирует инструкцию для деления значений doubles. |
default CodeBuilder |
dload |
Генерирует инструкцию для загрузки значения double из локальной переменной. |
default CodeBuilder |
dmul() |
Генерирует инструкцию для умножения значений doubles. |
default CodeBuilder |
dneg() |
Генерирует инструкцию для смены знака значения double. |
default CodeBuilder |
drem() |
Генерирует инструкцию для вычисления остатка от деления значений double. |
default CodeBuilder |
dreturn() |
Генерирует инструкцию для возврата значения double из этого метода. |
default CodeBuilder |
dstore |
Генерирует инструкцию для сохранения значения double в локальной переменной. |
default CodeBuilder |
dsub() |
Генерирует инструкцию для вычитания значений doubles. |
default CodeBuilder |
dup() |
Генерирует инструкцию для дублирования верхнего значения стека операндов. |
default CodeBuilder |
dup_x1() |
Генерирует инструкцию для дублирования верхнего значения стека операндов и вставки его на две позиции ниже. |
default CodeBuilder |
dup_x2() |
Генерирует инструкцию для дублирования верхнего значения стека операндов и вставки его на две или три позиции ниже. |
default CodeBuilder |
dup2() |
Генерирует инструкцию для дублирования одного или двух верхних значений стека операндов. |
default CodeBuilder |
dup2_x1() |
Генерирует инструкцию для дублирования одного или двух верхних значений стека операндов и вставки их на две или три позиции ниже. |
default CodeBuilder |
dup2_x2() |
Генерирует инструкцию для дублирования одного или двух верхних значений стека операндов и вставки их на две, три или четыре позиции ниже. |
Label |
endLabel() |
Возвращает метку, связанную с концом текущего блока. |
default CodeBuilder |
exceptionCatch |
Объявляет запись таблицы исключений. |
default CodeBuilder |
exceptionCatch |
Объявляет запись таблицы исключений. |
default CodeBuilder |
exceptionCatch |
Объявляет запись таблицы исключений. |
default CodeBuilder |
exceptionCatchAll |
Объявляет запись таблицы исключений, перехватывающую все исключения и ошибки. |
default CodeBuilder |
f2d() |
|
default CodeBuilder |
f2i() |
|
default CodeBuilder |
f2l() |
|
default CodeBuilder |
fadd() |
Генерирует инструкцию для сложения двух значений floats. |
default CodeBuilder |
faload() |
Генерирует инструкцию для загрузки из массива float. |
default CodeBuilder |
fastore() |
Генерирует инструкцию для сохранения в массив float. |
default CodeBuilder |
fcmpg() |
|
default CodeBuilder |
fcmpl() |
|
default CodeBuilder |
fconst_0() |
Генерирует инструкцию, помещающую константу float со значением 0 в стек операндов. |
default CodeBuilder |
fconst_1() |
Генерирует инструкцию, помещающую константу float со значением 1 в стек операндов. |
default CodeBuilder |
fconst_2() |
Генерирует инструкцию, помещающую константу float со значением 2 в стек операндов. |
default CodeBuilder |
fdiv() |
Генерирует инструкцию для деления значений floats. |
default CodeBuilder |
fieldAccess |
Генерирует инструкцию для доступа к полю. |
default CodeBuilder |
fieldAccess |
Генерирует инструкцию для доступа к полю. |
default CodeBuilder |
fload |
Генерирует инструкцию для загрузки значения float из локальной переменной. |
default CodeBuilder |
fmul() |
Генерирует инструкцию для умножения значений floats. |
default CodeBuilder |
fneg() |
Генерирует инструкцию для смены знака значения float. |
default CodeBuilder |
frem() |
Генерирует инструкцию для вычисления остатка от деления значений floats. |
default CodeBuilder |
freturn() |
Генерирует инструкцию для возврата значения float из этого метода. |
default CodeBuilder |
fstore |
Генерирует инструкцию для сохранения значения float в локальной переменной. |
default CodeBuilder |
fsub() |
Генерирует инструкцию для вычитания значений floats. |
default CodeBuilder |
getfield |
Генерирует инструкцию для получения поля объекта. |
default CodeBuilder |
getfield |
Генерирует инструкцию для получения поля объекта. |
default CodeBuilder |
getstatic |
Генерирует инструкцию для получения статического поля класса или интерфейса. |
default CodeBuilder |
getstatic |
Генерирует инструкцию для получения статического поля класса или интерфейса. |
default CodeBuilder |
goto_ |
Генерирует инструкцию для безусловного перехода. |
default CodeBuilder |
goto_w |
Генерирует инструкцию для безусловного перехода с широким индексом. |
default CodeBuilder |
i2b() |
|
default CodeBuilder |
i2c() |
|
default CodeBuilder |
i2d() |
|
default CodeBuilder |
i2f() |
|
default CodeBuilder |
i2l() |
|
default CodeBuilder |
i2s() |
|
default CodeBuilder |
iadd() |
Генерирует инструкцию для сложения двух значений ints. |
default CodeBuilder |
iaload() |
Генерирует инструкцию для загрузки из массива int. |
default CodeBuilder |
iand() |
|
default CodeBuilder |
iastore() |
Генерирует инструкцию для сохранения в массив int. |
default CodeBuilder |
iconst_0() |
Генерирует инструкцию, помещающую константу int со значением 0 в стек операндов. |
default CodeBuilder |
iconst_1() |
Генерирует инструкцию, помещающую константу int со значением 1 в стек операндов. |
default CodeBuilder |
iconst_2() |
Генерирует инструкцию, помещающую константу int со значением 2 в стек операндов. |
default CodeBuilder |
iconst_3() |
Генерирует инструкцию, помещающую константу int со значением 3 в стек операндов. |
default CodeBuilder |
iconst_4() |
Генерирует инструкцию, помещающую константу int со значением 4 в стек операндов. |
default CodeBuilder |
iconst_5() |
Генерирует инструкцию, помещающую константу int со значением 5 в стек операндов. |
default CodeBuilder |
iconst_m1() |
Генерирует инструкцию, помещающую константу int со значением -1 в стек операндов. |
default CodeBuilder |
idiv() |
Генерирует инструкцию для деления значений ints. |
default CodeBuilder |
if_acmpeq |
Генерирует инструкцию для перехода, если сравнение reference operand1 == operand2 выполнено. |
default CodeBuilder |
if_acmpne |
Генерирует инструкцию для перехода, если сравнение reference operand1 != operand2 выполнено. |
default CodeBuilder |
if_icmpeq |
Генерирует инструкцию для перехода, если сравнение int operand1 == operand2 выполнено. |
default CodeBuilder |
if_icmpge |
Генерирует инструкцию для перехода, если сравнение int operand1 >= operand2 выполнено. |
default CodeBuilder |
if_icmpgt |
Генерирует инструкцию для перехода, если сравнение int operand1 > operand2 выполнено. |
default CodeBuilder |
if_icmple |
Генерирует инструкцию для перехода, если сравнение int operand1 <= operand2 выполнено. |
default CodeBuilder |
if_icmplt |
Генерирует инструкцию для перехода, если сравнение int operand1 < operand2 выполнено. |
default CodeBuilder |
if_icmpne |
Генерирует инструкцию для перехода, если сравнение int operand1 != operand2 выполнено. |
default CodeBuilder |
ifeq |
Генерирует инструкцию для перехода, если сравнение int с нулём == 0 выполнено. |
default CodeBuilder |
ifge |
Генерирует инструкцию для перехода, если сравнение int с нулём >= 0 выполнено. |
default CodeBuilder |
ifgt |
Генерирует инструкцию для перехода, если сравнение int с нулём > 0 выполнено. |
default CodeBuilder |
ifle |
Генерирует инструкцию для перехода, если сравнение int с нулём <= 0 выполнено. |
default CodeBuilder |
iflt |
Генерирует инструкцию для перехода, если сравнение int с нулём < 0 выполнено. |
default CodeBuilder |
ifne |
Генерирует инструкцию для перехода, если сравнение int с нулём != 0 выполнено. |
default CodeBuilder |
ifnonnull |
Генерирует инструкцию для перехода, если reference не равно null. |
default CodeBuilder |
ifnull |
Генерирует инструкцию для перехода, если reference равно null. |
default CodeBuilder |
ifThen |
Добавляет блок «если — то», условие выполнения которого определяется значением (значениями) на вершине стека операндов в соответствии с заданным кодом операции. |
default CodeBuilder |
ifThen |
Добавляет блок «если — то», условие выполнения которого определяется значением boolean на вершине стека операндов. |
default CodeBuilder |
ifThenElse |
Добавляет блок «если — то — иначе», условие выполнения которого определяется значением (значениями) на вершине стека операндов в соответствии с заданным кодом операции. |
default CodeBuilder |
ifThenElse |
Добавляет блок «если — то — иначе», условие выполнения которого определяется значением boolean на вершине стека операндов. |
default CodeBuilder |
iinc |
Генерирует инструкцию для увеличения локальной переменной int на константу. |
default CodeBuilder |
iload |
Генерирует инструкцию для загрузки значения int из локальной переменной. |
default CodeBuilder |
imul() |
Генерирует инструкцию для умножения значений ints. |
default CodeBuilder |
ineg() |
Генерирует инструкцию для смены знака значения int. |
default CodeBuilder |
instanceOf |
Генерирует инструкцию для проверки, принадлежит ли объект указанному типу, помещая результат boolean в стек операндов. |
default CodeBuilder |
instanceOf |
Генерирует инструкцию для проверки, принадлежит ли объект указанному типу, помещая результат boolean в стек операндов. |
default CodeBuilder |
invoke |
Генерирует инструкцию для вызова метода. |
default CodeBuilder |
invoke |
Генерирует инструкцию для вызова метода. |
default CodeBuilder |
invokedynamic |
Генерирует инструкцию для вызова динамически вычисляемой точки вызова. |
default CodeBuilder |
invokedynamic |
Генерирует инструкцию для вызова динамически вычисляемой точки вызова. |
default CodeBuilder |
invokeinterface |
Генерирует инструкцию для вызова метода интерфейса. |
default CodeBuilder |
invokeinterface |
Генерирует инструкцию для вызова метода интерфейса. |
default CodeBuilder |
invokespecial |
Генерирует инструкцию для вызова метода экземпляра интерфейса; прямой вызов методов текущего класса и его суперклассов. |
default CodeBuilder |
invokespecial |
Генерирует инструкцию для вызова метода экземпляра класса; прямой вызов методов инициализации экземпляра, а также методов текущего класса и его суперклассов. |
default CodeBuilder |
invokespecial |
Генерирует инструкцию для вызова метода экземпляра класса; прямой вызов методов инициализации экземпляра, а также методов текущего класса и его суперклассов. |
default CodeBuilder |
invokespecial |
Генерирует инструкцию для вызова метода экземпляра; прямой вызов методов инициализации экземпляра, а также методов текущего класса и его суперклассов. |
default CodeBuilder |
invokestatic |
Генерирует инструкцию для вызова метода класса (статического метода) интерфейса. |
default CodeBuilder |
invokestatic |
Создает инструкцию для вызова метода класса (статического) класса. |
default CodeBuilder |
invokestatic |
Создает инструкцию для вызова метода класса (статического) класса. |
default CodeBuilder |
invokestatic |
Создает инструкцию для вызова метода класса (статического). |
default CodeBuilder |
invokevirtual |
Создает инструкцию для вызова метода экземпляра; диспетчеризация выполняется на основе класса. |
default CodeBuilder |
invokevirtual |
Создает инструкцию для вызова метода экземпляра; диспетчеризация выполняется на основе класса. |
default CodeBuilder |
ior() |
|
default CodeBuilder |
irem() |
Создает инструкцию для вычисления остатка от деления ints. |
default CodeBuilder |
ireturn() |
Создает инструкцию для возврата int из этого метода. |
default CodeBuilder |
ishl() |
Создает инструкцию для сдвига int влево. |
default CodeBuilder |
ishr() |
Создает инструкцию для сдвига int вправо. |
default CodeBuilder |
istore |
Создает инструкцию для сохранения int в локальную переменную. |
default CodeBuilder |
isub() |
Создает инструкцию для вычитания ints. |
default CodeBuilder |
iushr() |
Создает инструкцию для логического сдвига int вправо. |
default CodeBuilder |
ixor() |
Создает инструкцию для вычисления побитового XOR для ints. |
default CodeBuilder |
l2d() |
|
default CodeBuilder |
l2f() |
|
default CodeBuilder |
l2i() |
|
default CodeBuilder |
labelBinding |
Связывает метку с текущей позицией. |
default CodeBuilder |
ladd() |
Создает инструкцию для сложения двух значений longs. |
default CodeBuilder |
laload() |
Создает инструкцию для загрузки значения из массива long. |
default CodeBuilder |
land() |
Создает инструкцию для вычисления побитового AND для longs. |
default CodeBuilder |
lastore() |
Создает инструкцию для сохранения значения в массив long. |
default CodeBuilder |
lcmp() |
Создает инструкцию для сравнения значений longs. |
default CodeBuilder |
lconst_0() |
Создает инструкцию, помещающую константу long со значением 0 в стек операндов. |
default CodeBuilder |
lconst_1() |
Создает инструкцию, помещающую константу long со значением 1 в стек операндов. |
default CodeBuilder |
ldc |
Создает инструкцию, помещающую элемент из пула констант времени выполнения в стек операндов. |
default CodeBuilder |
ldc |
Создает инструкцию, помещающую элемент из пула констант времени выполнения в стек операндов. |
default CodeBuilder |
ldiv() |
Создает инструкцию для деления значений longs. |
default CodeBuilder |
lineNumber |
Объявляет номер строки исходного кода, начинающейся в текущей позиции. |
default CodeBuilder |
lload |
Создает инструкцию для загрузки значения long из локальной переменной. |
default CodeBuilder |
lmul() |
Создает инструкцию для умножения значений longs. |
default CodeBuilder |
lneg() |
Создает инструкцию для смены знака значения long. |
default CodeBuilder |
loadConstant |
Создает инструкцию, помещающую константное значение double в стек операндов. |
default CodeBuilder |
loadConstant |
Создает инструкцию, помещающую константное значение float в стек операндов. |
default CodeBuilder |
loadConstant |
Создает инструкцию, помещающую константное значение int в стек операндов. |
default CodeBuilder |
loadConstant |
Создает инструкцию, помещающую константное значение long в стек операндов. |
default CodeBuilder |
loadConstant |
Создает инструкцию, помещающую константу в стек операндов. |
default CodeBuilder |
loadLocal |
Создает инструкцию для загрузки значения из локальной переменной. |
default CodeBuilder |
localVariable |
Объявляет запись локальной переменной. |
default CodeBuilder |
localVariable |
Объявляет запись локальной переменной. |
default CodeBuilder |
localVariableType |
Объявляет запись типа локальной переменной. |
default CodeBuilder |
localVariableType |
Объявляет запись типа локальной переменной. |
default CodeBuilder |
lookupswitch |
Создает инструкцию для обращения к таблице переходов по совпадению ключа и выполнения перехода. |
default CodeBuilder |
lor() |
Создает инструкцию для вычисления побитового OR для longs. |
default CodeBuilder |
lrem() |
Создает инструкцию для вычисления остатка от деления longs. |
default CodeBuilder |
lreturn() |
Создает инструкцию для возврата значения long из этого метода. |
default CodeBuilder |
lshl() |
Создает инструкцию для сдвига значения long влево. |
default CodeBuilder |
lshr() |
Создает инструкцию для сдвига значения long вправо. |
default CodeBuilder |
lstore |
Создает инструкцию для сохранения значения long в локальную переменную. |
default CodeBuilder |
lsub() |
Создает инструкцию для вычитания значений longs. |
default CodeBuilder |
lushr() |
Создает инструкцию для логического сдвига значения long вправо. |
default CodeBuilder |
lxor() |
Создает инструкцию для вычисления побитового XOR для longs. |
default CodeBuilder |
monitorenter() |
Создает инструкцию для входа в монитор объекта. |
default CodeBuilder |
monitorexit() |
Создает инструкцию для выхода из монитора объекта. |
default CodeBuilder |
multianewarray |
Создает инструкцию для создания нового многомерного массива. |
default CodeBuilder |
multianewarray |
Создает инструкцию для создания нового многомерного массива. |
default CodeBuilder |
new_ |
Создает инструкцию для создания нового объекта. |
default CodeBuilder |
new_ |
Создает инструкцию для создания нового объекта. |
default CodeBuilder |
newarray |
Создает инструкцию для создания нового массива примитивного типа. |
default Label |
newBoundLabel() |
Создает новую метку, связанную с текущей позицией. |
Label |
newLabel() |
Возвращает новую несвязанную метку. |
default CodeBuilder |
nop() |
Создает инструкцию, не выполняющую никаких действий. |
int |
parameterSlot |
Возвращает слот локальной переменной, связанный с указанным параметром. |
default CodeBuilder |
pop() |
Создает инструкцию для извлечения верхнего значения из стека операндов. |
default CodeBuilder |
pop2() |
Создает инструкцию для извлечения одного или двух верхних значений из стека операндов. |
default CodeBuilder |
putfield |
Создает инструкцию для установки поля объекта. |
default CodeBuilder |
putfield |
Создает инструкцию для установки поля объекта. |
default CodeBuilder |
putstatic |
Создает инструкцию для установки статического поля класса. |
default CodeBuilder |
putstatic |
Создает инструкцию для установки статического поля класса. |
int |
receiverSlot() |
Возвращает слот локальной переменной, связанный с получателем. |
default CodeBuilder |
return_() |
Создает инструкцию для возврата void из этого метода. |
default CodeBuilder |
return_ |
Создает инструкцию возврата. |
default CodeBuilder |
saload() |
Создает инструкцию для загрузки значения из массива short. |
default CodeBuilder |
sastore() |
Создает инструкцию для сохранения значения в массив short. |
default CodeBuilder |
sipush |
|
Label |
startLabel() |
Возвращает метку, связанную с началом текущего блока. |
default CodeBuilder |
storeLocal |
Создает инструкцию для сохранения значения в локальную переменную. |
default CodeBuilder |
swap() |
Создает инструкцию для обмена местами двух верхних значений в стеке операндов. |
default CodeBuilder |
tableswitch |
Создает инструкцию для обращения к таблице переходов по индексу и выполнения перехода. |
default CodeBuilder |
tableswitch |
Создает инструкцию для обращения к таблице переходов по индексу и выполнения перехода. |
default CodeBuilder |
transforming |
Применяет преобразование к коду, созданному обработчиком, направляя результаты этому построителю. |
default CodeBuilder |
trying |
Добавляет блок «try-catch», состоящий из одного блока try и нуля или более блоков catch. |
Методы, объявленные в интерфейсе ClassFileBuilder
accept, constantPool, transform, with | Модификатор и тип | Метод | Описание |
|---|---|---|
default void |
accept |
Включает элемент-член в создаваемую структуру. |
ConstantPoolBuilder |
constantPool() |
Возвращает построитель пула констант, связанный с этим построителем. |
default CodeBuilder |
transform |
Применяет преобразование к составной структуре, направляя результаты этому построителю. |
CodeBuilder |
with |
Включает элемент-член в создаваемую структуру. |
Методы, объявленные в интерфейсе Consumer
andThen | Модификатор и тип | Метод | Описание |
|---|---|---|
default Consumer |
andThen |
Возвращает составной Consumer, который последовательно выполняет эту операцию, а затем операцию after. |
Подробное описание методов
newLabel
Label newLabel()
labelBinding(Label).- Возвращает:
- новую несвязанную метку
startLabel
Label startLabel()
block(Consumer) или ifThenElse(Consumer, Consumer), текущим блоком будет всё тело метода.- Возвращает:
- метку, связанную с началом текущего блока
endLabel
Label endLabel()
block(Consumer) или ifThenElse(Consumer, Consumer), текущим блоком будет всё тело метода.- Возвращает:
- метку, связанную с концом текущего блока
receiverSlot
int receiverSlot()
- Возвращает:
- слот локальной переменной, связанный с получателем
- Вызывает исключение:
-
IllegalStateException— если это статический метод
parameterSlot
int parameterSlot(int paramNo)
long и double занимают два слота.- Параметры:
-
paramNo— индекс параметра - Возвращает:
- слот локальной переменной, связанный с указанным параметром
- Вызывает исключение:
-
IndexOutOfBoundsException— если индекс параметра выходит за допустимые границы
allocateLocal
int allocateLocal(TypeKind typeKind)
maxLocals исходного метода. Для метода, создаваемого напрямую, новые локальные переменные начинаются после последнего слота параметра. Если текущий построитель кода является CodeBuilder.BlockCodeBuilder, в конце блока локальные переменные возвращаются к значениям, которые у них были в начале блока.
- Параметры:
-
typeKind— тип локальной переменной - Возвращает:
- слот локальной переменной для новой локальной переменной
transforming
default CodeBuilder transforming(CodeTransform transform, Consumer<CodeBuilder> handler)
- Примечание API:
- Это аналогично
ClassFileBuilder.transform(CompoundElement, ClassFileTransform), но для этого не требуется предварительно представлять элементы кода в видеCodeModel. - Параметры:
-
transform— преобразование, применяемое к коду, создаваемому обработчиком -
handler— обработчик, получающийCodeBuilderдля создания кода - Возвращает:
- этот построитель
block
default CodeBuilder block(Consumer<CodeBuilder.BlockCodeBuilder> handler)
Внутри этого блока startLabel() и endLabel() соответствуют началу и концу блока, а CodeBuilder.BlockCodeBuilder.breakLabel() также соответствует концу блока, то есть позиции курсора сразу после этого вызова в данном построителе.
- Параметры:
-
handler— обработчик, получающийCodeBuilder.BlockCodeBuilderдля создания тела лексического блока - Возвращает:
- этот построитель
ifThen
default CodeBuilder ifThen(Consumer<CodeBuilder.BlockCodeBuilder> thenHandler)
boolean на вершине стека операндов. Поток управления переходит в блок «then», если значение представляет собой true. CodeBuilder.BlockCodeBuilder.breakLabel() блока «then» соответствует позиции курсора сразу после этого вызова в данном построителе.
- Параметры:
-
thenHandler— обработчик, получающий CodeBuilder.BlockCodeBuilder для создания телаif - Возвращает:
- этот построитель
- См. также:
ifThen
default CodeBuilder ifThen(Opcode opcode, Consumer<CodeBuilder.BlockCodeBuilder> thenHandler)
opcode выполняется. CodeBuilder.BlockCodeBuilder.breakLabel() блока «then» соответствует позиции курсора сразу после этого вызова в данном построителе.
- Параметры:
-
opcode— код операции для инструкции перехода, принимающей один или два операнда в стеке -
thenHandler— обработчик, получающийCodeBuilder.BlockCodeBuilderдля создания телаif - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— если код операции не предназначен для инструкции перехода, принимающей один или два операнда
ifThenElse
default CodeBuilder ifThenElse(Consumer<CodeBuilder.BlockCodeBuilder> thenHandler, Consumer<CodeBuilder.BlockCodeBuilder> elseHandler)
boolean на вершине стека операндов. Поток управления переходит в блок «then», если значение представляет собой true, и в противном случае переходит в блок «else». CodeBuilder.BlockCodeBuilder.breakLabel() каждого блока соответствует позиции курсора сразу после этого вызова в данном построителе.
- Параметры:
-
thenHandler— обработчик, получающийCodeBuilder.BlockCodeBuilderдля создания телаif -
elseHandler— обработчик, получающийCodeBuilder.BlockCodeBuilderдля создания телаelse - Возвращает:
- этот построитель
- См. также:
ifThenElse
default CodeBuilder ifThenElse(Opcode opcode, Consumer<CodeBuilder.BlockCodeBuilder> thenHandler, Consumer<CodeBuilder.BlockCodeBuilder> elseHandler)
opcode выполняется, и в противном случае переходит в блок «else». CodeBuilder.BlockCodeBuilder.breakLabel() каждого блока соответствует позиции курсора сразу после этого вызова в данном построителе.
- Параметры:
-
opcode— код операции для инструкции перехода, принимающей один или два операнда в стеке -
thenHandler— обработчик, получающий CodeBuilder.BlockCodeBuilder для создания телаif -
elseHandler— обработчик, получающий CodeBuilder.BlockCodeBuilder для создания телаelse - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— если код операции не предназначен для инструкции перехода, принимающей один или два операнда
trying
default CodeBuilder trying(Consumer<CodeBuilder.BlockCodeBuilder> tryHandler, Consumer<CodeBuilder.CatchBuilder> catchesHandler)
CodeBuilder.BlockCodeBuilder.breakLabel() блока try и всех блоков catch в catchesHandler соответствует позиции курсора сразу после этого вызова в данном построителе.
- Параметры:
-
tryHandler— обработчик, получающийCodeBuilder.BlockCodeBuilderдля создания тела блока try. -
catchesHandler— обработчик, получающийCodeBuilder.CatchBuilderдля создания тел блоков catch - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— если блок try пуст - См. также:
loadLocal
default CodeBuilder loadLocal(TypeKind tk, int slot)
- Параметры:
-
tk— тип загружаемого значения -
slot— слот локальной переменной - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиtkимеет значениеvoidилиslotне являетсяu2 - См. также:
storeLocal
default CodeBuilder storeLocal(TypeKind tk, int slot)
- Параметры:
-
tk— тип сохраняемого значения -
slot— слот локальной переменной - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиtkимеет значениеvoidилиslotне являетсяu2 - См. также:
branch
default CodeBuilder branch(Opcode op, Label target)
Если задан параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, размер кода операции равен 3, а target невозможно закодировать как смещение BCI в [-32768, 32767], для выполнения того же действия может быть сгенерировано несколько инструкций.
- Параметры:
-
op— код операции перехода -
target— цель перехода - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиopне относится кOpcode.Kind.BRANCH - См. также:
return_
default CodeBuilder return_(TypeKind tk)
- Параметры:
-
tk— тип возвращаемого значения - Возвращает:
- этот построитель
- См. также:
fieldAccess
default CodeBuilder fieldAccess(Opcode opcode, FieldRefEntry ref)
- Параметры:
-
opcode— код операции доступа к полю -
ref— ссылка на поле - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиopcodeне относится кOpcode.Kind.FIELD_ACCESS - См. также:
fieldAccess
default CodeBuilder fieldAccess(Opcode opcode, ClassDesc owner, String name, ClassDesc type)
- Параметры:
-
opcode— код операции доступа к полю -
owner— класс -
name— имя поля -
type— тип поля - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиopcodeне относится кOpcode.Kind.FIELD_ACCESSилиownerявляется примитивным типом - См. также:
invoke
default CodeBuilder invoke(Opcode opcode, MemberRefEntry ref)
- Параметры:
-
opcode— код операции вызова -
ref— ссылка на метод интерфейса или метод - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиopcodeне относится кOpcode.Kind.INVOKE - См. также:
invoke
default CodeBuilder invoke(Opcode opcode, ClassDesc owner, String name, MethodTypeDesc desc, boolean isInterface)
- Параметры:
-
opcode— код операции вызова -
owner— класс -
name— имя метода -
desc— тип метода -
isInterface— является ли класс-владелец интерфейсом - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиopcodeне относится кOpcode.Kind.INVOKEилиownerявляется примитивным типом - См. также:
arrayLoad
default CodeBuilder arrayLoad(TypeKind tk)
- Параметры:
-
tk— тип элемента массива - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиtkимеет значениеvoid - См. также:
arrayStore
default CodeBuilder arrayStore(TypeKind tk)
- Параметры:
-
tk— тип элемента массива - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиtkимеет значениеvoid - См. также:
conversion
default CodeBuilder conversion(TypeKind fromType, TypeKind toType)
fromType в toType.- Параметры:
-
fromType— исходный тип -
toType— целевой тип - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— при преобразованииvoidилиreference - См. также:
loadConstant
default CodeBuilder loadConstant(ConstantDesc value)
- Параметры:
-
value— значение константы; может бытьnull - Возвращает:
- этот построитель
- См. также:
loadConstant
default CodeBuilder loadConstant(int value)
int в стек операндов. Эквивалентно вызову loadConstant(Integer.valueOf(value)).- Параметры:
-
value— значение типа int - Возвращает:
- этот построитель
- См. также:
loadConstant
default CodeBuilder loadConstant(long value)
long в стек операндов. Эквивалентно вызову loadConstant(Long.valueOf(value)).- Параметры:
-
value— значение типа long - Возвращает:
- этот построитель
- См. также:
loadConstant
default CodeBuilder loadConstant(float value)
float в стек операндов. Эквивалентно вызову loadConstant(Float.valueOf(value)). Все значения NaN типа float могут быть объединены или не объединены в одно «каноническое» значение NaN.
- Параметры:
-
value— значение типа float - Возвращает:
- этот построитель
- См. также:
loadConstant
default CodeBuilder loadConstant(double value)
double в стек операндов. Эквивалентно вызову loadConstant(Double.valueOf(value)). Все значения NaN типа double могут быть объединены или не объединены в одно «каноническое» значение NaN.
- Параметры:
-
value— значение типа double - Возвращает:
- этот построитель
- См. также:
nop
default CodeBuilder nop()
- Возвращает:
- этот построитель
- См. также:
newBoundLabel
default Label newBoundLabel()
- Возвращает:
- этот построитель
- См. также:
labelBinding
default CodeBuilder labelBinding(Label label)
- Примечание API:
- Связываемая метка не обязана быть созданной этим построителем; она может быть получена из другой разобранной модели
CodeModel. - Параметры:
-
label— метка - Возвращает:
- этот построитель
- См. также:
lineNumber
default CodeBuilder lineNumber(int line)
Этот вызов может быть проигнорирован в соответствии с настройкой ClassFile.LineNumbersOption.
- Параметры:
-
line— номер строки - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиlineне являетсяu2 - См. также:
exceptionCatch
default CodeBuilder exceptionCatch(Label start, Label end, Label handler, ClassEntry catchType)
Этот вызов может быть проигнорирован, если какая-либо из меток аргументов не связана и задан параметр ClassFile.DeadLabelsOption.DROP_DEAD_LABELS.
- Параметры:
-
start— начало блока try -
end— конец блока try -
handler— начало обработчика исключений -
catchType— тип перехватываемого исключения; может бытьnullдля перехвата всех исключений и ошибок - Возвращает:
- этот построитель
- См. также:
exceptionCatch
default CodeBuilder exceptionCatch(Label start, Label end, Label handler, Optional<ClassEntry> catchType)
Этот вызов может быть проигнорирован, если какая-либо из меток аргументов не связана и задан параметр ClassFile.DeadLabelsOption.DROP_DEAD_LABELS.
- Параметры:
-
start— начало блока try -
end— конец блока try -
handler— начало обработчика исключений -
catchType— необязательный тип перехватываемого исключения; пустое значение означает перехват всех исключений и ошибок - Возвращает:
- этот построитель
- См. также:
exceptionCatch
default CodeBuilder exceptionCatch(Label start, Label end, Label handler, ClassDesc catchType)
Этот вызов может быть проигнорирован, если какая-либо из меток аргументов не привязана и установлен параметр ClassFile.DeadLabelsOption.DROP_DEAD_LABELS.
- Параметры:
-
start— начало блока try -
end— конец блока try -
handler— начало обработчика исключения -
catchType— тип перехватываемого исключения - Возвращает:
- этот построитель
- Вызывает исключения:
-
IllegalArgumentException— еслиcatchTypeявляется примитивным типом - См. также:
exceptionCatchAll
default CodeBuilder exceptionCatchAll(Label start, Label end, Label handler)
Этот вызов может быть проигнорирован, если какая-либо из меток аргументов не привязана и установлен параметр ClassFile.DeadLabelsOption.DROP_DEAD_LABELS.
- Параметры:
-
start— начало блока try -
end— конец блока try -
handler— начало обработчика исключения - Возвращает:
- этот построитель
- См. также:
characterRange
default CodeBuilder characterRange(Label startScope, Label endScope, int characterRangeStart, int characterRangeEnd, int flags)
Этот вызов может быть проигнорирован, если установлен параметр ClassFile.DebugElementsOption.DROP_DEBUG или если какая-либо из меток аргументов не привязана и установлен параметр ClassFile.DeadLabelsOption.DROP_DEAD_LABELS.
- Параметры:
-
startScope— начальная область диапазона символов -
endScope— конечная область диапазона символов -
characterRangeStart— закодированное начало области диапазона символов (включительно) -
characterRangeEnd— закодированный конец области диапазона символов (не включительно) -
flags— слово флагов, указывающее тип диапазона - Возвращает:
- этот построитель
- Вызывает исключения:
-
IllegalArgumentException— еслиflagsне являетсяu2 - См. также:
localVariable
default CodeBuilder localVariable(int slot, Utf8Entry nameEntry, Utf8Entry descriptorEntry, Label startScope, Label endScope)
Этот вызов может быть проигнорирован, если установлен параметр ClassFile.DebugElementsOption.DROP_DEBUG или если какая-либо из меток аргументов не привязана и установлен параметр ClassFile.DeadLabelsOption.DROP_DEAD_LABELS.
- Параметры:
-
slot— слот локальной переменной -
nameEntry— имя переменной -
descriptorEntry— дескриптор переменной -
startScope— начало области действия переменной -
endScope— конец области действия переменной - Возвращает:
- этот построитель
- Вызывает исключения:
-
IllegalArgumentException— еслиslotне являетсяu2 - См. также:
localVariable
default CodeBuilder localVariable(int slot, String name, ClassDesc descriptor, Label startScope, Label endScope)
Этот вызов может быть проигнорирован, если установлен параметр ClassFile.DebugElementsOption.DROP_DEBUG или если какая-либо из меток аргументов не привязана и установлен параметр ClassFile.DeadLabelsOption.DROP_DEAD_LABELS.
- Параметры:
-
slot— слот локальной переменной -
name— имя переменной -
descriptor— дескриптор переменной -
startScope— начало области действия переменной -
endScope— конец области действия переменной - Возвращает:
- этот построитель
- Вызывает исключения:
-
IllegalArgumentException— еслиslotне являетсяu2 - См. также:
localVariableType
default CodeBuilder localVariableType(int slot, Utf8Entry nameEntry, Utf8Entry signatureEntry, Label startScope, Label endScope)
Этот вызов может быть проигнорирован, если установлен параметр ClassFile.DebugElementsOption.DROP_DEBUG или если какая-либо из меток аргументов не привязана и установлен параметр ClassFile.DeadLabelsOption.DROP_DEAD_LABELS.
- Примечание API:
- При объявлении записи типа локальной переменной следует также объявить запись локальной переменной с дескриптором, полученным из сигнатуры путём стирания (JLS §4.6).
- Параметры:
-
slot— слот локальной переменной -
nameEntry— имя переменной -
signatureEntry— сигнатура переменной -
startScope— начало области действия переменной -
endScope— конец области действия переменной - Возвращает:
- этот построитель
- Вызывает исключения:
-
IllegalArgumentException— еслиslotне являетсяu2 - См. также:
localVariableType
default CodeBuilder localVariableType(int slot, String name, Signature signature, Label startScope, Label endScope)
Этот вызов может быть проигнорирован, если установлен параметр ClassFile.DebugElementsOption.DROP_DEBUG или если какая-либо из меток аргументов не привязана и установлен параметр ClassFile.DeadLabelsOption.DROP_DEAD_LABELS.
- Примечание API:
- При объявлении записи типа локальной переменной следует также объявить запись локальной переменной с дескриптором, полученным из сигнатуры путём стирания (JLS §4.6).
- Параметры:
-
slot— слот локальной переменной -
name— имя переменной -
signature— сигнатура переменной -
startScope— начало области действия переменной -
endScope— конец области действия переменной - Возвращает:
- этот построитель
- Вызывает исключения:
-
IllegalArgumentException— еслиslotне являетсяu2 - См. также:
aconst_null
default CodeBuilder aconst_null()
reference null в стек операндов.- Возвращает:
- этот построитель
- См. также:
aaload
default CodeBuilder aaload()
reference.- Возвращает:
- этот построитель
- См. также:
aastore
default CodeBuilder aastore()
reference.- Возвращает:
- этот построитель
- См. также:
aload
default CodeBuilder aload(int slot)
reference из локальной переменной. Также могут генерироваться инструкции aload_<N> и wide aload.
- Параметры:
-
slot— слот локальной переменной - Возвращает:
- этот построитель
- Вызывает исключения:
-
IllegalArgumentException— еслиslotне являетсяu2 - См. также:
anewarray
default CodeBuilder anewarray(ClassEntry classEntry)
reference.- Параметры:
-
classEntry— тип компонента - Возвращает:
- этот построитель
- См. также:
anewarray
default CodeBuilder anewarray(ClassDesc className)
reference.- Параметры:
-
className— тип компонента - Возвращает:
- этот построитель
- Вызывает исключения:
-
IllegalArgumentException— еслиclassNameпредставляет примитивный тип - См. также:
areturn
default CodeBuilder areturn()
reference из этого метода.- Возвращает:
- этот построитель
- См. также:
arraylength
default CodeBuilder arraylength()
- Возвращает:
- этот построитель
- См. также:
astore
default CodeBuilder astore(int slot)
reference в локальную переменную. Такая инструкция также может сохранять returnAddress. Также могут генерироваться инструкции astore_<N> и wide astore.
- Параметры:
-
slot— слот локальной переменной - Возвращает:
- этот построитель
- Вызывает исключения:
-
IllegalArgumentException— еслиslotне являетсяu2 - См. также:
athrow
default CodeBuilder athrow()
- Возвращает:
- этот построитель
- См. также:
baload
bastore
bipush
default CodeBuilder bipush(int b)
- Параметры:
-
b— целое число в диапазоне byte - Возвращает:
- этот построитель
- Вызывает исключения:
-
IllegalArgumentException— еслиbвыходит за пределы диапазона byte - См. также:
caload
default CodeBuilder caload()
char.- Возвращает:
- этот построитель
- См. также:
castore
default CodeBuilder castore()
char.- Возвращает:
- этот построитель
- См. также:
checkcast
default CodeBuilder checkcast(ClassEntry type)
ClassCastException.- Параметры:
-
type— тип объекта - Возвращает:
- этот построитель
- См. также:
checkcast
default CodeBuilder checkcast(ClassDesc type)
ClassCastException.- Параметры:
-
type— тип объекта - Возвращает:
- этот построитель
- Вызывает исключения:
-
IllegalArgumentException— еслиtypeпредставляет примитивный тип - См. также:
d2f
d2i
d2l
dadd
default CodeBuilder dadd()
doubles.- Возвращает:
- этот построитель
- См. также:
daload
default CodeBuilder daload()
double.- Возвращает:
- этот построитель
- См. также:
dastore
default CodeBuilder dastore()
double.- Возвращает:
- этот построитель
- См. также:
dcmpg
dcmpl
dconst_0
default CodeBuilder dconst_0()
double со значением 0 в стек операндов.- Возвращает:
- этот построитель
- См. также:
dconst_1
default CodeBuilder dconst_1()
double со значением 1 в стек операндов.- Возвращает:
- этот построитель
- См. также:
ddiv
default CodeBuilder ddiv()
doubles.- Возвращает:
- этот построитель
- См. также:
dload
default CodeBuilder dload(int slot)
double из локальной переменной. Также могут генерироваться инструкции dload_<N> и wide dload.
- Параметры:
-
slot— слот локальной переменной - Возвращает:
- этот построитель
- Вызывает исключения:
-
IllegalArgumentException— еслиslotне являетсяu2 - См. также:
dmul
default CodeBuilder dmul()
doubles.- Возвращает:
- этот построитель
- См. также:
dneg
default CodeBuilder dneg()
double.- Возвращает:
- этот построитель
- См. также:
drem
default CodeBuilder drem()
double.- Возвращает:
- этот построитель
- См. также:
dreturn
default CodeBuilder dreturn()
double из этого метода.- Возвращает:
- этот построитель
- См. также:
dstore
default CodeBuilder dstore(int slot)
double в локальную переменную. Также могут быть сгенерированы инструкции dstore_<N> и wide dstore.
- Параметры:
-
slot— индекс локальной переменной - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиslotне являетсяu2 - См. также:
dsub
default CodeBuilder dsub()
doubles.- Возвращает:
- этот построитель
- См. также:
dup
default CodeBuilder dup()
- Возвращает:
- этот построитель
- См. также:
dup2
default CodeBuilder dup2()
- Возвращает:
- этот построитель
- См. также:
dup2_x1
default CodeBuilder dup2_x1()
- Возвращает:
- этот построитель
- См. также:
dup2_x2
default CodeBuilder dup2_x2()
- Возвращает:
- этот построитель
- См. также:
dup_x1
default CodeBuilder dup_x1()
- Возвращает:
- этот построитель
- См. также:
dup_x2
default CodeBuilder dup_x2()
- Возвращает:
- этот построитель
- См. также:
f2d
f2i
f2l
fadd
default CodeBuilder fadd()
floats.- Возвращает:
- этот построитель
- См. также:
faload
default CodeBuilder faload()
float.- Возвращает:
- этот построитель
- См. также:
fastore
default CodeBuilder fastore()
float.- Возвращает:
- этот построитель
- См. также:
fcmpg
fcmpl
fconst_0
default CodeBuilder fconst_0()
float в стек операндов.- Возвращает:
- этот построитель
- См. также:
fconst_1
default CodeBuilder fconst_1()
float в стек операндов.- Возвращает:
- этот построитель
- См. также:
fconst_2
default CodeBuilder fconst_2()
float в стек операндов.- Возвращает:
- этот построитель
- См. также:
fdiv
default CodeBuilder fdiv()
floats.- Возвращает:
- этот построитель
- См. также:
fload
default CodeBuilder fload(int slot)
float из локальной переменной. Также могут быть сгенерированы инструкции fload_<N> и wide fload.
- Параметры:
-
slot— индекс локальной переменной - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиslotне являетсяu2 - См. также:
fmul
default CodeBuilder fmul()
floats.- Возвращает:
- этот построитель
- См. также:
fneg
default CodeBuilder fneg()
float.- Возвращает:
- этот построитель
- См. также:
frem
default CodeBuilder frem()
floats.- Возвращает:
- этот построитель
- См. также:
freturn
default CodeBuilder freturn()
float из этого метода.- Возвращает:
- этот построитель
- См. также:
fstore
default CodeBuilder fstore(int slot)
float в локальную переменную. Также могут быть сгенерированы инструкции fstore_<N> и wide fstore.
- Параметры:
-
slot— индекс локальной переменной - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиslotне являетсяu2 - См. также:
fsub
default CodeBuilder fsub()
floats.- Возвращает:
- этот построитель
- См. также:
getfield
default CodeBuilder getfield(FieldRefEntry ref)
- Параметры:
-
ref— ссылка на поле - Возвращает:
- этот построитель
- См. также:
getfield
default CodeBuilder getfield(ClassDesc owner, String name, ClassDesc type)
- Параметры:
-
owner— класс-владелец -
name— имя поля -
type— тип поля - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиownerпредставляет примитивный тип - См. также:
getstatic
default CodeBuilder getstatic(FieldRefEntry ref)
- Параметры:
-
ref— ссылка на поле - Возвращает:
- этот построитель
- См. также:
getstatic
default CodeBuilder getstatic(ClassDesc owner, String name, ClassDesc type)
- Параметры:
-
owner— класс-владелец -
name— имя поля -
type— тип поля - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиownerпредставляет примитивный тип - См. также:
goto_
default CodeBuilder goto_(Label target)
Если задан параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, также могут быть сгенерированы инструкции goto_w.
- Примечание API:
- Имя инструкции —
goto, которое совпадает с зарезервированным ключевым словом языка программирования Java, поэтому в конце имени этого метода добавлен суффикс_. - Параметры:
-
target— цель перехода - Возвращает:
- этот построитель
- См. также:
goto_w
default CodeBuilder goto_w(Label target)
- Параметры:
-
target— цель перехода - Возвращает:
- этот построитель
- См. также:
i2b
i2c
i2d
i2f
i2l
i2s
iadd
default CodeBuilder iadd()
ints.- Возвращает:
- этот построитель
- См. также:
iaload
default CodeBuilder iaload()
int.- Возвращает:
- этот построитель
- См. также:
iand
iastore
default CodeBuilder iastore()
int.- Возвращает:
- этот строитель
- См. также:
iconst_0
default CodeBuilder iconst_0()
int со значением 0 в стек операндов.- Возвращает:
- этот строитель
- См. также:
iconst_1
default CodeBuilder iconst_1()
int со значением 1 в стек операндов.- Возвращает:
- этот строитель
- См. также:
iconst_2
default CodeBuilder iconst_2()
int со значением 2 в стек операндов.- Возвращает:
- этот строитель
- См. также:
iconst_3
default CodeBuilder iconst_3()
int со значением 3 в стек операндов.- Возвращает:
- этот строитель
- См. также:
iconst_4
default CodeBuilder iconst_4()
int со значением 4 в стек операндов.- Возвращает:
- этот строитель
- См. также:
iconst_5
default CodeBuilder iconst_5()
int со значением 5 в стек операндов.- Возвращает:
- этот строитель
- См. также:
iconst_m1
default CodeBuilder iconst_m1()
int со значением -1 в стек операндов.- Возвращает:
- этот строитель
- См. также:
idiv
default CodeBuilder idiv()
ints.- Возвращает:
- этот строитель
- См. также:
if_acmpeq
default CodeBuilder if_acmpeq(Label target)
reference operand1 == operand2 успешно. Если установлен параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а
target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта могут быть созданы несколько инструкций.
- Параметры:
-
target— целевая метка перехода - Возвращает:
- этот строитель
- См. также:
if_acmpne
default CodeBuilder if_acmpne(Label target)
reference operand1 != operand2 успешно. Если установлен параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а
target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта могут быть созданы несколько инструкций.
- Параметры:
-
target— целевая метка перехода - Возвращает:
- этот строитель
- См. также:
if_icmpeq
default CodeBuilder if_icmpeq(Label target)
int operand1 == operand2 успешно. Если установлен параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а
target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта могут быть созданы несколько инструкций.
- Параметры:
-
target— целевая метка перехода - Возвращает:
- этот строитель
- См. также:
if_icmpge
default CodeBuilder if_icmpge(Label target)
int operand1 >= operand2 успешно. Если установлен параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а
target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта могут быть созданы несколько инструкций.
- Параметры:
-
target— целевая метка перехода - Возвращает:
- этот строитель
- См. также:
if_icmpgt
default CodeBuilder if_icmpgt(Label target)
int operand1 > operand2 успешно. Если установлен параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а
target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта могут быть созданы несколько инструкций.
- Параметры:
-
target— целевая метка перехода - Возвращает:
- этот строитель
- См. также:
if_icmple
default CodeBuilder if_icmple(Label target)
int operand1 <= operand2 успешно. Если установлен параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а
target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта могут быть созданы несколько инструкций.
- Параметры:
-
target— целевая метка перехода - Возвращает:
- этот строитель
- См. также:
if_icmplt
default CodeBuilder if_icmplt(Label target)
int operand1 < operand2 успешно. Если установлен параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а
target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта могут быть созданы несколько инструкций.
- Параметры:
-
target— целевая метка перехода - Возвращает:
- этот строитель
- См. также:
if_icmpne
default CodeBuilder if_icmpne(Label target)
int operand1 != operand2 успешно. Если установлен параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а
target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта могут быть созданы несколько инструкций.
- Параметры:
-
target— целевая метка перехода - Возвращает:
- этот строитель
- См. также:
ifnonnull
default CodeBuilder ifnonnull(Label target)
reference не равна null. Если установлен параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а
target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта могут быть созданы несколько инструкций.
- Параметры:
-
target— целевая метка перехода - Возвращает:
- этот строитель
- См. также:
ifnull
default CodeBuilder ifnull(Label target)
reference равна null. Если установлен параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а
target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта могут быть созданы несколько инструкций.
- Параметры:
-
target— целевая метка перехода - Возвращает:
- этот строитель
- См. также:
ifeq
default CodeBuilder ifeq(Label target)
int с нулем == 0 успешно. Если установлен параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а
target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта могут быть созданы несколько инструкций.
- Параметры:
-
target— целевая метка перехода - Возвращает:
- этот строитель
- См. также:
ifge
default CodeBuilder ifge(Label target)
int с нулем >= 0 успешно. Если установлен параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а
target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта могут быть созданы несколько инструкций.
- Параметры:
-
target— целевая метка перехода - Возвращает:
- этот строитель
- См. также:
ifgt
default CodeBuilder ifgt(Label target)
int с нулем > 0 успешно. Если установлен параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а
target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта могут быть созданы несколько инструкций.
- Параметры:
-
target— целевая метка перехода - Возвращает:
- этот строитель
- См. также:
ifle
default CodeBuilder ifle(Label target)
int с нулем <= 0 успешно. Если установлен параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а
target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта могут быть созданы несколько инструкций.
- Параметры:
-
target— целевая метка перехода - Возвращает:
- этот строитель
- См. также:
iflt
default CodeBuilder iflt(Label target)
int с нулем < 0 успешно. Если установлен параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а
target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта могут быть созданы несколько инструкций.
- Параметры:
-
target— целевая метка перехода - Возвращает:
- этот строитель
- См. также:
ifne
default CodeBuilder ifne(Label target)
int с нулем != 0 успешно. Если установлен параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а
target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта могут быть созданы несколько инструкций.
- Параметры:
-
target— целевая метка перехода - Возвращает:
- этот строитель
- См. также:
iinc
default CodeBuilder iinc(int slot, int val)
int на константу. Также могут быть созданы инструкции wide iinc, если slot превышает предел u1 или val выходит за диапазон byte.
- Параметры:
-
slot— слот локальной переменной -
val— значение приращения - Возвращает:
- этот строитель
- Выбрасывает:
-
IllegalArgumentException— еслиslotне являетсяu2илиvalвыходит за диапазонshort - См. также:
iload
default CodeBuilder iload(int slot)
int из локальной переменной. Также могут быть созданы инструкции iload_<N> и wide iload.
- Параметры:
-
slot— слот локальной переменной - Возвращает:
- этот строитель
- Выбрасывает:
-
IllegalArgumentException— еслиslotне являетсяu2 - См. также:
imul
default CodeBuilder imul()
ints.- Возвращает:
- этот строитель
- См. также:
ineg
default CodeBuilder ineg()
int.- Возвращает:
- этот строитель
- См. также:
instanceOf
default CodeBuilder instanceOf(ClassEntry target)
boolean в стек операндов.- Примечание API:
- Название инструкции —
instanceof; оно совпадает с зарезервированным ключевым словом языка программирования Java, поэтому имя этого метода записано в стиле camelCase. - Параметры:
-
target— целевой тип - Возвращает:
- этот строитель
- См. также:
instanceOf
default CodeBuilder instanceOf(ClassDesc target)
boolean в стек операндов.- Примечание API:
- Название инструкции —
instanceof; оно совпадает с зарезервированным ключевым словом языка программирования Java, поэтому имя этого метода записано в стиле camelCase. - Параметры:
-
target— целевой тип - Возвращает:
- этот строитель
- Выбрасывает:
-
IllegalArgumentException— еслиtargetпредставляет примитивный тип - См. также:
invokedynamic
default CodeBuilder invokedynamic(InvokeDynamicEntry ref)
- Параметры:
-
ref— динамическая точка вызова - Возвращает:
- этот строитель
- См. также:
invokedynamic
default CodeBuilder invokedynamic(DynamicCallSiteDesc ref)
- Параметры:
-
ref— динамическая точка вызова - Возвращает:
- этот строитель
- См. также:
invokeinterface
default CodeBuilder invokeinterface(InterfaceMethodRefEntry ref)
- Параметры:
-
ref— ссылка на метод интерфейса - Возвращает:
- этот построитель
- См. также:
invokeinterface
default CodeBuilder invokeinterface(ClassDesc owner, String name, MethodTypeDesc type)
- Параметры:
-
owner— интерфейс-владелец -
name— имя метода -
type— тип метода - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиownerпредставляет примитивный тип - См. также:
invokespecial
default CodeBuilder invokespecial(InterfaceMethodRefEntry ref)
- Параметры:
-
ref— ссылка на метод интерфейса - Возвращает:
- этот построитель
- См. также:
invokespecial
default CodeBuilder invokespecial(MethodRefEntry ref)
- Параметры:
-
ref— ссылка на метод - Возвращает:
- этот построитель
- См. также:
invokespecial
default CodeBuilder invokespecial(ClassDesc owner, String name, MethodTypeDesc type)
- Параметры:
-
owner— класс-владелец; не должен быть интерфейсом -
name— имя метода -
type— тип метода - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиownerпредставляет примитивный тип - См. также:
invokespecial
default CodeBuilder invokespecial(ClassDesc owner, String name, MethodTypeDesc type, boolean isInterface)
- Параметры:
-
owner— класс или интерфейс-владелец -
name— имя метода -
type— тип метода -
isInterface— является ли владелец интерфейсом - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиownerпредставляет примитивный тип - См. также:
invokestatic
default CodeBuilder invokestatic(InterfaceMethodRefEntry ref)
- Параметры:
-
ref— ссылка на метод интерфейса - Возвращает:
- этот построитель
- См. также:
invokestatic
default CodeBuilder invokestatic(MethodRefEntry ref)
- Параметры:
-
ref— ссылка на метод - Возвращает:
- этот построитель
- См. также:
invokestatic
default CodeBuilder invokestatic(ClassDesc owner, String name, MethodTypeDesc type)
- Параметры:
-
owner— класс-владелец; не должен быть интерфейсом -
name— имя метода -
type— тип метода - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиownerпредставляет примитивный тип - См. также:
invokestatic
default CodeBuilder invokestatic(ClassDesc owner, String name, MethodTypeDesc type, boolean isInterface)
- Параметры:
-
owner— класс или интерфейс-владелец -
name— имя метода -
type— тип метода -
isInterface— является ли владелец интерфейсом - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиownerпредставляет примитивный тип - См. также:
invokevirtual
default CodeBuilder invokevirtual(MethodRefEntry ref)
- Параметры:
-
ref— ссылка на метод - Возвращает:
- этот построитель
- См. также:
invokevirtual
default CodeBuilder invokevirtual(ClassDesc owner, String name, MethodTypeDesc type)
- Параметры:
-
owner— класс-владелец; не должен быть интерфейсом -
name— имя метода -
type— тип метода - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиownerпредставляет примитивный тип - См. также:
ior
irem
default CodeBuilder irem()
ints.- Возвращает:
- этот построитель
- См. также:
ireturn
default CodeBuilder ireturn()
int из этого метода.- Возвращает:
- этот построитель
- См. также:
ishl
default CodeBuilder ishl()
int влево.- Возвращает:
- этот построитель
- См. также:
ishr
istore
default CodeBuilder istore(int slot)
int в локальную переменную. При этом также могут быть сгенерированы инструкции istore_<N> и wide istore.
- Параметры:
-
slot— индекс локальной переменной - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиslotне являетсяu2 - См. также:
isub
default CodeBuilder isub()
ints.- Возвращает:
- этот построитель
- См. также:
iushr
ixor
lookupswitch
default CodeBuilder lookupswitch(Label defaultTarget, List<SwitchCase> cases)
- Параметры:
-
defaultTarget— целевая метка перехода по умолчанию -
cases— варианты переключения - Возвращает:
- этот построитель
- См. также:
l2d
l2f
l2i
ladd
default CodeBuilder ladd()
longs.- Возвращает:
- этот построитель
- См. также:
laload
default CodeBuilder laload()
long.- Возвращает:
- этот построитель
- См. также:
land
default CodeBuilder land()
longs.- Возвращает:
- этот построитель
- См. также:
lastore
default CodeBuilder lastore()
long.- Возвращает:
- этот построитель
- См. также:
lcmp
default CodeBuilder lcmp()
longs.- Возвращает:
- этот построитель
- См. также:
lconst_0
default CodeBuilder lconst_0()
long со значением 0 в стек операндов.- Возвращает:
- этот построитель
- См. также:
lconst_1
default CodeBuilder lconst_1()
long со значением 1 в стек операндов.- Возвращает:
- этот построитель
- См. также:
ldc
default CodeBuilder ldc(ConstantDesc value)
При этом также могут быть сгенерированы инструкции ldc_w и ldc2_w.
- Примечание к API:
-
loadConstantгенерирует более оптимальные инструкции и должен использоваться для обычных констант, если инструкцияldcне является обязательной. - Параметры:
-
value— значение константы - Возвращает:
- этот построитель
- См. также:
ldc
ldiv
default CodeBuilder ldiv()
longs.- Возвращает:
- этот построитель
- См. также:
lload
default CodeBuilder lload(int slot)
long из локальной переменной. При этом также могут быть сгенерированы инструкции lload_<N> и wide lload.
- Параметры:
-
slot— индекс локальной переменной - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиslotне являетсяu2 - См. также:
lmul
default CodeBuilder lmul()
longs.- Возвращает:
- этот построитель
- См. также:
lneg
default CodeBuilder lneg()
long.- Возвращает:
- этот построитель
- См. также:
lor
default CodeBuilder lor()
longs.- Возвращает:
- этот построитель
- См. также:
lrem
default CodeBuilder lrem()
longs.- Возвращает:
- этот построитель
- См. также:
lreturn
default CodeBuilder lreturn()
long из этого метода.- Возвращает:
- этот построитель
- См. также:
lshl
default CodeBuilder lshl()
long влево.- Возвращает:
- этот построитель
- См. также:
lshr
lstore
default CodeBuilder lstore(int slot)
long в локальной переменной. Также могут быть созданы инструкции lstore_<N> и wide lstore.
- Параметры:
-
slot— слот локальной переменной - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиslotне являетсяu2 - См. также:
lsub
default CodeBuilder lsub()
longs.- Возвращает:
- этот построитель
- См. также:
lushr
lxor
default CodeBuilder lxor()
longs.- Возвращает:
- этот построитель
- См. также:
monitorenter
default CodeBuilder monitorenter()
- Возвращает:
- этот построитель
- См. также:
monitorexit
default CodeBuilder monitorexit()
- Возвращает:
- этот построитель
- См. также:
multianewarray
default CodeBuilder multianewarray(ClassEntry array, int dims)
- Параметры:
-
array— тип массива -
dims— количество измерений - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиdimsвыходит за допустимый диапазон - См. также:
multianewarray
default CodeBuilder multianewarray(ClassDesc array, int dims)
- Параметры:
-
array— тип массива -
dims— количество измерений - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиarrayпредставляет примитивный тип или еслиdimsвыходит за допустимый диапазон - См. также:
new_
default CodeBuilder new_(ClassEntry clazz)
- Примечание API:
- Название инструкции —
new, что совпадает с зарезервированным ключевым словом языка программирования Java, поэтому к имени этого метода добавлен суффикс_. - Параметры:
-
clazz— тип нового класса - Возвращает:
- этот построитель
- См. также:
new_
default CodeBuilder new_(ClassDesc clazz)
- Примечание API:
- Название инструкции —
new, что совпадает с зарезервированным ключевым словом языка программирования Java, поэтому к имени этого метода добавлен суффикс_. - Параметры:
-
clazz— тип нового класса - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиclazzпредставляет примитивный тип - См. также:
newarray
default CodeBuilder newarray(TypeKind typeKind)
- Параметры:
-
typeKind— тип массива примитивов - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиtypeKindне является допустимым типом компонента массива примитивов - См. также:
pop
default CodeBuilder pop()
- Возвращает:
- этот построитель
- См. также:
pop2
default CodeBuilder pop2()
- Возвращает:
- этот построитель
- См. также:
putfield
default CodeBuilder putfield(FieldRefEntry ref)
- Параметры:
-
ref— ссылка на поле - Возвращает:
- этот построитель
- См. также:
putfield
default CodeBuilder putfield(ClassDesc owner, String name, ClassDesc type)
- Параметры:
-
owner— класс-владелец -
name— имя поля -
type— тип поля - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиownerпредставляет примитивный тип - См. также:
putstatic
default CodeBuilder putstatic(FieldRefEntry ref)
- Параметры:
-
ref— ссылка на поле - Возвращает:
- этот построитель
- См. также:
putstatic
default CodeBuilder putstatic(ClassDesc owner, String name, ClassDesc type)
- Параметры:
-
owner— класс или интерфейс-владелец -
name— имя поля -
type— тип поля - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиownerпредставляет примитивный тип - См. также:
return_
default CodeBuilder return_()
void из этого метода.- Примечание API:
- Название инструкции —
return, что совпадает с зарезервированным ключевым словом языка программирования Java, поэтому к имени этого метода добавлен суффикс_. - Возвращает:
- этот построитель
- См. также:
saload
default CodeBuilder saload()
short.- Возвращает:
- этот построитель
- См. также:
sastore
default CodeBuilder sastore()
short.- Возвращает:
- этот построитель
- См. также:
sipush
default CodeBuilder sipush(int s)
int в диапазоне типа short, [-32768, 32767].- Параметры:
-
s— значение типа int в диапазоне типа short - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиsвыходит за диапазон типа short - См. также:
swap
default CodeBuilder swap()
- Возвращает:
- этот построитель
- См. также:
tableswitch
default CodeBuilder tableswitch(int low, int high, Label defaultTarget, List<SwitchCase> cases)
- Параметры:
-
low— минимальный ключ включительно -
high— максимальный ключ включительно -
defaultTarget— цель перехода по умолчанию -
cases— варианты switch - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— если нижнее значение больше верхнего или если между нижним и верхним значениями указано слишком много целей перехода - См. также:
tableswitch
default CodeBuilder tableswitch(Label defaultTarget, List<SwitchCase> cases)
cases.- Параметры:
-
defaultTarget— цель перехода по умолчанию -
cases— варианты switch - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиcasesпусто - См. также:
© 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.