Spec-Zone.ru › OpenJDK 25

Интерфейс 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. В отличие от других построителей, порядок элементов в построителе кода имеет значение: он влияет на результирующий байт-код. Многие параметры API Class-File влияют на построители кода: 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()
Генерирует инструкцию, помещающую константу 0 типа double в стек операндов.
default CodeBuilder dconst_1()
Генерирует инструкцию, помещающую константу 1 типа double в стек операндов.
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()
Генерирует инструкцию, помещающую константу 0 типа float в стек операндов.
default CodeBuilder fconst_1()
Генерирует инструкцию, помещающую константу 1 типа float в стек операндов.
default CodeBuilder fconst_2()
Генерирует инструкцию, помещающую константу 2 типа float в стек операндов.
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()
Генерирует инструкцию, помещающую константу 0 типа int в стек операндов.
default CodeBuilder iconst_1()
Генерирует инструкцию, помещающую константу 1 типа int в стек операндов.
default CodeBuilder iconst_2()
Генерирует инструкцию, помещающую константу 2 типа int в стек операндов.
default CodeBuilder iconst_3()
Генерирует инструкцию, помещающую константу 3 типа int в стек операндов.
default CodeBuilder iconst_4()
Генерирует инструкцию, помещающую константу 4 типа int в стек операндов.
default CodeBuilder iconst_5()
Генерирует инструкцию, помещающую константу 5 типа int в стек операндов.
default CodeBuilder iconst_m1()
Генерирует инструкцию, помещающую константу -1 типа int в стек операндов.
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()
Создает инструкцию для вычисления побитового ИЛИ значений ints; также используется для операции ИЛИ над значениями 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()
Создает инструкцию для вычисления побитового исключающего ИЛИ значений 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()
Создает инструкцию для вычисления побитового И значений longs.
default CodeBuilder lastore()
Создает инструкцию для сохранения значения в массив long.
default CodeBuilder lcmp()
Создает инструкцию для сравнения значений longs.
default CodeBuilder lconst_0()
Создает инструкцию для помещения константы 0 типа long в стек операндов.
default CodeBuilder lconst_1()
Создает инструкцию для помещения константы 1 типа long в стек операндов.
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()
Создает инструкцию для вычисления побитового ИЛИ значений 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()
Создает инструкцию для вычисления побитового исключающего ИЛИ значений 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

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

andThen

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

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.

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

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

ifThen

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

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

Параметры:
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.

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

Параметры:
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 выходит за допустимые границы
См. также:
  • LoadInstruction

storeLocal

default CodeBuilder storeLocal(TypeKind tk, int slot)
Генерирует инструкцию для сохранения значения в локальной переменной.
Параметры:
tk — тип сохраняемого значения
slot — слот локальной переменной
Возвращает:
этот построитель
Выбрасывает:
IllegalArgumentException — если tk имеет тип void или slot выходит за допустимые границы
См. также:
  • 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 — номер строки
Возвращает:
этот построитель
См. также:
  • 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 - слово флагов, указывающее тип диапазона
Возвращает:
этот построитель
См. также:
  • 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 выходит за допустимый диапазон
См. также:
  • 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 выходит за допустимый диапазон
См. также:
  • 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 выходит за допустимый диапазон
См. также:
  • 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 выходит за допустимый диапазон
См. также:
  • LocalVariableType

aconst_null

default CodeBuilder aconst_null()
Создает инструкцию, помещающую объект null reference в стек операндов.
Возвращает:
этот построитель
См. также:
  • 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 выходит за допустимый диапазон
См. также:
  • 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 выходит за допустимый диапазон
См. также:
  • 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 - значение int в диапазоне 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 выходит за допустимый диапазон
См. также:
  • 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 выходит за допустимый диапазон
См. также:
  • 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 выходит за допустимый диапазон
См. также:
  • 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 выходит за допустимый диапазон
См. также:
  • 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()
Генерирует инструкцию для вычисления побитового И значений типа ints; также используется для операции И над значениями типа 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 превышает 255 или val выходит за диапазон byte.

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

iload

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

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

Параметры:
slot — слот локальной переменной
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если slot выходит за допустимый диапазон
См. также:
  • 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 выходит за допустимый диапазон
См. также:
  • 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()
Генерирует инструкцию, помещающую константу 0 типа long в стек операндов.
Возвращает:
этот построитель
См. также:
  • Opcode.LCONST_0
  • loadConstant(long)
  • ConstantInstruction.IntrinsicConstantInstruction

lconst_1

default CodeBuilder lconst_1()
Генерирует инструкцию, помещающую константу 1 типа long в стек операндов.
Возвращает:
этот построитель
См. также:
  • 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 выходит за допустимый диапазон
См. также:
  • 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 выходит за допустимый диапазон
См. также:
  • 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
Возвращает:
этот построитель
См. также:
  • Opcode.TABLESWITCH
  • TableSwitchInstruction

tableswitch

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

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, включая концептуальные обзоры, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/classfile/CodeBuilder.html

Spec-Zone.ru

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