Spec-Zone.ru › OpenJDK 24

Интерфейс CodeBuilder

Все суперинтерфейсы:
ClassFileBuilder<CodeElement, CodeBuilder>, Consumer<CodeElement>
Все известные подинтерфейсы:
CodeBuilder.BlockCodeBuilder
public sealed interface CodeBuilder extends ClassFileBuilder<CodeElement, CodeBuilder> permits CodeBuilder.BlockCodeBuilder (not exhaustive)
Создатель атрибутов Code (тела методов). MethodBuilder.withCode(java.util.function.Consumer<? super java.lang.classfile.CodeBuilder>) — базовый способ получения создателя кода; ClassBuilder.withMethodBody(java.lang.classfile.constantpool.Utf8Entry, java.lang.classfile.constantpool.Utf8Entry, int, java.util.function.Consumer<? super java.lang.classfile.CodeBuilder>) — сокращённый способ. Также существуют производные создатели кода от block(java.util.function.Consumer<java.lang.classfile.CodeBuilder.BlockCodeBuilder>), который обрабатывает блоки кода, и transforming(java.lang.classfile.CodeTransform, java.util.function.Consumer<java.lang.classfile.CodeBuilder>), который выполняет преобразования над существующими обработчиками, для обоих которых предварительно требуется доступный создатель кода.

