Spec-Zone.ru › OpenJDK 27

Интерфейс 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
См. также:
  • MethodBuilder.withCode(Consumer)
  • CodeModel
  • CodeTransform

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

Модификатор и тип Интерфейс Описание
static interface  CodeBuilder.BlockCodeBuilder
Построитель блоков кода.
static interface  CodeBuilder.CatchBuilder
Построитель для добавления блоков catch.

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

Модификатор и тип Метод Описание
default CodeBuilder aaload()
Генерирует инструкцию для загрузки из массива reference.
default CodeBuilder aastore()
Генерирует инструкцию для сохранения в массив reference.
default CodeBuilder aconst_null()
Генерирует инструкцию, помещающую нулевой объект reference в стек операндов.
int allocateLocal(TypeKind typeKind)
Возвращает слот локальной переменной для новой локальной переменной.
default CodeBuilder aload(int slot)
Генерирует инструкцию для загрузки reference из локальной переменной.
default CodeBuilder anewarray(ClassEntry classEntry)
Генерирует инструкцию для создания нового массива reference.
default CodeBuilder anewarray(ClassDesc className)
Генерирует инструкцию для создания нового массива reference.
default CodeBuilder areturn()
Генерирует инструкцию для возврата reference из этого метода.
default CodeBuilder arraylength()
Генерирует инструкцию для получения длины массива.
default CodeBuilder arrayLoad(TypeKind tk)
Генерирует инструкцию для загрузки из массива.
default CodeBuilder arrayStore(TypeKind tk)
Генерирует инструкцию для сохранения в массив.
default CodeBuilder astore(int slot)
Генерирует инструкцию для сохранения reference в локальной переменной.
default CodeBuilder athrow()
Генерирует инструкцию для выбрасывания исключения или ошибки.
default CodeBuilder baload()
Генерирует инструкцию для загрузки из массива byte или boolean.
default CodeBuilder bastore()
Генерирует инструкцию для сохранения в массив byte или boolean.
default CodeBuilder bipush(int b)
Генерирует инструкцию, помещающую int в диапазоне byte ([-128, 127]) в стек операндов.
default CodeBuilder block(Consumer<CodeBuilder.BlockCodeBuilder> handler)
Добавляет лексический блок в создаваемый метод.
default CodeBuilder branch(Opcode op, Label target)
Генерирует инструкцию ветвления.
default CodeBuilder caload()
Генерирует инструкцию для загрузки из массива char.
default CodeBuilder castore()
Генерирует инструкцию для сохранения в массив char.
default CodeBuilder characterRange(Label startScope, Label endScope, int characterRangeStart, int characterRangeEnd, int flags)
Объявляет запись диапазона символов.
default CodeBuilder checkcast(ClassEntry type)
Генерирует инструкцию для проверки, принадлежит ли объект указанному типу; если проверка не пройдена, выбрасывается ClassCastException.
default CodeBuilder checkcast(ClassDesc type)
Генерирует инструкцию для проверки, принадлежит ли объект указанному типу; если проверка не пройдена, выбрасывается ClassCastException.
default CodeBuilder conversion(TypeKind fromType, TypeKind toType)
Генерирует инструкцию (инструкции) для преобразования fromType в toType.
default CodeBuilder d2f()
Генерирует инструкцию для преобразования double в float.
default CodeBuilder d2i()
Генерирует инструкцию для преобразования double в int.
default CodeBuilder d2l()
Генерирует инструкцию для преобразования double в long.
default CodeBuilder dadd()
Генерирует инструкцию для сложения двух значений doubles.
default CodeBuilder daload()
Генерирует инструкцию для загрузки из массива double.
default CodeBuilder dastore()
Генерирует инструкцию для сохранения в массив double.
default CodeBuilder dcmpg()
Генерирует инструкцию для сравнения двух значений doubles, возвращая 1, если хотя бы один операнд является значением NaN.
default CodeBuilder dcmpl()
Генерирует инструкцию для сравнения двух значений doubles, возвращая -1, если хотя бы один операнд является значением NaN.
default CodeBuilder dconst_0()
Генерирует инструкцию, помещающую константу double со значением 0 в стек операндов.
default CodeBuilder dconst_1()
Генерирует инструкцию, помещающую константу double со значением 1 в стек операндов.
default CodeBuilder ddiv()
Генерирует инструкцию для деления значений doubles.
default CodeBuilder dload(int slot)
Генерирует инструкцию для загрузки значения double из локальной переменной.
default CodeBuilder dmul()
Генерирует инструкцию для умножения значений doubles.
default CodeBuilder dneg()
Генерирует инструкцию для смены знака значения double.
default CodeBuilder drem()
Генерирует инструкцию для вычисления остатка от деления значений double.
default CodeBuilder dreturn()
Генерирует инструкцию для возврата значения double из этого метода.
default CodeBuilder dstore(int slot)
Генерирует инструкцию для сохранения значения 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(Label start, Label end, Label handler, ClassEntry catchType)
Объявляет запись таблицы исключений.
default CodeBuilder exceptionCatch(Label start, Label end, Label handler, ClassDesc catchType)
Объявляет запись таблицы исключений.
default CodeBuilder exceptionCatch(Label start, Label end, Label handler, Optional<ClassEntry> catchType)
Объявляет запись таблицы исключений.
default CodeBuilder exceptionCatchAll(Label start, Label end, Label handler)
Объявляет запись таблицы исключений, перехватывающую все исключения и ошибки.
default CodeBuilder f2d()
Генерирует инструкцию для преобразования float в double.
default CodeBuilder f2i()
Генерирует инструкцию для преобразования float в int.
default CodeBuilder f2l()
Генерирует инструкцию для преобразования float в long.
default CodeBuilder fadd()
Генерирует инструкцию для сложения двух значений floats.
default CodeBuilder faload()
Генерирует инструкцию для загрузки из массива float.
default CodeBuilder fastore()
Генерирует инструкцию для сохранения в массив float.
default CodeBuilder fcmpg()
Генерирует инструкцию для сравнения значений floats, возвращая 1, если хотя бы один операнд является значением NaN.
default CodeBuilder fcmpl()
Генерирует инструкцию для сравнения значений floats, возвращая -1, если хотя бы один операнд является значением NaN.
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(Opcode opcode, FieldRefEntry ref)
Генерирует инструкцию для доступа к полю.
default CodeBuilder fieldAccess(Opcode opcode, ClassDesc owner, String name, ClassDesc type)
Генерирует инструкцию для доступа к полю.
default CodeBuilder fload(int slot)
Генерирует инструкцию для загрузки значения float из локальной переменной.
default CodeBuilder fmul()
Генерирует инструкцию для умножения значений floats.
default CodeBuilder fneg()
Генерирует инструкцию для смены знака значения float.
default CodeBuilder frem()
Генерирует инструкцию для вычисления остатка от деления значений floats.
default CodeBuilder freturn()
Генерирует инструкцию для возврата значения float из этого метода.
default CodeBuilder fstore(int slot)
Генерирует инструкцию для сохранения значения float в локальной переменной.
default CodeBuilder fsub()
Генерирует инструкцию для вычитания значений floats.
default CodeBuilder getfield(FieldRefEntry ref)
Генерирует инструкцию для получения поля объекта.
default CodeBuilder getfield(ClassDesc owner, String name, ClassDesc type)
Генерирует инструкцию для получения поля объекта.
default CodeBuilder getstatic(FieldRefEntry ref)
Генерирует инструкцию для получения статического поля класса или интерфейса.
default CodeBuilder getstatic(ClassDesc owner, String name, ClassDesc type)
Генерирует инструкцию для получения статического поля класса или интерфейса.
default CodeBuilder goto_(Label target)
Генерирует инструкцию для безусловного перехода.
default CodeBuilder goto_w(Label target)
Генерирует инструкцию для безусловного перехода с широким индексом.
default CodeBuilder i2b()
Генерирует инструкцию для усечения int до диапазона byte с последующим знаковым расширением.
default CodeBuilder i2c()
Генерирует инструкцию для усечения int до диапазона char с последующим расширением нулями.
default CodeBuilder i2d()
Генерирует инструкцию для преобразования int в double.
default CodeBuilder i2f()
Генерирует инструкцию для преобразования int в float.
default CodeBuilder i2l()
Генерирует инструкцию для преобразования int в long.
default CodeBuilder i2s()
Генерирует инструкцию для усечения int до диапазона short с последующим знаковым расширением.
default CodeBuilder iadd()
Генерирует инструкцию для сложения двух значений ints.
default CodeBuilder iaload()
Генерирует инструкцию для загрузки из массива int.
default CodeBuilder iand()
Генерирует инструкцию для побитового И значений ints; также используется для логического И значений boolean.
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(Label target)
Генерирует инструкцию для перехода, если сравнение reference operand1 == operand2 выполнено.
default CodeBuilder if_acmpne(Label target)
Генерирует инструкцию для перехода, если сравнение reference operand1 != operand2 выполнено.
default CodeBuilder if_icmpeq(Label target)
Генерирует инструкцию для перехода, если сравнение int operand1 == operand2 выполнено.
default CodeBuilder if_icmpge(Label target)
Генерирует инструкцию для перехода, если сравнение int operand1 >= operand2 выполнено.
default CodeBuilder if_icmpgt(Label target)
Генерирует инструкцию для перехода, если сравнение int operand1 > operand2 выполнено.
default CodeBuilder if_icmple(Label target)
Генерирует инструкцию для перехода, если сравнение int operand1 <= operand2 выполнено.
default CodeBuilder if_icmplt(Label target)
Генерирует инструкцию для перехода, если сравнение int operand1 < operand2 выполнено.
default CodeBuilder if_icmpne(Label target)
Генерирует инструкцию для перехода, если сравнение int operand1 != operand2 выполнено.
default CodeBuilder ifeq(Label target)
Генерирует инструкцию для перехода, если сравнение int с нулём == 0 выполнено.
default CodeBuilder ifge(Label target)
Генерирует инструкцию для перехода, если сравнение int с нулём >= 0 выполнено.
default CodeBuilder ifgt(Label target)
Генерирует инструкцию для перехода, если сравнение int с нулём > 0 выполнено.
default CodeBuilder ifle(Label target)
Генерирует инструкцию для перехода, если сравнение int с нулём <= 0 выполнено.
default CodeBuilder iflt(Label target)
Генерирует инструкцию для перехода, если сравнение int с нулём < 0 выполнено.
default CodeBuilder ifne(Label target)
Генерирует инструкцию для перехода, если сравнение int с нулём != 0 выполнено.
default CodeBuilder ifnonnull(Label target)
Генерирует инструкцию для перехода, если reference не равно null.
default CodeBuilder ifnull(Label target)
Генерирует инструкцию для перехода, если reference равно null.
default CodeBuilder ifThen(Opcode opcode, Consumer<CodeBuilder.BlockCodeBuilder> thenHandler)
Добавляет блок «если — то», условие выполнения которого определяется значением (значениями) на вершине стека операндов в соответствии с заданным кодом операции.
default CodeBuilder ifThen(Consumer<CodeBuilder.BlockCodeBuilder> thenHandler)
Добавляет блок «если — то», условие выполнения которого определяется значением boolean на вершине стека операндов.
default CodeBuilder ifThenElse(Opcode opcode, Consumer<CodeBuilder.BlockCodeBuilder> thenHandler, Consumer<CodeBuilder.BlockCodeBuilder> elseHandler)
Добавляет блок «если — то — иначе», условие выполнения которого определяется значением (значениями) на вершине стека операндов в соответствии с заданным кодом операции.
default CodeBuilder ifThenElse(Consumer<CodeBuilder.BlockCodeBuilder> thenHandler, Consumer<CodeBuilder.BlockCodeBuilder> elseHandler)
Добавляет блок «если — то — иначе», условие выполнения которого определяется значением boolean на вершине стека операндов.
default CodeBuilder iinc(int slot, int val)
Генерирует инструкцию для увеличения локальной переменной int на константу.
default CodeBuilder iload(int slot)
Генерирует инструкцию для загрузки значения int из локальной переменной.
default CodeBuilder imul()
Генерирует инструкцию для умножения значений ints.
default CodeBuilder ineg()
Генерирует инструкцию для смены знака значения int.
default CodeBuilder instanceOf(ClassEntry target)
Генерирует инструкцию для проверки, принадлежит ли объект указанному типу, помещая результат boolean в стек операндов.
default CodeBuilder instanceOf(ClassDesc target)
Генерирует инструкцию для проверки, принадлежит ли объект указанному типу, помещая результат boolean в стек операндов.
default CodeBuilder invoke(Opcode opcode, MemberRefEntry ref)
Генерирует инструкцию для вызова метода.
default CodeBuilder invoke(Opcode opcode, ClassDesc owner, String name, MethodTypeDesc desc, boolean isInterface)
Генерирует инструкцию для вызова метода.
default CodeBuilder invokedynamic(InvokeDynamicEntry ref)
Генерирует инструкцию для вызова динамически вычисляемой точки вызова.
default CodeBuilder invokedynamic(DynamicCallSiteDesc ref)
Генерирует инструкцию для вызова динамически вычисляемой точки вызова.
default CodeBuilder invokeinterface(InterfaceMethodRefEntry ref)
Генерирует инструкцию для вызова метода интерфейса.
default CodeBuilder invokeinterface(ClassDesc owner, String name, MethodTypeDesc type)
Генерирует инструкцию для вызова метода интерфейса.
default CodeBuilder invokespecial(InterfaceMethodRefEntry ref)
Генерирует инструкцию для вызова метода экземпляра интерфейса; прямой вызов методов текущего класса и его суперклассов.
default CodeBuilder invokespecial(MethodRefEntry ref)
Генерирует инструкцию для вызова метода экземпляра класса; прямой вызов методов инициализации экземпляра, а также методов текущего класса и его суперклассов.
default CodeBuilder invokespecial(ClassDesc owner, String name, MethodTypeDesc type)
Генерирует инструкцию для вызова метода экземпляра класса; прямой вызов методов инициализации экземпляра, а также методов текущего класса и его суперклассов.
default CodeBuilder invokespecial(ClassDesc owner, String name, MethodTypeDesc type, boolean isInterface)
Генерирует инструкцию для вызова метода экземпляра; прямой вызов методов инициализации экземпляра, а также методов текущего класса и его суперклассов.
default CodeBuilder invokestatic(InterfaceMethodRefEntry ref)
Генерирует инструкцию для вызова метода класса (статического метода) интерфейса.
default CodeBuilder invokestatic(MethodRefEntry ref)
Создает инструкцию для вызова метода класса (статического) класса.
default CodeBuilder invokestatic(ClassDesc owner, String name, MethodTypeDesc type)
Создает инструкцию для вызова метода класса (статического) класса.
default CodeBuilder invokestatic(ClassDesc owner, String name, MethodTypeDesc type, boolean isInterface)
Создает инструкцию для вызова метода класса (статического).
default CodeBuilder invokevirtual(MethodRefEntry ref)
Создает инструкцию для вызова метода экземпляра; диспетчеризация выполняется на основе класса.
default CodeBuilder invokevirtual(ClassDesc owner, String name, MethodTypeDesc type)
Создает инструкцию для вызова метода экземпляра; диспетчеризация выполняется на основе класса.
default CodeBuilder ior()
Создает инструкцию для вычисления побитового OR для ints, также используется для OR с boolean.
default CodeBuilder irem()
Создает инструкцию для вычисления остатка от деления ints.
default CodeBuilder ireturn()
Создает инструкцию для возврата int из этого метода.
default CodeBuilder ishl()
Создает инструкцию для сдвига int влево.
default CodeBuilder ishr()
Создает инструкцию для сдвига int вправо.
default CodeBuilder istore(int slot)
Создает инструкцию для сохранения int в локальную переменную.
default CodeBuilder isub()
Создает инструкцию для вычитания ints.
default CodeBuilder iushr()
Создает инструкцию для логического сдвига int вправо.
default CodeBuilder ixor()
Создает инструкцию для вычисления побитового XOR для ints.
default CodeBuilder l2d()
Создает инструкцию для преобразования long в double.
default CodeBuilder l2f()
Создает инструкцию для преобразования long в float.
default CodeBuilder l2i()
Создает инструкцию для преобразования long в int.
default CodeBuilder labelBinding(Label label)
Связывает метку с текущей позицией.
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(LoadableConstantEntry entry)
Создает инструкцию, помещающую элемент из пула констант времени выполнения в стек операндов.
default CodeBuilder ldc(ConstantDesc value)
Создает инструкцию, помещающую элемент из пула констант времени выполнения в стек операндов.
default CodeBuilder ldiv()
Создает инструкцию для деления значений longs.
default CodeBuilder lineNumber(int line)
Объявляет номер строки исходного кода, начинающейся в текущей позиции.
default CodeBuilder lload(int slot)
Создает инструкцию для загрузки значения long из локальной переменной.
default CodeBuilder lmul()
Создает инструкцию для умножения значений longs.
default CodeBuilder lneg()
Создает инструкцию для смены знака значения long.
default CodeBuilder loadConstant(double value)
Создает инструкцию, помещающую константное значение double в стек операндов.
default CodeBuilder loadConstant(float value)
Создает инструкцию, помещающую константное значение float в стек операндов.
default CodeBuilder loadConstant(int value)
Создает инструкцию, помещающую константное значение int в стек операндов.
default CodeBuilder loadConstant(long value)
Создает инструкцию, помещающую константное значение long в стек операндов.
default CodeBuilder loadConstant(ConstantDesc value)
Создает инструкцию, помещающую константу в стек операндов.
default CodeBuilder loadLocal(TypeKind tk, int slot)
Создает инструкцию для загрузки значения из локальной переменной.
default CodeBuilder localVariable(int slot, Utf8Entry nameEntry, Utf8Entry descriptorEntry, Label startScope, Label endScope)
Объявляет запись локальной переменной.
default CodeBuilder localVariable(int slot, String name, ClassDesc descriptor, Label startScope, Label endScope)
Объявляет запись локальной переменной.
default CodeBuilder localVariableType(int slot, Utf8Entry nameEntry, Utf8Entry signatureEntry, Label startScope, Label endScope)
Объявляет запись типа локальной переменной.
default CodeBuilder localVariableType(int slot, String name, Signature signature, Label startScope, Label endScope)
Объявляет запись типа локальной переменной.
default CodeBuilder lookupswitch(Label defaultTarget, List<SwitchCase> cases)
Создает инструкцию для обращения к таблице переходов по совпадению ключа и выполнения перехода.
default CodeBuilder lor()
Создает инструкцию для вычисления побитового OR для longs.
default CodeBuilder lrem()
Создает инструкцию для вычисления остатка от деления longs.
default CodeBuilder lreturn()
Создает инструкцию для возврата значения long из этого метода.
default CodeBuilder lshl()
Создает инструкцию для сдвига значения long влево.
default CodeBuilder lshr()
Создает инструкцию для сдвига значения long вправо.
default CodeBuilder lstore(int slot)
Создает инструкцию для сохранения значения long в локальную переменную.
default CodeBuilder lsub()
Создает инструкцию для вычитания значений longs.
default CodeBuilder lushr()
Создает инструкцию для логического сдвига значения long вправо.
default CodeBuilder lxor()
Создает инструкцию для вычисления побитового XOR для longs.
default CodeBuilder monitorenter()
Создает инструкцию для входа в монитор объекта.
default CodeBuilder monitorexit()
Создает инструкцию для выхода из монитора объекта.
default CodeBuilder multianewarray(ClassEntry array, int dims)
Создает инструкцию для создания нового многомерного массива.
default CodeBuilder multianewarray(ClassDesc array, int dims)
Создает инструкцию для создания нового многомерного массива.
default CodeBuilder new_(ClassEntry clazz)
Создает инструкцию для создания нового объекта.
default CodeBuilder new_(ClassDesc clazz)
Создает инструкцию для создания нового объекта.
default CodeBuilder newarray(TypeKind typeKind)
Создает инструкцию для создания нового массива примитивного типа.
default Label newBoundLabel()
Создает новую метку, связанную с текущей позицией.
Label newLabel()
Возвращает новую несвязанную метку.
default CodeBuilder nop()
Создает инструкцию, не выполняющую никаких действий.
int parameterSlot(int paramNo)
Возвращает слот локальной переменной, связанный с указанным параметром.
default CodeBuilder pop()
Создает инструкцию для извлечения верхнего значения из стека операндов.
default CodeBuilder pop2()
Создает инструкцию для извлечения одного или двух верхних значений из стека операндов.
default CodeBuilder putfield(FieldRefEntry ref)
Создает инструкцию для установки поля объекта.
default CodeBuilder putfield(ClassDesc owner, String name, ClassDesc type)
Создает инструкцию для установки поля объекта.
default CodeBuilder putstatic(FieldRefEntry ref)
Создает инструкцию для установки статического поля класса.
default CodeBuilder putstatic(ClassDesc owner, String name, ClassDesc type)
Создает инструкцию для установки статического поля класса.
int receiverSlot()
Возвращает слот локальной переменной, связанный с получателем.
default CodeBuilder return_()
Создает инструкцию для возврата void из этого метода.
default CodeBuilder return_(TypeKind tk)
Создает инструкцию возврата.
default CodeBuilder saload()
Создает инструкцию для загрузки значения из массива short.
default CodeBuilder sastore()
Создает инструкцию для сохранения значения в массив short.
default CodeBuilder sipush(int s)
Создает инструкцию, помещающую значение int в диапазоне short, [-32768, 32767] в стек операндов.
Label startLabel()
Возвращает метку, связанную с началом текущего блока.
default CodeBuilder storeLocal(TypeKind tk, int slot)
Создает инструкцию для сохранения значения в локальную переменную.
default CodeBuilder swap()
Создает инструкцию для обмена местами двух верхних значений в стеке операндов.
default CodeBuilder tableswitch(int low, int high, Label defaultTarget, List<SwitchCase> cases)
Создает инструкцию для обращения к таблице переходов по индексу и выполнения перехода.
default CodeBuilder tableswitch(Label defaultTarget, List<SwitchCase> cases)
Создает инструкцию для обращения к таблице переходов по индексу и выполнения перехода.
default CodeBuilder transforming(CodeTransform transform, Consumer<CodeBuilder> handler)
Применяет преобразование к коду, созданному обработчиком, направляя результаты этому построителю.
default CodeBuilder trying(Consumer<CodeBuilder.BlockCodeBuilder> tryHandler, Consumer<CodeBuilder.CatchBuilder> catchesHandler)
Добавляет блок «try-catch», состоящий из одного блока try и нуля или более блоков catch.

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