Обратитесь к ClassFileBuilder за общими рекомендациями и предосторожностями при использовании создателей для структур в формате файла class. В отличие от других создателей, порядок элементов-членов в создателе кода имеет значение: он влияет на результирующий байт-код. Многие опции 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(java.lang.constant.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(java.util.function.Consumer<? super java.lang.classfile.CodeBuilder>)
  • CodeModel
  • CodeTransform

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

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

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

Модификатор и тип Метод Описание
default CodeBuilder aaload()
Генерирует инструкцию загрузки из массива reference.
default CodeBuilder aastore()
Генерирует инструкцию сохранения в массив reference.
default CodeBuilder aconst_null()
Генерирует инструкцию, помещающую нулевой объект reference на стек операндов.
int allocateLocal(TypeKind typeKind)
Возвращает слот локальной переменной для новой локальной переменной.
default CodeBuilder aload(int slot)
Генерирует инструкцию загрузки reference из локальной переменной.
default CodeBuilder anewarray(ClassEntry classEntry)
Генерирует инструкцию создания нового массива reference.
default CodeBuilder anewarray(ClassDesc className)
Генерирует инструкцию создания нового массива reference.
default CodeBuilder areturn()
Генерирует инструкцию возвращения reference из этого метода.
default CodeBuilder arraylength()
Генерирует инструкцию получения длины массива.
default CodeBuilder arrayLoad(TypeKind tk)
Генерирует инструкцию загрузки из массива.
default CodeBuilder arrayStore(TypeKind tk)
Генерирует инструкцию сохранения в массив.
default CodeBuilder astore(int slot)
Генерирует инструкцию сохранения reference в локальную переменную.
default CodeBuilder athrow()
Генерирует инструкцию выброса исключения или ошибки.
default CodeBuilder baload()
Генерирует инструкцию загрузки из массива byte или boolean.
default CodeBuilder bastore()
Генерирует инструкцию сохранения в массив byte или boolean.
default CodeBuilder bipush(int b)
Генерирует инструкцию помещения целого числа int в диапазоне byte ([-128, 127]) на стек операндов.
default CodeBuilder block(Consumer<CodeBuilder.BlockCodeBuilder> handler)
Добавляет лексический блок к строящемуся методу.
default CodeBuilder branch(Opcode op, Label target)
Генерирует инструкцию перехода.
default CodeBuilder caload()
Генерирует инструкцию загрузки из массива char.
default CodeBuilder castore()
Генерирует инструкцию сохранения в массив char.
default CodeBuilder characterRange(Label startScope, Label endScope, int characterRangeStart, int characterRangeEnd, int flags)
Объявляет запись диапазона символов.
default CodeBuilder checkcast(ClassEntry type)
Генерирует инструкцию проверки типа объекта, выбросив исключение ClassCastException в случае неудачи.
default CodeBuilder checkcast(ClassDesc type)
Генерирует инструкцию проверки типа объекта, выбросив исключение ClassCastException в случае неудачи.
default CodeBuilder conversion(TypeKind fromType, TypeKind toType)
Генерирует инструкцию(и) преобразования fromType в toType.
default CodeBuilder d2f()
Генерирует инструкцию преобразования double в float.
default CodeBuilder d2i()
Генерирует инструкцию преобразования double в int.
default CodeBuilder d2l()
Генерирует инструкцию преобразования double в long.
default CodeBuilder dadd()
Генерирует инструкцию сложения двух doubles.
default CodeBuilder daload()
Генерирует инструкцию загрузки из массива double.
default CodeBuilder dastore()
Генерирует инструкцию сохранения в массив double.
default CodeBuilder dcmpg()
Генерирует инструкцию сравнения двух doubles, генерируя 1, если какой-либо операнд NaN.
default CodeBuilder dcmpl()
Генерирует инструкцию сравнения двух doubles, генерируя -1, если какой-либо операнд NaN.
default CodeBuilder dconst_0()
Генерирует инструкцию помещения константы double 0 на стек операндов.
default CodeBuilder dconst_1()
Генерирует инструкцию помещения константы double 1 на стек операндов.
default CodeBuilder ddiv()
Генерирует инструкцию деления doubles.
default CodeBuilder dload(int slot)
Генерирует инструкцию загрузки double из локальной переменной.
default CodeBuilder dmul()
Генерирует инструкцию умножения doubles.
default CodeBuilder dneg()
Генерирует инструкцию изменения знака double.
default CodeBuilder drem()
Генерирует инструкцию вычисления остатка от деления double.
default CodeBuilder dreturn()
Генерирует инструкцию возвращения double из этого метода.
default CodeBuilder dstore(int slot)
Генерирует инструкцию сохранения double в локальную переменную.
default CodeBuilder dsub()
Генерирует инструкцию вычитания doubles.
default CodeBuilder dup()
Генерирует инструкцию дублирования значения вершины стека операндов.
default CodeBuilder dup_x1()
Генерирует инструкцию дублирования значения вершины стека операндов и вставки двух значений вниз.
default CodeBuilder dup_x2()
Генерирует инструкцию дублирования значения вершины стека операндов и вставки двух или трёх значений вниз.
default CodeBuilder dup2()
Генерирует инструкцию дублирования значения вершины стека операндов или двух значений.
default CodeBuilder dup2_x1()
Генерирует инструкцию дублирования значений вершины стека операндов или двух значений и вставку двух или трёх значений вниз.
default CodeBuilder dup2_x2()
Генерирует инструкцию дублирования значений вершины стека операндов или двух значений и вставку двух, трёх или четырёх значений вниз.
Label endLabel()
Возвращает метку, связанную с концом текущего блока.
default CodeBuilder exceptionCatch(Label start, Label end, Label handler, ClassEntry catchType)
Объявляет запись таблицы исключений.
default CodeBuilder exceptionCatch(Label start, Label end, Label handler, ClassDesc catchType)
Объявляет запись таблицы исключений.
default CodeBuilder exceptionCatch(Label start, Label end, Label handler, Optional<ClassEntry> catchType)
Объявляет запись таблицы исключений.
default CodeBuilder exceptionCatchAll(Label start, Label end, Label handler)
Объявляет запись таблицы исключений, перехватывающую все исключения и ошибки.
default CodeBuilder f2d()
Генерирует инструкцию для преобразования float в double.
default CodeBuilder f2i()
Генерирует инструкцию для преобразования float в int.
default CodeBuilder f2l()
Генерирует инструкцию для преобразования float в long.
default CodeBuilder fadd()
Генерирует инструкцию для сложения двух floats.
default CodeBuilder faload()
Генерирует инструкцию для загрузки из массива float.
default CodeBuilder fastore()
Генерирует инструкцию для сохранения в массив float.
default CodeBuilder fcmpg()
Генерирует инструкцию для сравнения floats, возвращающую 1, если любой операнд является NaN.
default CodeBuilder fcmpl()
Генерирует инструкцию для сравнения floats, возвращающую -1, если любой операнд является NaN.
default CodeBuilder fconst_0()
Генерирует инструкцию, помещающую константу float 0 на стек операндов.
default CodeBuilder fconst_1()
Генерирует инструкцию, помещающую константу float 1 на стек операндов.
default CodeBuilder fconst_2()
Генерирует инструкцию, помещающую константу float 2 на стек операндов.
default CodeBuilder fdiv()
Генерирует инструкцию для деления floats.
default CodeBuilder fieldAccess(Opcode opcode, FieldRefEntry ref)
Генерирует инструкцию для доступа к полю.
default CodeBuilder fieldAccess(Opcode opcode, ClassDesc owner, String name, ClassDesc type)
Генерирует инструкцию для доступа к полю.
default CodeBuilder fload(int slot)
Генерирует инструкцию для загрузки float из локальной переменной.
default CodeBuilder fmul()
Генерирует инструкцию для умножения floats.
default CodeBuilder fneg()
Генерирует инструкцию для взятия противоположного значения float.
default CodeBuilder frem()
Генерирует инструкцию для вычисления остатка от деления floats.
default CodeBuilder freturn()
Генерирует инструкцию для возврата float из этого метода.
default CodeBuilder fstore(int slot)
Генерирует инструкцию для сохранения float в локальную переменную.
default CodeBuilder fsub()
Генерирует инструкцию для вычитания floats.
default CodeBuilder getfield(FieldRefEntry ref)
Генерирует инструкцию для получения поля из объекта.
default CodeBuilder getfield(ClassDesc owner, String name, ClassDesc type)
Генерирует инструкцию для получения поля из объекта.
default CodeBuilder getstatic(FieldRefEntry ref)
Генерирует инструкцию для получения статического поля из класса или интерфейса.
default CodeBuilder getstatic(ClassDesc owner, String name, ClassDesc type)
Генерирует инструкцию для получения статического поля из класса или интерфейса.
default CodeBuilder goto_(Label target)
Генерирует инструкцию для безусловного перехода.
default CodeBuilder goto_w(Label target)
Генерирует инструкцию для безусловного перехода с широким индексом.
default CodeBuilder i2b()
Генерирует инструкцию для усечения int до диапазона byte и знакового расширения.
default CodeBuilder i2c()
Генерирует инструкцию для усечения int до диапазона char и безнакового расширения.
default CodeBuilder i2d()
Генерирует инструкцию для преобразования int в double.
default CodeBuilder i2f()
Генерирует инструкцию для преобразования int в float.
default CodeBuilder i2l()
Генерирует инструкцию для преобразования int в long.
default CodeBuilder i2s()
Генерирует инструкцию для усечения int до диапазона short и знакового расширения.
default CodeBuilder iadd()
Генерирует инструкцию для сложения двух ints.
default CodeBuilder iaload()
Генерирует инструкцию для загрузки из массива int.
default CodeBuilder iand()
Генерирует инструкцию для вычисления побитового И ints, также используется для boolean И.
default CodeBuilder iastore()
Генерирует инструкцию для сохранения в массив int.
default CodeBuilder iconst_0()
Генерирует инструкцию, помещающую константу int 0 на стек операндов.
default CodeBuilder iconst_1()
Генерирует инструкцию, помещающую константу int 1 на стек операндов.
default CodeBuilder iconst_2()
Генерирует инструкцию, помещающую константу int 2 на стек операндов.
default CodeBuilder iconst_3()
Генерирует инструкцию, помещающую константу int 3 на стек операндов.
default CodeBuilder iconst_4()
Генерирует инструкцию, помещающую константу int 4 на стек операндов.
default CodeBuilder iconst_5()
Генерирует инструкцию, помещающую константу int 5 на стек операндов.
default CodeBuilder iconst_m1()
Генерирует инструкцию, помещающую константу int -1 на стек операндов.
default CodeBuilder idiv()
Генерирует инструкцию для деления ints.
default CodeBuilder if_acmpeq(Label target)
Генерирует инструкцию для перехода, если сравнение reference operand1 == operand2 успешно.
default CodeBuilder if_acmpne(Label target)
Генерирует инструкцию для перехода, если сравнение reference operand1 != operand2 успешно.
default CodeBuilder if_icmpeq(Label target)
Генерирует инструкцию перехода, если сравнение int operand1 == operand2 успешно.
default CodeBuilder if_icmpge(Label target)
Генерирует инструкцию перехода, если сравнение int operand1 >= operand2 успешно.
default CodeBuilder if_icmpgt(Label target)
Генерирует инструкцию перехода, если сравнение int operand1 > operand2 успешно.
default CodeBuilder if_icmple(Label target)
Генерирует инструкцию перехода, если сравнение int operand1 <= operand2 успешно.
default CodeBuilder if_icmplt(Label target)
Генерирует инструкцию перехода, если сравнение int operand1 < operand2 успешно.
default CodeBuilder if_icmpne(Label target)
Генерирует инструкцию перехода, если сравнение int operand1 != operand2 успешно.
default CodeBuilder ifeq(Label target)
Генерирует инструкцию перехода, если сравнение int с нулём == 0 успешно.
default CodeBuilder ifge(Label target)
Генерирует инструкцию перехода, если сравнение int с нулём >= 0 успешно.
default CodeBuilder ifgt(Label target)
Генерирует инструкцию перехода, если сравнение int с нулём > 0 успешно.
default CodeBuilder ifle(Label target)
Генерирует инструкцию перехода, если сравнение int с нулём <= 0 успешно.
default CodeBuilder iflt(Label target)
Генерирует инструкцию перехода, если сравнение int с нулём < 0 успешно.
default CodeBuilder ifne(Label target)
Генерирует инструкцию перехода, если сравнение int с нулём != 0 успешно.
default CodeBuilder ifnonnull(Label target)
Генерирует инструкцию перехода, если reference не является null.
default CodeBuilder ifnull(Label target)
Генерирует инструкцию перехода, если reference является null.
default CodeBuilder ifThen(Opcode opcode, Consumer<CodeBuilder.BlockCodeBuilder> thenHandler)
Добавляет блок "if-then", который зависит от значения(ий) в верхней части стека операндов в соответствии с заданным кодом операции.
default CodeBuilder ifThen(Consumer<CodeBuilder.BlockCodeBuilder> thenHandler)
Добавляет блок "if-then", который зависит от значения boolean в верхней части стека операндов.
default CodeBuilder ifThenElse(Opcode opcode, Consumer<CodeBuilder.BlockCodeBuilder> thenHandler, Consumer<CodeBuilder.BlockCodeBuilder> elseHandler)
Добавляет блок "if-then-else", который зависит от значения(ий) в верхней части стека операндов в соответствии с заданным кодом операции.
default CodeBuilder ifThenElse(Consumer<CodeBuilder.BlockCodeBuilder> thenHandler, Consumer<CodeBuilder.BlockCodeBuilder> elseHandler)
Добавляет блок "if-then-else", который зависит от значения 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()
Генерирует инструкцию для вычисления побитового XOR ints.
default CodeBuilder l2d()
Генерирует инструкцию для преобразования long в double.
default CodeBuilder l2f()
Генерирует инструкцию для преобразования long в float.
default CodeBuilder l2i()
Генерирует инструкцию для преобразования long в int.
default CodeBuilder labelBinding(Label label)
Связывает метку с текущей позицией.
default CodeBuilder ladd()
Генерирует инструкцию для сложения двух longs.
default CodeBuilder laload()
Генерирует инструкцию для загрузки из массива long.
default CodeBuilder land()
Генерирует инструкцию для вычисления побитового И (&) для 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()
Генерирует инструкцию для вычисления побитового XOR (^) для longs.
default CodeBuilder monitorenter()
Генерирует инструкцию для входа в монитор для объекта.
default CodeBuilder monitorexit()
Генерирует инструкцию для выхода из монитора для объекта.
default CodeBuilder multianewarray(ClassEntry array, int dims)
Генерирует инструкцию для создания нового многомерного массива.
default CodeBuilder multianewarray(ClassDesc array, int dims)
Генерирует инструкцию для создания нового многомерного массива.
default CodeBuilder new_(ClassEntry clazz)
Генерирует инструкцию для создания нового объекта.
default CodeBuilder new_(ClassDesc clazz)
Генерирует инструкцию для создания нового объекта.
default CodeBuilder newarray(TypeKind typeKind)
Генерирует инструкцию для создания нового массива примитивного типа.
default Label newBoundLabel()
Создаёт новую метку, связанную с текущей позицией.
Label newLabel()
Возвращает новую несвязанную метку.
default CodeBuilder nop()
Генерирует инструкцию бездействия.
int parameterSlot(int paramNo)
Возвращает слот локальной переменной, связанной с указанным параметром.
default CodeBuilder pop()
Генерирует инструкцию для удаления верхнего значения из стека операндов.
default CodeBuilder pop2()
Генерирует инструкцию для удаления одного или двух верхних значений со стека операндов.
default CodeBuilder putfield(FieldRefEntry ref)
Генерирует инструкцию для задания значения поля в объекте.
default CodeBuilder putfield(ClassDesc owner, String name, ClassDesc type)
Генерирует инструкцию для задания значения поля в объекте.
default CodeBuilder putstatic(FieldRefEntry ref)
Генерирует инструкцию для задания значения статического поля в классе.
default CodeBuilder putstatic(ClassDesc owner, String name, ClassDesc type)
Генерирует инструкцию для задания значения статического поля в классе.
int receiverSlot()
Возвращает слот локальной переменной, связанный с получателем.
default CodeBuilder return_()
Генерирует инструкцию для возврата void из данного метода.
default CodeBuilder return_(TypeKind tk)
Генерирует инструкцию возврата.
default CodeBuilder saload()
Генерирует инструкцию загрузки из массива short.
default CodeBuilder sastore()
Генерирует инструкцию сохранения в массив short.
default CodeBuilder sipush(int s)
Генерирует инструкцию, помещающую int в диапазоне short, [-32768, 32767], на стек операндов.
Label startLabel()
Возвращает метку, связанную с началом текущего блока.
default CodeBuilder storeLocal(TypeKind tk, int slot)
Генерирует инструкцию сохранения значения в локальную переменную.
default CodeBuilder swap()
Генерирует инструкцию обмена значениями двух верхних элементов стека операндов.
default CodeBuilder tableswitch(int low, int high, Label defaultTarget, List<SwitchCase> cases)
Генерирует инструкцию доступа к таблице переходов по индексу и перехода.
default CodeBuilder tableswitch(Label defaultTarget, List<SwitchCase> cases)
Генерирует инструкцию доступа к таблице переходов по индексу и перехода.
default CodeBuilder transforming(CodeTransform transform, Consumer<CodeBuilder> handler)
Применяет преобразование к коду, созданному обработчиком, направляя результаты в этот билдер.
default CodeBuilder trying(Consumer<CodeBuilder.BlockCodeBuilder> tryHandler, Consumer<CodeBuilder.CatchBuilder> catchesHandler)
Добавляет блок «try-catch», состоящий из одного блока try и нуля или более блоков catch.

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

accept, constantPool, transform, with

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

andThen

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

newLabel

Label newLabel()
Возвращает новый свободный метку. Метка может быть связана с помощью labelBinding(java.lang.classfile.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 - индекс параметра
Возвращает:
слот локальной переменной, связанной с указанным параметром

allocateLocal

int allocateLocal(TypeKind typeKind)
Возвращает слот локальной переменной новой локальной переменной. Этот метод прикладывает разумные усилия, чтобы определить, какие слоты используются, а какие нет. При преобразовании метода новые локальные переменные начинаются с maxLocals исходного метода. Для метода, который создаётся непосредственно, новые локальные переменные начинаются после последнего параметра слота.

Если текущий билдер кода является CodeBuilder.BlockCodeBuilder, в конце блока локальные переменные сбрасываются до их значения в начале блока.

Параметры:
typeKind - тип локальной переменной
Возвращает:
слот локальной переменной новой локальной переменной

transforming

default CodeBuilder transforming(CodeTransform transform, Consumer<CodeBuilder> handler)
Применяет преобразование к коду, созданному обработчиком, направляя результаты в этот билдер.
Примечание API:
Это аналогично ClassFileBuilder.transform(java.lang.classfile.CompoundElement<E>, java.lang.classfile.ClassFileTransform<?, E, B>), но это не требует, чтобы элементы кода были сначала просмотрены как CodeModel.
Параметры:
transform - преобразование, которое нужно применить к коду, созданному обработчиком
handler - обработчик, который получает CodeBuilder для построения кода
Возвращает:
этот билдер

block

default CodeBuilder block(Consumer<CodeBuilder.BlockCodeBuilder> handler)
Добавляет лексический блок к строящемуся методу.

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

Параметры:
handler - обработчик, который получает CodeBuilder.BlockCodeBuilder для генерации тела лексического блока
Возвращает:
этот билдер

ifThen

default CodeBuilder ifThen(Consumer<CodeBuilder.BlockCodeBuilder> thenHandler)
Добавляет блок "if-then", который условлен на значении boolean вверху стека операндов. Управление потоком входит в блок "then", если значение представляет true.

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

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

ifThen

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

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

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

ifThenElse

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

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

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

ifThenElse

default CodeBuilder ifThenElse(Opcode opcode, Consumer<CodeBuilder.BlockCodeBuilder> thenHandler, Consumer<CodeBuilder.BlockCodeBuilder> elseHandler)
Добавляет блок "if-then-else", который условлен на значении(ях) вверху стека операндов в соответствии с заданным кодом операции. Поток управления входит в блок "then", если условие ветвления для opcode выполняется, и входит в блок "else" в противном случае.

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

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

trying

default CodeBuilder trying(Consumer<CodeBuilder.BlockCodeBuilder> tryHandler, Consumer<CodeBuilder.CatchBuilder> catchesHandler)
Добавляет блок "try-catch", состоящий из одного блока try и нуля или более блоков catch. Исключение, сгенерированное инструкциями в блоке try, может быть перехвачено блоками catch.

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

Параметры:
tryHandler - обработчик, который получает CodeBuilder.BlockCodeBuilder для генерации тела блока try.
catchesHandler - обработчик, который получает CodeBuilder.CatchBuilder для генерации тел блоков catch.
Возвращает:
этот билдер
Исключения:
IllegalArgumentException - если блок try пустой
См. также:
  • CodeBuilder.CatchBuilder
  • ExceptionCatch
  • exceptionCatch(java.lang.classfile.Label, java.lang.classfile.Label, java.lang.classfile.Label, java.lang.classfile.constantpool.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
END_OF_DOCUMENT_MARKER

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(java.lang.classfile.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(java.util.function.Consumer<java.lang.classfile.CodeBuilder.BlockCodeBuilder>, java.util.function.Consumer<java.lang.classfile.CodeBuilder.CatchBuilder>)

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(java.util.function.Consumer<java.lang.classfile.CodeBuilder.BlockCodeBuilder>, java.util.function.Consumer<java.lang.classfile.CodeBuilder.CatchBuilder>)

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(java.util.function.Consumer<java.lang.classfile.CodeBuilder.BlockCodeBuilder>, java.util.function.Consumer<java.lang.classfile.CodeBuilder.CatchBuilder>)

exceptionCatchAll

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

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

Параметры:
start - начало блока try
end - конец блока try
handler - начало обработчика исключений
Возвращает:
этот билдер
См. также:
  • ExceptionCatch
  • trying(java.util.function.Consumer<java.lang.classfile.CodeBuilder.BlockCodeBuilder>, java.util.function.Consumer<java.lang.classfile.CodeBuilder.CatchBuilder>)

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
END_OF_DOCUMENT_MARKER

Переменная

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

Переменная

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

Тип переменной

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

Тип переменной

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()
Генерирует инструкцию, помещающую нулевой объект 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(java.lang.classfile.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

длина массива

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

astore

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

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

Параметры:
slot - слот локальной переменной
Возвращает:
этот билдер
Выбрасывает:
IllegalArgumentException - если slot выходит за пределы диапазона
См. также:
  • Opcode.ASTORE
  • storeLocal(java.lang.classfile.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 - целое число в диапазоне байта
Возвращает:
этот билдер
Выбрасывает:
IllegalArgumentException - если b выходит за пределы диапазона байта
См. также:
  • 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, производя 1, если любой операнд NaN.
Возвращает:
этот билдер
См. также:
  • Opcode.DCMPG
  • OperatorInstruction

dcmpl

default CodeBuilder dcmpl()
Создаёт инструкцию для сравнения двух doubles, возвращая -1, если какой-либо операнд равен NaN.
Возвращает:
этот билдер
См. также:
  • 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, генерируя 1, если любой операнд NaN.
Возвращает:
этот билдер
См. также:
  • Opcode.FCMPG
  • OperatorInstruction

fcmpl

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

fconst_0

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

fconst_1

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

fconst_2

default CodeBuilder fconst_2()
Генерирует инструкцию для помещения константы float 2 в стек операндов.
Возвращает:
этот билдер
См. также:
  • 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)
Генерирует инструкцию для безусловного перехода.

Также может генерировать инструкции goto_w, если ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS установлен.

Примечание 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

Искомультипликация

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

iastore

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

iconst_0

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

iconst_1

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

iconst_2

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

iconst_3

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

iconst_4

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

iconst_5

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

iconst_-1

default CodeBuilder iconst_m1()
Генерирует инструкцию для загрузки целочисленной константы -1 (int) на стек операндов.
Возвращает:
этот билдер
См. также:
  • 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].

Parameters:
target - целевой метка перехода
Returns:
этот билдер
See Also:
  • 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].

Parameters:
target - целевой метка перехода
Returns:
этот билдер
See Also:
  • 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].

Parameters:
target - целевой метка перехода
Returns:
этот билдер
See Also:
  • 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].

Parameters:
target - целевой метка перехода
Returns:
этот билдер
See Also:
  • Opcode.IF_ICMPNE
  • branch(Opcode, Label)
  • BranchInstruction

ifnonnull

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

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

Parameters:
target - целевой метка перехода
Returns:
этот билдер
See Also:
  • Opcode.IFNONNULL
  • branch(Opcode, Label)
  • BranchInstruction

ifnull

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

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

Parameters:
target - целевой метка перехода
Returns:
этот билдер
See Also:
  • Opcode.IFNULL
  • branch(Opcode, Label)
  • BranchInstruction

ifeq

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

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

Parameters:
target - целевой метка перехода
Returns:
этот билдер
See Also:
  • Opcode.IFEQ
  • branch(Opcode, Label)
  • BranchInstruction

ifge

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

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

Parameters:
target - целевой метка перехода
Returns:
этот билдер
See Also:
  • Opcode.IFGE
  • branch(Opcode, Label)
  • BranchInstruction

ifgt

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

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

Parameters:
target - целевой метка перехода
Returns:
этот билдер
See Also:
  • Opcode.IFGT
  • branch(Opcode, Label)
  • BranchInstruction

ifle

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

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

Parameters:
target - целевой метка перехода
Returns:
этот билдер
See Also:
  • 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)
Генерирует инструкцию для увеличения целочисленной локальной переменной на константу.

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

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

iload

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

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

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

imul

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

ineg

default CodeBuilder ineg()
Генерирует инструкцию для изменения знака целого числа.
Возвращает:
этот билдер
См. также:
  • 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()
Генерирует инструкцию вычисления побитового XOR ints. Это также может использоваться для boolean XOR.
Возвращает:
этот билдер
См. также:
  • 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()
Генерирует инструкцию вычисления побитового AND 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. Освободившиеся старшие биты заполняются нулями, в отличие от 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
END_OF_DOCUMENT_MARKER

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 - целое число в диапазоне 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 - список случаев переключения
Возвращает:
этот билдер
См. также:
  • Opcode.TABLESWITCH
  • TableSwitchInstruction

tableswitch

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

© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/lang/classfile/CodeBuilder.html

Spec-Zone.ru

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