accept, constantPool, transform, with
Модификатор и тип Метод Описание
default void accept(CodeElement e)
Включает элемент-член в создаваемую структуру.
ConstantPoolBuilder constantPool()
Возвращает построитель пула констант, связанный с этим построителем.
default CodeBuilder transform(CompoundElement<CodeElement> model, ClassFileTransform<?, CodeElement, CodeBuilder> transform)
Применяет преобразование к составной структуре, направляя результаты этому построителю.
CodeBuilder with(CodeElement e)
Включает элемент-член в создаваемую структуру.

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

andThen
Модификатор и тип Метод Описание
default Consumer<CodeElement> andThen(Consumer<? super CodeElement> after)
Возвращает составной 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)
Добавляет блок «if-then», условием для которого является значение boolean на вершине стека операндов. Поток управления переходит в блок «then», если значение представляет собой true.

CodeBuilder.BlockCodeBuilder.breakLabel() блока «then» соответствует позиции курсора сразу после этого вызова в данном построителе.

Параметры:
thenHandler — обработчик, получающий CodeBuilder.BlockCodeBuilder для создания тела if
Возвращает:
этот построитель
См. также:
  • ifThen(Opcode, Consumer)

ifThen

default CodeBuilder ifThen(Opcode opcode, Consumer<CodeBuilder.BlockCodeBuilder> thenHandler)
Добавляет блок «if-then», условием для которого являются значения на вершине стека операндов, проверяемые в соответствии с заданным кодом операции. Поток управления переходит в блок «then», если условие перехода для opcode выполняется.

CodeBuilder.BlockCodeBuilder.breakLabel() блока «then» соответствует позиции курсора сразу после этого вызова в данном построителе.

Параметры:
opcode — код операции для инструкции перехода, принимающей один или два операнда в стеке
thenHandler — обработчик, получающий CodeBuilder.BlockCodeBuilder для создания тела if
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если код операции не предназначен для инструкции перехода, принимающей один или два операнда

ifThenElse

default CodeBuilder ifThenElse(Consumer<CodeBuilder.BlockCodeBuilder> thenHandler, Consumer<CodeBuilder.BlockCodeBuilder> elseHandler)
Добавляет блок «if-then-else», условием для которого является значение boolean на вершине стека операндов. Поток управления переходит в блок «then», если значение представляет собой true, и в противном случае переходит в блок «else».

CodeBuilder.BlockCodeBuilder.breakLabel() каждого блока соответствует позиции курсора сразу после этого вызова в данном построителе.

Параметры:
thenHandler — обработчик, получающий CodeBuilder.BlockCodeBuilder для создания тела if
elseHandler — обработчик, получающий CodeBuilder.BlockCodeBuilder для создания тела else
Возвращает:
этот построитель
См. также:
  • ifThenElse(Opcode, Consumer, Consumer)

ifThenElse

default CodeBuilder ifThenElse(Opcode opcode, Consumer<CodeBuilder.BlockCodeBuilder> thenHandler, Consumer<CodeBuilder.BlockCodeBuilder> elseHandler)
Добавляет блок «if-then-else», условием для которого являются значения на вершине стека операндов, проверяемые в соответствии с заданным кодом операции. Поток управления переходит в блок «then», если условие перехода для 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)
Добавляет блок «try-catch», состоящий из одного блока try и нуля или более блоков catch. Исключения, возникающие при выполнении инструкций в блоке try, могут перехватываться блоками catch.

CodeBuilder.BlockCodeBuilder.breakLabel() блока try и всех блоков catch в catchesHandler соответствует позиции курсора сразу после этого вызова в данном построителе.

Параметры:
tryHandler — обработчик, получающий CodeBuilder.BlockCodeBuilder для создания тела блока try.
catchesHandler — обработчик, получающий CodeBuilder.CatchBuilder для создания тел блоков catch
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если блок try пуст
См. также:
  • CodeBuilder.CatchBuilder
  • ExceptionCatch
  • exceptionCatch(Label, Label, Label, ClassEntry)

loadLocal

default CodeBuilder loadLocal(TypeKind tk, int slot)
Генерирует инструкцию для загрузки значения из локальной переменной.
Параметры:
tk — тип загружаемого значения
slot — слот локальной переменной
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если tk имеет значение void или slot не является u2
См. также:
  • LoadInstruction

storeLocal

default CodeBuilder storeLocal(TypeKind tk, int slot)
Генерирует инструкцию для сохранения значения в локальной переменной.
Параметры:
tk — тип сохраняемого значения
slot — слот локальной переменной
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если tk имеет значение void или slot не является u2
См. также:
  • StoreInstruction

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
См. также:
  • BranchInstruction

return_

default CodeBuilder return_(TypeKind tk)
Генерирует инструкцию возврата.
Параметры:
tk — тип возвращаемого значения
Возвращает:
этот построитель
См. также:
  • ReturnInstruction

fieldAccess

default CodeBuilder fieldAccess(Opcode opcode, FieldRefEntry ref)
Генерирует инструкцию для доступа к полю.
Параметры:
opcode — код операции доступа к полю
ref — ссылка на поле
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если opcode не относится к Opcode.Kind.FIELD_ACCESS
См. также:
  • FieldInstruction

fieldAccess

default CodeBuilder fieldAccess(Opcode opcode, ClassDesc owner, String name, ClassDesc type)
Генерирует инструкцию для доступа к полю.
Параметры:
opcode — код операции доступа к полю
owner — класс
name — имя поля
type — тип поля
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если opcode не относится к Opcode.Kind.FIELD_ACCESS или owner является примитивным типом
См. также:
  • FieldInstruction

invoke

default CodeBuilder invoke(Opcode opcode, MemberRefEntry ref)
Генерирует инструкцию для вызова метода.
Параметры:
opcode — код операции вызова
ref — ссылка на метод интерфейса или метод
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если opcode не относится к Opcode.Kind.INVOKE
См. также:
  • InvokeInstruction

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 является примитивным типом
См. также:
  • InvokeInstruction

arrayLoad

default CodeBuilder arrayLoad(TypeKind tk)
Генерирует инструкцию для загрузки значения из массива.
Параметры:
tk — тип элемента массива
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если tk имеет значение void
См. также:
  • ArrayLoadInstruction

arrayStore

default CodeBuilder arrayStore(TypeKind tk)
Генерирует инструкцию для сохранения значения в массиве.
Параметры:
tk — тип элемента массива
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если tk имеет значение void
См. также:
  • ArrayStoreInstruction

conversion

default CodeBuilder conversion(TypeKind fromType, TypeKind toType)
Генерирует инструкции для преобразования fromType в toType.
Параметры:
fromType — исходный тип
toType — целевой тип
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — при преобразовании void или reference
См. также:
  • ConvertInstruction

loadConstant

default CodeBuilder loadConstant(ConstantDesc value)
Генерирует инструкцию, помещающую константу в стек операндов.
Параметры:
value — значение константы; может быть null
Возвращает:
этот построитель
См. также:
  • ConstantInstruction

loadConstant

default CodeBuilder loadConstant(int value)
Генерирует инструкцию, помещающую значение константы типа int в стек операндов. Эквивалентно вызову loadConstant(Integer.valueOf(value)).
Параметры:
value — значение типа int
Возвращает:
этот построитель
См. также:
  • ConstantInstruction

loadConstant

default CodeBuilder loadConstant(long value)
Генерирует инструкцию, помещающую значение константы типа long в стек операндов. Эквивалентно вызову loadConstant(Long.valueOf(value)).
Параметры:
value — значение типа long
Возвращает:
этот построитель
См. также:
  • ConstantInstruction

loadConstant

default CodeBuilder loadConstant(float value)
Генерирует инструкцию, помещающую значение константы типа float в стек операндов. Эквивалентно вызову loadConstant(Float.valueOf(value)).

Все значения NaN типа float могут быть объединены или не объединены в одно «каноническое» значение NaN.

Параметры:
value — значение типа float
Возвращает:
этот построитель
См. также:
  • ConstantInstruction

loadConstant

default CodeBuilder loadConstant(double value)
Генерирует инструкцию, помещающую значение константы типа double в стек операндов. Эквивалентно вызову loadConstant(Double.valueOf(value)).

Все значения NaN типа double могут быть объединены или не объединены в одно «каноническое» значение NaN.

Параметры:
value — значение типа double
Возвращает:
этот построитель
См. также:
  • ConstantInstruction

nop

default CodeBuilder nop()
Генерирует инструкцию, не выполняющую никаких действий.
Возвращает:
этот построитель
См. также:
  • NopInstruction

newBoundLabel

default Label newBoundLabel()
Создаёт новую метку, связанную с текущей позицией.
Возвращает:
этот построитель
См. также:
  • newLabel()
  • labelBinding(Label)

labelBinding

default CodeBuilder labelBinding(Label label)
Связывает метку с текущей позицией.
Примечание API:
Связываемая метка не обязана быть созданной этим построителем; она может быть получена из другой разобранной модели CodeModel.
Параметры:
label — метка
Возвращает:
этот построитель
См. также:
  • LabelTarget

lineNumber

default CodeBuilder lineNumber(int line)
Объявляет номер строки исходного кода, начиная с текущей позиции.

Этот вызов может быть проигнорирован в соответствии с настройкой ClassFile.LineNumbersOption.

Параметры:
line — номер строки
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если line не является u2
См. также:
  • LineNumber

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
  • trying(Consumer, Consumer)

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
  • trying(Consumer, Consumer)

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 является примитивным типом
См. также:
  • ExceptionCatch
  • trying(Consumer, Consumer)

exceptionCatchAll

default CodeBuilder exceptionCatchAll(Label start, Label end, Label handler)
Объявляет запись таблицы исключений, перехватывающую все исключения и ошибки.

Этот вызов может быть проигнорирован, если какая-либо из меток аргументов не привязана и установлен параметр ClassFile.DeadLabelsOption.DROP_DEAD_LABELS.

Параметры:
start — начало блока try
end — конец блока try
handler — начало обработчика исключения
Возвращает:
этот построитель
См. также:
  • ExceptionCatch
  • trying(Consumer, Consumer)

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
См. также:
  • CharacterRange

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

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
См. также:
  • LocalVariable

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

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
См. также:
  • LocalVariableType

aconst_null

default CodeBuilder aconst_null()
Генерирует инструкцию, помещающую объект reference null в стек операндов.
Возвращает:
этот построитель
См. также:
  • Opcode.ACONST_NULL
  • ConstantInstruction.IntrinsicConstantInstruction

aaload

default CodeBuilder aaload()
Генерирует инструкцию для загрузки значения из массива reference.
Возвращает:
этот построитель
См. также:
  • Opcode.AALOAD
  • arrayLoad(TypeKind)
  • ArrayLoadInstruction

aastore

default CodeBuilder aastore()
Генерирует инструкцию для сохранения значения в массив reference.
Возвращает:
этот построитель
См. также:
  • Opcode.AASTORE
  • arrayStore(TypeKind)
  • ArrayStoreInstruction

aload

default CodeBuilder aload(int slot)
Генерирует инструкцию для загрузки reference из локальной переменной.

Также могут генерироваться инструкции aload_<N> и wide aload.

Параметры:
slot — слот локальной переменной
Возвращает:
этот построитель
Вызывает исключения:
IllegalArgumentException — если slot не является u2
См. также:
  • Opcode.ALOAD
  • loadLocal(TypeKind, int)
  • LoadInstruction

anewarray

default CodeBuilder anewarray(ClassEntry classEntry)
Генерирует инструкцию для создания нового массива типа reference.
Параметры:
classEntry — тип компонента
Возвращает:
этот построитель
См. также:
  • Opcode.ANEWARRAY
  • NewReferenceArrayInstruction

anewarray

default CodeBuilder anewarray(ClassDesc className)
Генерирует инструкцию для создания нового массива типа reference.
Параметры:
className — тип компонента
Возвращает:
этот построитель
Вызывает исключения:
IllegalArgumentException — если className представляет примитивный тип
См. также:
  • Opcode.ANEWARRAY
  • NewReferenceArrayInstruction

areturn

default CodeBuilder areturn()
Генерирует инструкцию для возврата reference из этого метода.
Возвращает:
этот построитель
См. также:
  • Opcode.ARETURN
  • return_(TypeKind)
  • ReturnInstruction

arraylength

default CodeBuilder arraylength()
Генерирует инструкцию для получения длины массива.
Возвращает:
этот построитель
См. также:
  • Opcode.ARRAYLENGTH
  • OperatorInstruction

astore

default CodeBuilder astore(int slot)
Генерирует инструкцию для сохранения reference в локальную переменную. Такая инструкция также может сохранять returnAddress.

Также могут генерироваться инструкции astore_<N> и wide astore.

Параметры:
slot — слот локальной переменной
Возвращает:
этот построитель
Вызывает исключения:
IllegalArgumentException — если slot не является u2
См. также:
  • Opcode.ASTORE
  • storeLocal(TypeKind, int)
  • StoreInstruction

athrow

default CodeBuilder athrow()
Генерирует инструкцию для выбрасывания исключения или ошибки.
Возвращает:
этот построитель
См. также:
  • Opcode.ATHROW
  • ThrowInstruction

baload

default CodeBuilder baload()
Генерирует инструкцию для загрузки значения из массива типа byte или boolean.
Возвращает:
этот построитель
См. также:
  • Opcode.BALOAD
  • arrayLoad(TypeKind)
  • ArrayLoadInstruction

bastore

default CodeBuilder bastore()
Генерирует инструкцию для сохранения значения в массив типа byte или boolean.
Возвращает:
этот построитель
См. также:
  • Opcode.BASTORE
  • arrayStore(TypeKind)
  • ArrayStoreInstruction

bipush

default CodeBuilder bipush(int b)
Генерирует инструкцию, помещающую целое число int в диапазоне byte ([-128, 127]) в стек операндов.
Параметры:
b — целое число в диапазоне byte
Возвращает:
этот построитель
Вызывает исключения:
IllegalArgumentException — если b выходит за пределы диапазона byte
См. также:
  • Opcode.BIPUSH
  • loadConstant(int)
  • ConstantInstruction.IntrinsicConstantInstruction

caload

default CodeBuilder caload()
Генерирует инструкцию для загрузки значения из массива типа char.
Возвращает:
этот построитель
См. также:
  • Opcode.CALOAD
  • arrayLoad(TypeKind)
  • ArrayLoadInstruction

castore

default CodeBuilder castore()
Генерирует инструкцию для сохранения значения в массив типа char.
Возвращает:
этот построитель
См. также:
  • Opcode.CASTORE
  • arrayStore(TypeKind)
  • ArrayStoreInstruction

checkcast

default CodeBuilder checkcast(ClassEntry type)
Генерирует инструкцию для проверки, принадлежит ли объект заданному типу; если проверка не пройдена, выбрасывается ClassCastException.
Параметры:
type — тип объекта
Возвращает:
этот построитель
См. также:
  • Opcode.CHECKCAST
  • TypeCheckInstruction

checkcast

default CodeBuilder checkcast(ClassDesc type)
Генерирует инструкцию для проверки, принадлежит ли объект заданному типу; если проверка не пройдена, выбрасывается ClassCastException.
Параметры:
type — тип объекта
Возвращает:
этот построитель
Вызывает исключения:
IllegalArgumentException — если type представляет примитивный тип
См. также:
  • Opcode.CHECKCAST
  • TypeCheckInstruction

d2f

default CodeBuilder d2f()
Генерирует инструкцию для преобразования значения типа double в значение типа float.
Возвращает:
этот построитель
См. также:
  • Opcode.D2F
  • ConvertInstruction

d2i

default CodeBuilder d2i()
Генерирует инструкцию для преобразования значения типа double в значение типа int.
Возвращает:
этот построитель
См. также:
  • Opcode.D2I
  • ConvertInstruction

d2l

default CodeBuilder d2l()
Генерирует инструкцию для преобразования значения типа double в значение типа long.
Возвращает:
этот построитель
См. также:
  • Opcode.D2L
  • ConvertInstruction

dadd

default CodeBuilder dadd()
Генерирует инструкцию для сложения двух значений типа doubles.
Возвращает:
этот построитель
См. также:
  • Opcode.DADD
  • OperatorInstruction

daload

default CodeBuilder daload()
Генерирует инструкцию для загрузки значения из массива типа double.
Возвращает:
этот построитель
См. также:
  • Opcode.DALOAD
  • arrayLoad(TypeKind)
  • ArrayLoadInstruction

dastore

default CodeBuilder dastore()
Генерирует инструкцию для сохранения значения в массив типа double.
Возвращает:
этот построитель
См. также:
  • Opcode.DASTORE
  • arrayStore(TypeKind)
  • ArrayStoreInstruction

dcmpg

default CodeBuilder dcmpg()
Генерирует инструкцию для сравнения двух значений типа doubles; если хотя бы один операнд является NaN, результатом будет 1.
Возвращает:
этот построитель
См. также:
  • Opcode.DCMPG
  • OperatorInstruction

dcmpl

default CodeBuilder dcmpl()
Генерирует инструкцию для сравнения двух значений типа doubles; если хотя бы один операнд является NaN, результатом будет -1.
Возвращает:
этот построитель
См. также:
  • Opcode.DCMPL
  • OperatorInstruction

dconst_0

default CodeBuilder dconst_0()
Генерирует инструкцию, помещающую константу типа double со значением 0 в стек операндов.
Возвращает:
этот построитель
См. также:
  • Opcode.DCONST_0
  • loadConstant(double)
  • ConstantInstruction.IntrinsicConstantInstruction

dconst_1

default CodeBuilder dconst_1()
Генерирует инструкцию, помещающую константу типа double со значением 1 в стек операндов.
Возвращает:
этот построитель
См. также:
  • Opcode.DCONST_1
  • loadConstant(double)
  • ConstantInstruction.IntrinsicConstantInstruction

ddiv

default CodeBuilder ddiv()
Генерирует инструкцию для деления значений типа doubles.
Возвращает:
этот построитель
См. также:
  • Opcode.DDIV
  • OperatorInstruction

dload

default CodeBuilder dload(int slot)
Генерирует инструкцию для загрузки значения типа double из локальной переменной.

Также могут генерироваться инструкции dload_<N> и wide dload.

Параметры:
slot — слот локальной переменной
Возвращает:
этот построитель
Вызывает исключения:
IllegalArgumentException — если slot не является u2
См. также:
  • Opcode.DLOAD
  • loadLocal(TypeKind, int)
  • LoadInstruction

dmul

default CodeBuilder dmul()
Генерирует инструкцию для умножения doubles.
Возвращает:
этот построитель
См. также:
  • Opcode.DMUL
  • OperatorInstruction

dneg

default CodeBuilder dneg()
Генерирует инструкцию для инвертирования знака значения типа double.
Возвращает:
этот построитель
См. также:
  • Opcode.DNEG
  • OperatorInstruction

drem

default CodeBuilder drem()
Генерирует инструкцию для вычисления остатка от деления значений типа double.
Возвращает:
этот построитель
См. также:
  • Opcode.DREM
  • OperatorInstruction

dreturn

default CodeBuilder dreturn()
Генерирует инструкцию для возврата значения типа double из этого метода.
Возвращает:
этот построитель
См. также:
  • Opcode.DRETURN
  • return_(TypeKind)
  • ReturnInstruction

dstore

default CodeBuilder dstore(int slot)
Генерирует инструкцию для сохранения значения типа double в локальную переменную.

Также могут быть сгенерированы инструкции dstore_<N> и wide dstore.

Параметры:
slot — индекс локальной переменной
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если slot не является u2
См. также:
  • Opcode.DSTORE
  • storeLocal(TypeKind, int)
  • StoreInstruction

dsub

default CodeBuilder dsub()
Генерирует инструкцию для вычитания значений типа doubles.
Возвращает:
этот построитель
См. также:
  • Opcode.DSUB
  • OperatorInstruction

dup

default CodeBuilder dup()
Генерирует инструкцию для дублирования верхнего значения стека операндов.
Возвращает:
этот построитель
См. также:
  • Opcode.DUP
  • StackInstruction

dup2

default CodeBuilder dup2()
Генерирует инструкцию для дублирования одного или двух верхних значений стека операндов.
Возвращает:
этот построитель
См. также:
  • Opcode.DUP2
  • StackInstruction

dup2_x1

default CodeBuilder dup2_x1()
Генерирует инструкцию для дублирования одного или двух верхних значений стека операндов и вставки копий на две или три позиции ниже.
Возвращает:
этот построитель
См. также:
  • Opcode.DUP2_X1
  • StackInstruction

dup2_x2

default CodeBuilder dup2_x2()
Генерирует инструкцию для дублирования одного или двух верхних значений стека операндов и вставки копий на две, три или четыре позиции ниже.
Возвращает:
этот построитель
См. также:
  • Opcode.DUP2_X2
  • StackInstruction

dup_x1

default CodeBuilder dup_x1()
Генерирует инструкцию для дублирования верхнего значения стека операндов и вставки копии на две позиции ниже.
Возвращает:
этот построитель
См. также:
  • Opcode.DUP_X1
  • StackInstruction

dup_x2

default CodeBuilder dup_x2()
Генерирует инструкцию для дублирования верхнего значения стека операндов и вставки копии на две или три позиции ниже.
Возвращает:
этот построитель
См. также:
  • Opcode.DUP_X2
  • StackInstruction

f2d

default CodeBuilder f2d()
Генерирует инструкцию для преобразования значения типа float в значение типа double.
Возвращает:
этот построитель
См. также:
  • Opcode.F2D
  • ConvertInstruction

f2i

default CodeBuilder f2i()
Генерирует инструкцию для преобразования значения типа float в значение типа int.
Возвращает:
этот построитель
См. также:
  • Opcode.F2I
  • ConvertInstruction

f2l

default CodeBuilder f2l()
Генерирует инструкцию для преобразования значения типа float в значение типа long.
Возвращает:
этот построитель
См. также:
  • Opcode.F2L
  • ConvertInstruction

fadd

default CodeBuilder fadd()
Генерирует инструкцию для сложения двух значений типа floats.
Возвращает:
этот построитель
См. также:
  • Opcode.FADD
  • OperatorInstruction

faload

default CodeBuilder faload()
Генерирует инструкцию для загрузки значения из массива типа float.
Возвращает:
этот построитель
См. также:
  • Opcode.FALOAD
  • arrayLoad(TypeKind)
  • ArrayLoadInstruction

fastore

default CodeBuilder fastore()
Генерирует инструкцию для сохранения значения в массиве типа float.
Возвращает:
этот построитель
См. также:
  • Opcode.FASTORE
  • arrayStore(TypeKind)
  • ArrayStoreInstruction

fcmpg

default CodeBuilder fcmpg()
Генерирует инструкцию для сравнения значений типа floats; если хотя бы один операнд является NaN, результатом будет 1.
Возвращает:
этот построитель
См. также:
  • Opcode.FCMPG
  • OperatorInstruction

fcmpl

default CodeBuilder fcmpl()
Генерирует инструкцию для сравнения значений типа floats; если хотя бы один операнд является NaN, результатом будет -1.
Возвращает:
этот построитель
См. также:
  • Opcode.FCMPL
  • OperatorInstruction

fconst_0

default CodeBuilder fconst_0()
Генерирует инструкцию, помещающую константу 0 типа float в стек операндов.
Возвращает:
этот построитель
См. также:
  • Opcode.FCONST_0
  • loadConstant(float)
  • ConstantInstruction.IntrinsicConstantInstruction

fconst_1

default CodeBuilder fconst_1()
Генерирует инструкцию, помещающую константу 1 типа float в стек операндов.
Возвращает:
этот построитель
См. также:
  • Opcode.FCONST_1
  • loadConstant(float)
  • ConstantInstruction.IntrinsicConstantInstruction

fconst_2

default CodeBuilder fconst_2()
Генерирует инструкцию, помещающую константу 2 типа float в стек операндов.
Возвращает:
этот построитель
См. также:
  • Opcode.FCONST_2
  • loadConstant(float)
  • ConstantInstruction.IntrinsicConstantInstruction

fdiv

default CodeBuilder fdiv()
Генерирует инструкцию для деления значений типа floats.
Возвращает:
этот построитель
См. также:
  • Opcode.FDIV
  • OperatorInstruction

fload

default CodeBuilder fload(int slot)
Генерирует инструкцию для загрузки значения типа float из локальной переменной.

Также могут быть сгенерированы инструкции fload_<N> и wide fload.

Параметры:
slot — индекс локальной переменной
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если slot не является u2
См. также:
  • Opcode.FLOAD
  • loadLocal(TypeKind, int)
  • LoadInstruction

fmul

default CodeBuilder fmul()
Генерирует инструкцию для умножения значений типа floats.
Возвращает:
этот построитель
См. также:
  • Opcode.FMUL
  • OperatorInstruction

fneg

default CodeBuilder fneg()
Генерирует инструкцию для инвертирования знака значения типа float.
Возвращает:
этот построитель
См. также:
  • Opcode.FNEG
  • OperatorInstruction

frem

default CodeBuilder frem()
Генерирует инструкцию для вычисления остатка от деления значений типа floats.
Возвращает:
этот построитель
См. также:
  • Opcode.FREM
  • OperatorInstruction

freturn

default CodeBuilder freturn()
Генерирует инструкцию для возврата значения типа float из этого метода.
Возвращает:
этот построитель
См. также:
  • Opcode.FRETURN
  • return_(TypeKind)
  • ReturnInstruction

fstore

default CodeBuilder fstore(int slot)
Генерирует инструкцию для сохранения значения типа float в локальную переменную.

Также могут быть сгенерированы инструкции fstore_<N> и wide fstore.

Параметры:
slot — индекс локальной переменной
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если slot не является u2
См. также:
  • Opcode.FSTORE
  • storeLocal(TypeKind, int)
  • StoreInstruction

fsub

default CodeBuilder fsub()
Генерирует инструкцию для вычитания значений типа floats.
Возвращает:
этот построитель
См. также:
  • Opcode.FSUB
  • OperatorInstruction

getfield

default CodeBuilder getfield(FieldRefEntry ref)
Генерирует инструкцию для получения поля объекта.
Параметры:
ref — ссылка на поле
Возвращает:
этот построитель
См. также:
  • Opcode.GETFIELD
  • fieldAccess(Opcode, FieldRefEntry)
  • FieldInstruction

getfield

default CodeBuilder getfield(ClassDesc owner, String name, ClassDesc type)
Генерирует инструкцию для получения поля объекта.
Параметры:
owner — класс-владелец
name — имя поля
type — тип поля
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если owner представляет примитивный тип
См. также:
  • Opcode.GETFIELD
  • fieldAccess(Opcode, ClassDesc, String, ClassDesc)
  • FieldInstruction

getstatic

default CodeBuilder getstatic(FieldRefEntry ref)
Генерирует инструкцию для получения статического поля класса или интерфейса.
Параметры:
ref — ссылка на поле
Возвращает:
этот построитель
См. также:
  • Opcode.GETSTATIC
  • fieldAccess(Opcode, FieldRefEntry)
  • FieldInstruction

getstatic

default CodeBuilder getstatic(ClassDesc owner, String name, ClassDesc type)
Генерирует инструкцию для получения статического поля класса или интерфейса.
Параметры:
owner — класс-владелец
name — имя поля
type — тип поля
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если owner представляет примитивный тип
См. также:
  • Opcode.GETSTATIC
  • fieldAccess(Opcode, ClassDesc, String, ClassDesc)
  • FieldInstruction

goto_

default CodeBuilder goto_(Label target)
Генерирует инструкцию для безусловного перехода.

Если задан параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, также могут быть сгенерированы инструкции goto_w.

Примечание API:
Имя инструкции — goto, которое совпадает с зарезервированным ключевым словом языка программирования Java, поэтому в конце имени этого метода добавлен суффикс _.
Параметры:
target — цель перехода
Возвращает:
этот построитель
См. также:
  • Opcode.GOTO
  • branch(Opcode, Label)
  • BranchInstruction

goto_w

default CodeBuilder goto_w(Label target)
Генерирует инструкцию для безусловного перехода с широким индексом.
Параметры:
target — цель перехода
Возвращает:
этот построитель
См. также:
  • Opcode.GOTO_W
  • branch(Opcode, Label)
  • BranchInstruction

i2b

default CodeBuilder i2b()
Генерирует инструкцию для усечения значения типа int до диапазона значений типа byte с последующим расширением знака.
Возвращает:
этот построитель
См. также:
  • Opcode.I2B
  • ConvertInstruction

i2c

default CodeBuilder i2c()
Генерирует инструкцию для усечения значения типа int до диапазона значений типа char с последующим расширением нулями.
Возвращает:
этот построитель
См. также:
  • Opcode.I2C
  • ConvertInstruction

i2d

default CodeBuilder i2d()
Генерирует инструкцию для преобразования значения типа int в значение типа double.
Возвращает:
этот построитель
См. также:
  • Opcode.I2D
  • ConvertInstruction

i2f

default CodeBuilder i2f()
Генерирует инструкцию для преобразования значения типа int в значение типа float.
Возвращает:
этот построитель
См. также:
  • Opcode.I2F
  • ConvertInstruction

i2l

default CodeBuilder i2l()
Генерирует инструкцию для преобразования значения типа int в значение типа long.
Возвращает:
этот построитель
См. также:
  • Opcode.I2L
  • ConvertInstruction

i2s

default CodeBuilder i2s()
Генерирует инструкцию для усечения значения типа int до диапазона значений типа short с последующим расширением знака.
Возвращает:
этот построитель
См. также:
  • Opcode.I2S
  • ConvertInstruction

iadd

default CodeBuilder iadd()
Генерирует инструкцию для сложения двух значений типа ints.
Возвращает:
этот построитель
См. также:
  • Opcode.IADD
  • OperatorInstruction

iaload

default CodeBuilder iaload()
Генерирует инструкцию для загрузки значения из массива типа int.
Возвращает:
этот построитель
См. также:
  • Opcode.IALOAD
  • arrayLoad(TypeKind)
  • ArrayLoadInstruction

iand

default CodeBuilder iand()
Создает инструкцию для вычисления побитового AND значений типа ints, также используемую для операции AND над значениями типа boolean.
Возвращает:
этот строитель
См. также:
  • Opcode.IAND
  • OperatorInstruction

iastore

default CodeBuilder iastore()
Создает инструкцию для сохранения значения в массиве типа int.
Возвращает:
этот строитель
См. также:
  • Opcode.IASTORE
  • arrayStore(TypeKind)
  • ArrayStoreInstruction

iconst_0

default CodeBuilder iconst_0()
Создает инструкцию, помещающую константу типа int со значением 0 в стек операндов.
Возвращает:
этот строитель
См. также:
  • Opcode.ICONST_0
  • loadConstant(int)
  • ConstantInstruction.IntrinsicConstantInstruction

iconst_1

default CodeBuilder iconst_1()
Создает инструкцию, помещающую константу типа int со значением 1 в стек операндов.
Возвращает:
этот строитель
См. также:
  • Opcode.ICONST_1
  • loadConstant(int)
  • ConstantInstruction.IntrinsicConstantInstruction

iconst_2

default CodeBuilder iconst_2()
Создает инструкцию, помещающую константу типа int со значением 2 в стек операндов.
Возвращает:
этот строитель
См. также:
  • Opcode.ICONST_2
  • loadConstant(int)
  • ConstantInstruction.IntrinsicConstantInstruction

iconst_3

default CodeBuilder iconst_3()
Создает инструкцию, помещающую константу типа int со значением 3 в стек операндов.
Возвращает:
этот строитель
См. также:
  • Opcode.ICONST_3
  • loadConstant(int)
  • ConstantInstruction.IntrinsicConstantInstruction

iconst_4

default CodeBuilder iconst_4()
Создает инструкцию, помещающую константу типа int со значением 4 в стек операндов.
Возвращает:
этот строитель
См. также:
  • Opcode.ICONST_4
  • loadConstant(int)
  • ConstantInstruction.IntrinsicConstantInstruction

iconst_5

default CodeBuilder iconst_5()
Создает инструкцию, помещающую константу типа int со значением 5 в стек операндов.
Возвращает:
этот строитель
См. также:
  • Opcode.ICONST_5
  • loadConstant(int)
  • ConstantInstruction.IntrinsicConstantInstruction

iconst_m1

default CodeBuilder iconst_m1()
Создает инструкцию, помещающую константу типа int со значением -1 в стек операндов.
Возвращает:
этот строитель
См. также:
  • Opcode.ICONST_M1
  • loadConstant(int)
  • ConstantInstruction.IntrinsicConstantInstruction

idiv

default CodeBuilder idiv()
Создает инструкцию для деления значений типа ints.
Возвращает:
этот строитель
См. также:
  • Opcode.IDIV
  • OperatorInstruction

if_acmpeq

default CodeBuilder if_acmpeq(Label target)
Создает инструкцию перехода, если сравнение ссылок reference operand1 == operand2 успешно.

Если установлен параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта могут быть созданы несколько инструкций.

Параметры:
target — целевая метка перехода
Возвращает:
этот строитель
См. также:
  • Opcode.IF_ACMPEQ
  • branch(Opcode, Label)
  • BranchInstruction

if_acmpne

default CodeBuilder if_acmpne(Label target)
Создает инструкцию перехода, если сравнение ссылок reference operand1 != operand2 успешно.

Если установлен параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта могут быть созданы несколько инструкций.

Параметры:
target — целевая метка перехода
Возвращает:
этот строитель
См. также:
  • Opcode.IF_ACMPNE
  • branch(Opcode, Label)
  • BranchInstruction

if_icmpeq

default CodeBuilder if_icmpeq(Label target)
Создает инструкцию перехода, если сравнение значений типа int operand1 == operand2 успешно.

Если установлен параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта могут быть созданы несколько инструкций.

Параметры:
target — целевая метка перехода
Возвращает:
этот строитель
См. также:
  • Opcode.IF_ICMPEQ
  • branch(Opcode, Label)
  • BranchInstruction

if_icmpge

default CodeBuilder if_icmpge(Label target)
Создает инструкцию перехода, если сравнение значений типа int operand1 >= operand2 успешно.

Если установлен параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта могут быть созданы несколько инструкций.

Параметры:
target — целевая метка перехода
Возвращает:
этот строитель
См. также:
  • Opcode.IF_ICMPGE
  • branch(Opcode, Label)
  • BranchInstruction

if_icmpgt

default CodeBuilder if_icmpgt(Label target)
Создает инструкцию перехода, если сравнение значений типа int operand1 > operand2 успешно.

Если установлен параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта могут быть созданы несколько инструкций.

Параметры:
target — целевая метка перехода
Возвращает:
этот строитель
См. также:
  • Opcode.IF_ICMPGT
  • branch(Opcode, Label)
  • BranchInstruction

if_icmple

default CodeBuilder if_icmple(Label target)
Создает инструкцию перехода, если сравнение значений типа int operand1 <= operand2 успешно.

Если установлен параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта могут быть созданы несколько инструкций.

Параметры:
target — целевая метка перехода
Возвращает:
этот строитель
См. также:
  • Opcode.IF_ICMPLE
  • branch(Opcode, Label)
  • BranchInstruction

if_icmplt

default CodeBuilder if_icmplt(Label target)
Создает инструкцию перехода, если сравнение значений типа int operand1 < operand2 успешно.

Если установлен параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта могут быть созданы несколько инструкций.

Параметры:
target — целевая метка перехода
Возвращает:
этот строитель
См. также:
  • Opcode.IF_ICMPLT
  • branch(Opcode, Label)
  • BranchInstruction

if_icmpne

default CodeBuilder if_icmpne(Label target)
Создает инструкцию перехода, если сравнение значений типа int operand1 != operand2 успешно.

Если установлен параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта могут быть созданы несколько инструкций.

Параметры:
target — целевая метка перехода
Возвращает:
этот строитель
См. также:
  • Opcode.IF_ICMPNE
  • branch(Opcode, Label)
  • BranchInstruction

ifnonnull

default CodeBuilder ifnonnull(Label target)
Создает инструкцию перехода, если ссылка reference не равна null.

Если установлен параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта могут быть созданы несколько инструкций.

Параметры:
target — целевая метка перехода
Возвращает:
этот строитель
См. также:
  • Opcode.IFNONNULL
  • branch(Opcode, Label)
  • BranchInstruction

ifnull

default CodeBuilder ifnull(Label target)
Создает инструкцию перехода, если ссылка reference равна null.

Если установлен параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта могут быть созданы несколько инструкций.

Параметры:
target — целевая метка перехода
Возвращает:
этот строитель
См. также:
  • Opcode.IFNULL
  • branch(Opcode, Label)
  • BranchInstruction

ifeq

default CodeBuilder ifeq(Label target)
Создает инструкцию перехода, если сравнение значения типа int с нулем == 0 успешно.

Если установлен параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта могут быть созданы несколько инструкций.

Параметры:
target — целевая метка перехода
Возвращает:
этот строитель
См. также:
  • Opcode.IFEQ
  • branch(Opcode, Label)
  • BranchInstruction

ifge

default CodeBuilder ifge(Label target)
Создает инструкцию перехода, если сравнение значения типа int с нулем >= 0 успешно.

Если установлен параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта могут быть созданы несколько инструкций.

Параметры:
target — целевая метка перехода
Возвращает:
этот строитель
См. также:
  • Opcode.IFGE
  • branch(Opcode, Label)
  • BranchInstruction

ifgt

default CodeBuilder ifgt(Label target)
Создает инструкцию перехода, если сравнение значения типа int с нулем > 0 успешно.

Если установлен параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта могут быть созданы несколько инструкций.

Параметры:
target — целевая метка перехода
Возвращает:
этот строитель
См. также:
  • Opcode.IFGT
  • branch(Opcode, Label)
  • BranchInstruction

ifle

default CodeBuilder ifle(Label target)
Создает инструкцию перехода, если сравнение значения типа int с нулем <= 0 успешно.

Если установлен параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта могут быть созданы несколько инструкций.

Параметры:
target — целевая метка перехода
Возвращает:
этот строитель
См. также:
  • Opcode.IFLE
  • branch(Opcode, Label)
  • BranchInstruction

iflt

default CodeBuilder iflt(Label target)
Создает инструкцию перехода, если сравнение значения типа int с нулем < 0 успешно.

Если установлен параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта могут быть созданы несколько инструкций.

Параметры:
target — целевая метка перехода
Возвращает:
этот строитель
См. также:
  • Opcode.IFLT
  • branch(Opcode, Label)
  • BranchInstruction

ifne

default CodeBuilder ifne(Label target)
Создает инструкцию перехода, если сравнение значения типа int с нулем != 0 успешно.

Если установлен параметр ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS, а target нельзя закодировать как смещение BCI в [-32768, 32767], для достижения того же эффекта могут быть созданы несколько инструкций.

Параметры:
target — целевая метка перехода
Возвращает:
этот строитель
См. также:
  • Opcode.IFNE
  • branch(Opcode, Label)
  • BranchInstruction

iinc

default CodeBuilder iinc(int slot, int val)
Создает инструкцию для увеличения значения локальной переменной типа int на константу.

Также могут быть созданы инструкции wide iinc, если slot превышает предел u1 или val выходит за диапазон byte.

Параметры:
slot — слот локальной переменной
val — значение приращения
Возвращает:
этот строитель
Выбрасывает:
IllegalArgumentException — если slot не является u2 или val выходит за диапазон short
См. также:
  • Opcode.IINC
  • IncrementInstruction

iload

default CodeBuilder iload(int slot)
Создает инструкцию для загрузки значения типа int из локальной переменной.

Также могут быть созданы инструкции iload_<N> и wide iload.

Параметры:
slot — слот локальной переменной
Возвращает:
этот строитель
Выбрасывает:
IllegalArgumentException — если slot не является u2
См. также:
  • Opcode.ILOAD
  • loadLocal(TypeKind, int)
  • LoadInstruction

imul

default CodeBuilder imul()
Создает инструкцию для умножения значений типа ints.
Возвращает:
этот строитель
См. также:
  • Opcode.IMUL
  • OperatorInstruction

ineg

default CodeBuilder ineg()
Создает инструкцию для изменения знака значения типа int.
Возвращает:
этот строитель
См. также:
  • Opcode.INEG
  • OperatorInstruction

instanceOf

default CodeBuilder instanceOf(ClassEntry target)
Создает инструкцию для определения того, принадлежит ли объект заданному типу, помещая результат типа boolean в стек операндов.
Примечание API:
Название инструкции — instanceof; оно совпадает с зарезервированным ключевым словом языка программирования Java, поэтому имя этого метода записано в стиле camelCase.
Параметры:
target — целевой тип
Возвращает:
этот строитель
См. также:
  • Opcode.INSTANCEOF
  • TypeCheckInstruction

instanceOf

default CodeBuilder instanceOf(ClassDesc target)
Создает инструкцию для определения того, принадлежит ли объект заданному типу, помещая результат типа boolean в стек операндов.
Примечание API:
Название инструкции — instanceof; оно совпадает с зарезервированным ключевым словом языка программирования Java, поэтому имя этого метода записано в стиле camelCase.
Параметры:
target — целевой тип
Возвращает:
этот строитель
Выбрасывает:
IllegalArgumentException — если target представляет примитивный тип
См. также:
  • Opcode.INSTANCEOF
  • TypeCheckInstruction

invokedynamic

default CodeBuilder invokedynamic(InvokeDynamicEntry ref)
Создает инструкцию для вызова динамически вычисляемой точки вызова.
Параметры:
ref — динамическая точка вызова
Возвращает:
этот строитель
См. также:
  • Opcode.INVOKEDYNAMIC
  • InvokeDynamicInstruction

invokedynamic

default CodeBuilder invokedynamic(DynamicCallSiteDesc ref)
Создает инструкцию для вызова динамически вычисляемой точки вызова.
Параметры:
ref — динамическая точка вызова
Возвращает:
этот строитель
См. также:
  • Opcode.INVOKEDYNAMIC
  • InvokeDynamicInstruction

invokeinterface

default CodeBuilder invokeinterface(InterfaceMethodRefEntry ref)
Генерирует инструкцию для вызова метода интерфейса.
Параметры:
ref — ссылка на метод интерфейса
Возвращает:
этот построитель
См. также:
  • Opcode.INVOKEINTERFACE
  • invoke(Opcode, MemberRefEntry)
  • InvokeInstruction

invokeinterface

default CodeBuilder invokeinterface(ClassDesc owner, String name, MethodTypeDesc type)
Генерирует инструкцию для вызова метода интерфейса.
Параметры:
owner — интерфейс-владелец
name — имя метода
type — тип метода
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если owner представляет примитивный тип
См. также:
  • Opcode.INVOKEINTERFACE
  • invoke(Opcode, ClassDesc, String, MethodTypeDesc, boolean)
  • InvokeInstruction

invokespecial

default CodeBuilder invokespecial(InterfaceMethodRefEntry ref)
Генерирует инструкцию для вызова метода экземпляра в интерфейсе; прямого вызова методов текущего класса и его суперклассов.
Параметры:
ref — ссылка на метод интерфейса
Возвращает:
этот построитель
См. также:
  • Opcode.INVOKESPECIAL
  • invoke(Opcode, MemberRefEntry)
  • InvokeInstruction

invokespecial

default CodeBuilder invokespecial(MethodRefEntry ref)
Генерирует инструкцию для вызова метода экземпляра в классе; прямого вызова методов инициализации экземпляра, а также методов текущего класса и его суперклассов.
Параметры:
ref — ссылка на метод
Возвращает:
этот построитель
См. также:
  • Opcode.INVOKESPECIAL
  • invoke(Opcode, MemberRefEntry)
  • InvokeInstruction

invokespecial

default CodeBuilder invokespecial(ClassDesc owner, String name, MethodTypeDesc type)
Генерирует инструкцию для вызова метода экземпляра в классе; прямого вызова методов инициализации экземпляра, а также методов текущего класса и его суперклассов.
Параметры:
owner — класс-владелец; не должен быть интерфейсом
name — имя метода
type — тип метода
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если owner представляет примитивный тип
См. также:
  • Opcode.INVOKESPECIAL
  • invoke(Opcode, ClassDesc, String, MethodTypeDesc, boolean)
  • InvokeInstruction

invokespecial

default CodeBuilder invokespecial(ClassDesc owner, String name, MethodTypeDesc type, boolean isInterface)
Генерирует инструкцию для вызова метода экземпляра; прямого вызова методов инициализации экземпляра, а также методов текущего класса и его суперклассов.
Параметры:
owner — класс или интерфейс-владелец
name — имя метода
type — тип метода
isInterface — является ли владелец интерфейсом
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если owner представляет примитивный тип
См. также:
  • Opcode.INVOKESPECIAL
  • invoke(Opcode, ClassDesc, String, MethodTypeDesc, boolean)
  • InvokeInstruction

invokestatic

default CodeBuilder invokestatic(InterfaceMethodRefEntry ref)
Генерирует инструкцию для вызова метода класса (статического метода) интерфейса.
Параметры:
ref — ссылка на метод интерфейса
Возвращает:
этот построитель
См. также:
  • Opcode.INVOKESTATIC
  • invoke(Opcode, MemberRefEntry)
  • InvokeInstruction

invokestatic

default CodeBuilder invokestatic(MethodRefEntry ref)
Генерирует инструкцию для вызова метода класса (статического метода) класса.
Параметры:
ref — ссылка на метод
Возвращает:
этот построитель
См. также:
  • Opcode.INVOKESTATIC
  • invoke(Opcode, MemberRefEntry)
  • InvokeInstruction

invokestatic

default CodeBuilder invokestatic(ClassDesc owner, String name, MethodTypeDesc type)
Генерирует инструкцию для вызова метода класса (статического метода) класса.
Параметры:
owner — класс-владелец; не должен быть интерфейсом
name — имя метода
type — тип метода
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если owner представляет примитивный тип
См. также:
  • Opcode.INVOKESTATIC
  • invoke(Opcode, ClassDesc, String, MethodTypeDesc, boolean)
  • InvokeInstruction

invokestatic

default CodeBuilder invokestatic(ClassDesc owner, String name, MethodTypeDesc type, boolean isInterface)
Генерирует инструкцию для вызова метода класса (статического метода).
Параметры:
owner — класс или интерфейс-владелец
name — имя метода
type — тип метода
isInterface — является ли владелец интерфейсом
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если owner представляет примитивный тип
См. также:
  • Opcode.INVOKESTATIC
  • invoke(Opcode, ClassDesc, String, MethodTypeDesc, boolean)
  • InvokeInstruction

invokevirtual

default CodeBuilder invokevirtual(MethodRefEntry ref)
Генерирует инструкцию для вызова метода экземпляра; диспетчеризация выполняется на основе класса.
Параметры:
ref — ссылка на метод
Возвращает:
этот построитель
См. также:
  • Opcode.INVOKEVIRTUAL
  • invoke(Opcode, MemberRefEntry)
  • InvokeInstruction

invokevirtual

default CodeBuilder invokevirtual(ClassDesc owner, String name, MethodTypeDesc type)
Генерирует инструкцию для вызова метода экземпляра; диспетчеризация выполняется на основе класса.
Параметры:
owner — класс-владелец; не должен быть интерфейсом
name — имя метода
type — тип метода
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если owner представляет примитивный тип
См. также:
  • Opcode.INVOKEVIRTUAL
  • invoke(Opcode, ClassDesc, String, MethodTypeDesc, boolean)
  • InvokeInstruction

ior

default CodeBuilder ior()
Генерирует инструкцию для вычисления побитового ИЛИ значений ints, также используемую для операции ИЛИ над boolean.
Возвращает:
этот построитель
См. также:
  • Opcode.IOR
  • OperatorInstruction

irem

default CodeBuilder irem()
Генерирует инструкцию для вычисления остатка от деления ints.
Возвращает:
этот построитель
См. также:
  • Opcode.IREM
  • OperatorInstruction

ireturn

default CodeBuilder ireturn()
Генерирует инструкцию для возврата значения типа int из этого метода.
Возвращает:
этот построитель
См. также:
  • Opcode.IRETURN
  • return_(TypeKind)
  • ReturnInstruction

ishl

default CodeBuilder ishl()
Генерирует инструкцию для сдвига значения типа int влево.
Возвращает:
этот построитель
См. также:
  • Opcode.ISHL
  • OperatorInstruction

ishr

default CodeBuilder ishr()
Генерирует инструкцию для сдвига значения типа int вправо. При этом бит знака переносится в освободившиеся старшие разряды, в отличие от iushr(), которая заполняет освободившиеся старшие разряды значением 0.
Возвращает:
этот построитель
См. также:
  • Opcode.ISHR
  • OperatorInstruction

istore

default CodeBuilder istore(int slot)
Генерирует инструкцию для сохранения значения типа int в локальную переменную.

При этом также могут быть сгенерированы инструкции istore_<N> и wide istore.

Параметры:
slot — индекс локальной переменной
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если slot не является u2
См. также:
  • Opcode.ISTORE
  • storeLocal(TypeKind, int)
  • StoreInstruction

isub

default CodeBuilder isub()
Генерирует инструкцию для вычитания значений типа ints.
Возвращает:
этот построитель
См. также:
  • Opcode.ISUB
  • OperatorInstruction

iushr

default CodeBuilder iushr()
Генерирует инструкцию для логического сдвига значения типа int вправо. Освободившиеся старшие разряды заполняются значением 0, в отличие от ishr(), которая переносит бит знака в освободившиеся старшие разряды.
Возвращает:
этот построитель
См. также:
  • Opcode.IUSHR
  • OperatorInstruction

ixor

default CodeBuilder ixor()
Генерирует инструкцию для вычисления побитового исключающего ИЛИ значений типа ints. Также может использоваться для операции исключающего ИЛИ над boolean.
Возвращает:
этот построитель
См. также:
  • Opcode.IXOR
  • OperatorInstruction

lookupswitch

default CodeBuilder lookupswitch(Label defaultTarget, List<SwitchCase> cases)
Генерирует инструкцию для обращения к таблице переходов по совпадению ключа и выполнения перехода.
Параметры:
defaultTarget — целевая метка перехода по умолчанию
cases — варианты переключения
Возвращает:
этот построитель
См. также:
  • Opcode.LOOKUPSWITCH
  • LookupSwitchInstruction

l2d

default CodeBuilder l2d()
Генерирует инструкцию для преобразования значения типа long в значение типа double.
Возвращает:
этот построитель
См. также:
  • Opcode.L2D
  • OperatorInstruction

l2f

default CodeBuilder l2f()
Генерирует инструкцию для преобразования значения типа long в значение типа float.
Возвращает:
этот построитель
См. также:
  • Opcode.L2F
  • OperatorInstruction

l2i

default CodeBuilder l2i()
Генерирует инструкцию для преобразования значения типа long в значение типа int.
Возвращает:
этот построитель
См. также:
  • Opcode.L2I
  • OperatorInstruction

ladd

default CodeBuilder ladd()
Генерирует инструкцию для сложения двух значений типа longs.
Возвращает:
этот построитель
См. также:
  • Opcode.LADD
  • OperatorInstruction

laload

default CodeBuilder laload()
Генерирует инструкцию для загрузки из массива значений типа long.
Возвращает:
этот построитель
См. также:
  • Opcode.LALOAD
  • arrayLoad(TypeKind)
  • ArrayLoadInstruction

land

default CodeBuilder land()
Генерирует инструкцию для вычисления побитового И значений типа longs.
Возвращает:
этот построитель
См. также:
  • Opcode.LAND
  • OperatorInstruction

lastore

default CodeBuilder lastore()
Генерирует инструкцию для сохранения значения в массиве значений типа long.
Возвращает:
этот построитель
См. также:
  • Opcode.LASTORE
  • arrayStore(TypeKind)
  • ArrayStoreInstruction

lcmp

default CodeBuilder lcmp()
Генерирует инструкцию для сравнения значений типа longs.
Возвращает:
этот построитель
См. также:
  • Opcode.LCMP
  • OperatorInstruction

lconst_0

default CodeBuilder lconst_0()
Генерирует инструкцию для помещения константы типа long со значением 0 в стек операндов.
Возвращает:
этот построитель
См. также:
  • Opcode.LCONST_0
  • loadConstant(long)
  • ConstantInstruction.IntrinsicConstantInstruction

lconst_1

default CodeBuilder lconst_1()
Генерирует инструкцию для помещения константы типа long со значением 1 в стек операндов.
Возвращает:
этот построитель
См. также:
  • Opcode.LCONST_1
  • loadConstant(long)
  • ConstantInstruction.IntrinsicConstantInstruction

ldc

default CodeBuilder ldc(ConstantDesc value)
Генерирует инструкцию для помещения элемента из пула констант времени выполнения в стек операндов.

При этом также могут быть сгенерированы инструкции ldc_w и ldc2_w.

Примечание к API:
loadConstant генерирует более оптимальные инструкции и должен использоваться для обычных констант, если инструкция ldc не является обязательной.
Параметры:
value — значение константы
Возвращает:
этот построитель
См. также:
  • Opcode.LDC
  • loadConstant(ConstantDesc)
  • ConstantInstruction.LoadConstantInstruction

ldc

default CodeBuilder ldc(LoadableConstantEntry entry)
Генерирует инструкцию для помещения элемента из пула констант времени выполнения в стек операндов.

При этом также могут быть сгенерированы инструкции ldc_w и ldc2_w.

Параметры:
entry — значение константы
Возвращает:
этот построитель
См. также:
  • Opcode.LDC
  • loadConstant(ConstantDesc)
  • ConstantInstruction.LoadConstantInstruction

ldiv

default CodeBuilder ldiv()
Генерирует инструкцию для деления значений типа longs.
Возвращает:
этот построитель
См. также:
  • Opcode.LDIV
  • OperatorInstruction

lload

default CodeBuilder lload(int slot)
Генерирует инструкцию для загрузки значения типа long из локальной переменной.

При этом также могут быть сгенерированы инструкции lload_<N> и wide lload.

Параметры:
slot — индекс локальной переменной
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если slot не является u2
См. также:
  • Opcode.LLOAD
  • loadLocal(TypeKind, int)
  • LoadInstruction

lmul

default CodeBuilder lmul()
Генерирует инструкцию для умножения значений типа longs.
Возвращает:
этот построитель
См. также:
  • Opcode.LMUL
  • OperatorInstruction

lneg

default CodeBuilder lneg()
Генерирует инструкцию для смены знака значения типа long.
Возвращает:
этот построитель
См. также:
  • Opcode.LNEG
  • OperatorInstruction

lor

default CodeBuilder lor()
Генерирует инструкцию для вычисления побитового ИЛИ значений типа longs.
Возвращает:
этот построитель
См. также:
  • Opcode.LOR
  • OperatorInstruction

lrem

default CodeBuilder lrem()
Создает инструкцию для вычисления остатка от деления longs.
Возвращает:
этот построитель
См. также:
  • Opcode.LREM
  • OperatorInstruction

lreturn

default CodeBuilder lreturn()
Создает инструкцию для возврата значения типа long из этого метода.
Возвращает:
этот построитель
См. также:
  • Opcode.LRETURN
  • return_(TypeKind)
  • ReturnInstruction

lshl

default CodeBuilder lshl()
Создает инструкцию для сдвига значения типа long влево.
Возвращает:
этот построитель
См. также:
  • Opcode.LSHL
  • OperatorInstruction

lshr

default CodeBuilder lshr()
Создает инструкцию для сдвига значения типа long вправо. При этом знаковый бит переносится в освобожденные старшие разряды, в отличие от lushr(), которая заполняет освобожденные старшие разряды значением 0.
Возвращает:
этот построитель
См. также:
  • Opcode.LSHR
  • OperatorInstruction

lstore

default CodeBuilder lstore(int slot)
Создает инструкцию для сохранения значения типа long в локальной переменной.

Также могут быть созданы инструкции lstore_<N> и wide lstore.

Параметры:
slot — слот локальной переменной
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если slot не является u2
См. также:
  • Opcode.LSTORE
  • storeLocal(TypeKind, int)
  • StoreInstruction

lsub

default CodeBuilder lsub()
Создает инструкцию для вычитания значений типа longs.
Возвращает:
этот построитель
См. также:
  • Opcode.LSUB
  • OperatorInstruction

lushr

default CodeBuilder lushr()
Создает инструкцию для логического сдвига значения типа long вправо. Она заполняет освобожденные старшие разряды значением 0, в отличие от lshr(), которая переносит знаковый бит в освобожденные старшие разряды.
Возвращает:
этот построитель
См. также:
  • Opcode.LUSHR
  • OperatorInstruction

lxor

default CodeBuilder lxor()
Создает инструкцию для вычисления побитового исключающего ИЛИ значений типа longs.
Возвращает:
этот построитель
См. также:
  • Opcode.LXOR
  • OperatorInstruction

monitorenter

default CodeBuilder monitorenter()
Создает инструкцию для входа в монитор объекта.
Возвращает:
этот построитель
См. также:
  • Opcode.MONITORENTER
  • MonitorInstruction

monitorexit

default CodeBuilder monitorexit()
Создает инструкцию для выхода из монитора объекта.
Возвращает:
этот построитель
См. также:
  • Opcode.MONITOREXIT
  • MonitorInstruction

multianewarray

default CodeBuilder multianewarray(ClassEntry array, int dims)
Создает инструкцию для создания нового многомерного массива.
Параметры:
array — тип массива
dims — количество измерений
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если dims выходит за допустимый диапазон
См. также:
  • Opcode.MULTIANEWARRAY
  • NewMultiArrayInstruction

multianewarray

default CodeBuilder multianewarray(ClassDesc array, int dims)
Создает инструкцию для создания нового многомерного массива.
Параметры:
array — тип массива
dims — количество измерений
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если array представляет примитивный тип или если dims выходит за допустимый диапазон
См. также:
  • Opcode.MULTIANEWARRAY
  • NewMultiArrayInstruction

new_

default CodeBuilder new_(ClassEntry clazz)
Создает инструкцию для создания нового объекта.
Примечание API:
Название инструкции — new, что совпадает с зарезервированным ключевым словом языка программирования Java, поэтому к имени этого метода добавлен суффикс _.
Параметры:
clazz — тип нового класса
Возвращает:
этот построитель
См. также:
  • Opcode.NEW
  • NewObjectInstruction

new_

default CodeBuilder new_(ClassDesc clazz)
Создает инструкцию для создания нового объекта.
Примечание API:
Название инструкции — new, что совпадает с зарезервированным ключевым словом языка программирования Java, поэтому к имени этого метода добавлен суффикс _.
Параметры:
clazz — тип нового класса
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если clazz представляет примитивный тип
См. также:
  • Opcode.NEW
  • NewObjectInstruction

newarray

default CodeBuilder newarray(TypeKind typeKind)
Создает инструкцию для создания нового массива примитивного типа.
Параметры:
typeKind — тип массива примитивов
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если typeKind не является допустимым типом компонента массива примитивов
См. также:
  • Opcode.NEWARRAY
  • NewPrimitiveArrayInstruction

pop

default CodeBuilder pop()
Создает инструкцию для извлечения верхнего значения из стека операндов.
Возвращает:
этот построитель
См. также:
  • Opcode.POP
  • StackInstruction

pop2

default CodeBuilder pop2()
Создает инструкцию для извлечения одного или двух верхних значений из стека операндов.
Возвращает:
этот построитель
См. также:
  • Opcode.POP2
  • StackInstruction

putfield

default CodeBuilder putfield(FieldRefEntry ref)
Создает инструкцию для установки значения поля объекта.
Параметры:
ref — ссылка на поле
Возвращает:
этот построитель
См. также:
  • Opcode.PUTFIELD
  • fieldAccess(Opcode, FieldRefEntry)
  • FieldInstruction

putfield

default CodeBuilder putfield(ClassDesc owner, String name, ClassDesc type)
Создает инструкцию для установки значения поля объекта.
Параметры:
owner — класс-владелец
name — имя поля
type — тип поля
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если owner представляет примитивный тип
См. также:
  • Opcode.PUTFIELD
  • fieldAccess(Opcode, ClassDesc, String, ClassDesc)
  • FieldInstruction

putstatic

default CodeBuilder putstatic(FieldRefEntry ref)
Создает инструкцию для установки значения статического поля класса.
Параметры:
ref — ссылка на поле
Возвращает:
этот построитель
См. также:
  • Opcode.PUTSTATIC
  • fieldAccess(Opcode, FieldRefEntry)
  • FieldInstruction

putstatic

default CodeBuilder putstatic(ClassDesc owner, String name, ClassDesc type)
Создает инструкцию для установки значения статического поля класса.
Параметры:
owner — класс или интерфейс-владелец
name — имя поля
type — тип поля
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если owner представляет примитивный тип
См. также:
  • Opcode.PUTSTATIC
  • fieldAccess(Opcode, ClassDesc, String, ClassDesc)
  • FieldInstruction

return_

default CodeBuilder return_()
Создает инструкцию для возврата значения типа void из этого метода.
Примечание API:
Название инструкции — return, что совпадает с зарезервированным ключевым словом языка программирования Java, поэтому к имени этого метода добавлен суффикс _.
Возвращает:
этот построитель
См. также:
  • Opcode.RETURN
  • return_(TypeKind)
  • ReturnInstruction

saload

default CodeBuilder saload()
Создает инструкцию для загрузки значения из массива типа short.
Возвращает:
этот построитель
См. также:
  • Opcode.SALOAD
  • arrayLoad(TypeKind)
  • ArrayLoadInstruction

sastore

default CodeBuilder sastore()
Создает инструкцию для сохранения значения в массив типа short.
Возвращает:
этот построитель
См. также:
  • Opcode.SASTORE
  • arrayStore(TypeKind)
  • ArrayStoreInstruction

sipush

default CodeBuilder sipush(int s)
Создает инструкцию, помещающую в стек операндов значение типа int в диапазоне типа short, [-32768, 32767].
Параметры:
s — значение типа int в диапазоне типа short
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если s выходит за диапазон типа short
См. также:
  • Opcode.SIPUSH
  • loadConstant(int)
  • ConstantInstruction.ArgumentConstantInstruction

swap

default CodeBuilder swap()
Создает инструкцию для обмена местами двух верхних значений в стеке операндов.
Возвращает:
этот построитель
См. также:
  • Opcode.SWAP
  • StackInstruction

tableswitch

default CodeBuilder tableswitch(int low, int high, Label defaultTarget, List<SwitchCase> cases)
Создает инструкцию для обращения к таблице переходов по индексу и выполнения перехода.
Параметры:
low — минимальный ключ включительно
high — максимальный ключ включительно
defaultTarget — цель перехода по умолчанию
cases — варианты switch
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если нижнее значение больше верхнего или если между нижним и верхним значениями указано слишком много целей перехода
См. также:
  • Opcode.TABLESWITCH
  • TableSwitchInstruction

tableswitch

default CodeBuilder tableswitch(Label defaultTarget, List<SwitchCase> cases)
Создает инструкцию для обращения к таблице переходов по индексу и выполнения перехода. Вычисляет минимальный и максимальный ключи на основе cases.
Параметры:
defaultTarget — цель перехода по умолчанию
cases — варианты switch
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если cases пусто
См. также:
  • Opcode.TABLESWITCH
  • tableswitch(int, int, Label, List)
  • TableSwitchInstruction

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