- All Superinterfaces:
ClassFileBuilder<CodeElement,,CodeBuilder> Consumer<CodeElement>
- All Known Subinterfaces:
CodeBuilder.BlockCodeBuilder,TerminalCodeBuilder
- All Known Implementing Classes:
BlockCodeBuilderImpl,BufferedCodeBuilder,ChainedCodeBuilder,DirectCodeBuilder,NonterminalCodeBuilder,TransformingCodeBuilder
MethodBuilder.withCode(Consumer) or to code transforms. The elements of a
code can be specified abstractly, by passing a CodeElement to ClassFileBuilder.with(ClassFileElement) or concretely by calling the various withXxx
methods.- Since:
- 22
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic interfaceA builder for blocks of code.static interfaceA builder to add catch blocks. -
Method Summary
Modifier and TypeMethodDescriptiondefault CodeBuilderaaload()Generate an instruction to load a reference from an arraydefault CodeBuilderaastore()Generate an instruction to store into a reference arraydefault CodeBuilderGenerate an instruction pushing the null object reference onto the operand stackintallocateLocal(TypeKind typeKind) Returns the local variable slot of a fresh local variable.default CodeBuilderaload(int slot) Generate an instruction to load a reference from a local variabledefault CodeBuilderGenerate an instruction to create a new array of referencedefault CodeBuilderanewarray(ClassEntry classEntry) Generate an instruction to create a new array of referencedefault CodeBuilderareturn()Generate an instruction to return a reference from the methoddefault CodeBuilderGenerate an instruction to get length of an arraydefault CodeBuilderGenerate an instruction to load from an arraydefault CodeBuilderGenerate an instruction to store into an arraydefault CodeBuilderastore(int slot) Generate an instruction to store a reference into a local variabledefault CodeBuilderathrow()Generate an instruction to throw an exception or errordefault CodeBuilderbaload()Generate an instruction to load a byte from a arraydefault CodeBuilderbastore()Generate an instruction to store into a byte arraydefault CodeBuilderbipush(int b) Generate an instruction pushing a byte onto the operand stackdefault CodeBuilderblock(Consumer<CodeBuilder.BlockCodeBuilder> handler) Add a lexical block to the method being built.default CodeBuilderbranchInstruction(Opcode op, Label target) Generate a branch instructiondefault CodeBuildercaload()Generate an instruction to load a char from an arraydefault CodeBuildercastore()Generate an instruction to store into a char arraydefault CodeBuildercharacterRange(Label startScope, Label endScope, int characterRangeStart, int characterRangeEnd, int flags) Declare a character range entrydefault CodeBuilderGenerate an instruction to check whether an object is of the given typedefault CodeBuildercheckcast(ClassEntry type) Generate an instruction to check whether an object is of the given typedefault CodeBuilderconstantInstruction(ConstantDesc value) Generate an instruction pushing a constant onto the operand stackdefault CodeBuilderconstantInstruction(Opcode opcode, ConstantDesc value) Generate an instruction pushing a constant onto the operand stackdefault CodeBuilderconvertInstruction(TypeKind fromType, TypeKind toType) Generate a type converting instructiondefault CodeBuilderd2f()Generate an instruction to convert a double into a floatdefault CodeBuilderd2i()Generate an instruction to convert a double into an intdefault CodeBuilderd2l()Generate an instruction to convert a double into a longdefault CodeBuilderdadd()Generate an instruction to add a doubledefault CodeBuilderdaload()Generate an instruction to load a double from an arraydefault CodeBuilderdastore()Generate an instruction to store into a double arraydefault CodeBuilderdcmpg()Generate an instruction to add a doubledefault CodeBuilderdcmpl()Generate an instruction to compare doublesdefault CodeBuilderdconst_0()Generate an instruction pushing double constant 0 onto the operand stackdefault CodeBuilderdconst_1()Generate an instruction pushing double constant 1 onto the operand stackdefault CodeBuilderddiv()Generate an instruction to divide doublesdefault CodeBuilderdload(int slot) Generate an instruction to load a double from a local variabledefault CodeBuilderdmul()Generate an instruction to multiply doublesdefault CodeBuilderdneg()Generate an instruction to negate a doubledefault CodeBuilderdrem()Generate an instruction to calculate double remainderdefault CodeBuilderdreturn()Generate an instruction to return a double from the methoddefault CodeBuilderdstore(int slot) Generate an instruction to store a double into a local variabledefault CodeBuilderdsub()Generate an instruction to subtract doublesdefault CodeBuilderdup()Generate an instruction to duplicate the top operand stack valuedefault CodeBuilderdup_x1()Generate an instruction to duplicate the top operand stack value and insert two values downdefault CodeBuilderdup_x2()Generate an instruction to duplicate the top operand stack value and insert two or three values downdefault CodeBuilderdup2()Generate an instruction to duplicate the top one or two operand stack valuedefault CodeBuilderdup2_x1()Generate an instruction to duplicate the top one or two operand stack values and insert two or three values downdefault CodeBuilderdup2_x2()Generate an instruction to duplicate the top one or two operand stack values and insert two, three, or four values downendLabel()Returns the label associated with the end of the current block.default CodeBuilderexceptionCatch(Label start, Label end, Label handler, ClassDesc catchType) Declare an exception table entrydefault CodeBuilderexceptionCatch(Label start, Label end, Label handler, Optional<ClassEntry> catchType) Declare an exception table entrydefault CodeBuilderexceptionCatch(Label start, Label end, Label handler, ClassEntry catchType) Declare an exception table entrydefault CodeBuilderexceptionCatchAll(Label start, Label end, Label handler) Declare an exception table entry catching all exceptions and errorsdefault CodeBuilderf2d()Generate an instruction to convert a float into a doubledefault CodeBuilderf2i()Generate an instruction to convert a float into an intdefault CodeBuilderf2l()Generate an instruction to convert a float into a longdefault CodeBuilderfadd()Generate an instruction to add a floatdefault CodeBuilderfaload()Generate an instruction to load a float from an arraydefault CodeBuilderfastore()Generate an instruction to store into a float arraydefault CodeBuilderfcmpg()Generate an instruction to compare floatsdefault CodeBuilderfcmpl()Generate an instruction to compare floatsdefault CodeBuilderfconst_0()Generate an instruction pushing float constant 0 onto the operand stackdefault CodeBuilderfconst_1()Generate an instruction pushing float constant 1 onto the operand stackdefault CodeBuilderfconst_2()Generate an instruction pushing float constant 2 onto the operand stackdefault CodeBuilderfdiv()Generate an instruction to divide floatsdefault CodeBuilderfieldInstruction(Opcode opcode, ClassDesc owner, String name, ClassDesc type) Generate an instruction to access a fielddefault CodeBuilderfieldInstruction(Opcode opcode, FieldRefEntry ref) Generate an instruction to access a fielddefault CodeBuilderfload(int slot) Generate an instruction to load a float from a local variabledefault CodeBuilderfmul()Generate an instruction to multiply floatsdefault CodeBuilderfneg()Generate an instruction to negate a floatdefault CodeBuilderfrem()Generate an instruction to calculate floats remainderdefault CodeBuilderfreturn()Generate an instruction to return a float from the methoddefault CodeBuilderfstore(int slot) Generate an instruction to store a float into a local variabledefault CodeBuilderfsub()Generate an instruction to subtract floatsdefault CodeBuilderGenerate an instruction to fetch field from an objectdefault CodeBuildergetfield(FieldRefEntry ref) Generate an instruction to fetch field from an objectdefault CodeBuilderGenerate an instruction to get static field from a classdefault CodeBuildergetstatic(FieldRefEntry ref) Generate an instruction to get static field from a classdefault CodeBuilderGenerate an instruction to branch alwaysdefault CodeBuilderGenerate an instruction to branch always with wide indexdefault CodeBuilderi2b()Generate an instruction to convert an int into a bytedefault CodeBuilderi2c()Generate an instruction to convert an int into a chardefault CodeBuilderi2d()Generate an instruction to convert an int into a doubledefault CodeBuilderi2f()Generate an instruction to convert an int into a floatdefault CodeBuilderi2l()Generate an instruction to convert an int into a longdefault CodeBuilderi2s()Generate an instruction to convert an int into a shortdefault CodeBuilderiadd()Generate an instruction to add an intdefault CodeBuilderiaload()Generate an instruction to load a int from an arraydefault CodeBuilderiand()Generate an instruction to calculate boolean AND of intsdefault CodeBuilderiastore()Generate an instruction to store into an int arraydefault CodeBuildericonst_0()Generate an instruction pushing int constant 0 onto the operand stackdefault CodeBuildericonst_1()Generate an instruction pushing int constant 1 onto the operand stackdefault CodeBuildericonst_2()Generate an instruction pushing int constant 2 onto the operand stackdefault CodeBuildericonst_3()Generate an instruction pushing int constant 3 onto the operand stackdefault CodeBuildericonst_4()Generate an instruction pushing int constant 4 onto the operand stackdefault CodeBuildericonst_5()Generate an instruction pushing int constant 5 onto the operand stackdefault CodeBuilderGenerate an instruction pushing int constant -1 onto the operand stackdefault CodeBuilderidiv()Generate an instruction to divide intsdefault CodeBuilderGenerate an instruction to branch if reference comparison succeedsdefault CodeBuilderGenerate an instruction to branch if reference comparison succeedsdefault CodeBuilderGenerate an instruction to branch if int comparison succeedsdefault CodeBuilderGenerate an instruction to branch if int comparison succeedsdefault CodeBuilderGenerate an instruction to branch if int comparison succeedsdefault CodeBuilderGenerate an instruction to branch if int comparison succeedsdefault CodeBuilderGenerate an instruction to branch if int comparison succeedsdefault CodeBuilderGenerate an instruction to branch if int comparison succeedsdefault CodeBuilderif_nonnull(Label target) Generate an instruction to branch if reference is not nulldefault CodeBuilderGenerate an instruction to branch if reference is nulldefault CodeBuilderGenerate an instruction to branch if int comparison with zero succeedsdefault CodeBuilderGenerate an instruction to branch if int comparison with zero succeedsdefault CodeBuilderGenerate an instruction to branch if int comparison with zero succeedsdefault CodeBuilderGenerate an instruction to branch if int comparison with zero succeedsdefault CodeBuilderGenerate an instruction to branch if int comparison with zero succeedsdefault CodeBuilderGenerate an instruction to branch if int comparison with zero succeedsdefault CodeBuilderifThen(Consumer<CodeBuilder.BlockCodeBuilder> thenHandler) Add an "if-then" block that is conditional on the boolean value on top of the operand stack.default CodeBuilderifThen(Opcode opcode, Consumer<CodeBuilder.BlockCodeBuilder> thenHandler) Add an "if-then" block that is conditional on the value(s) on top of the operand stack in accordance with the given opcode.default CodeBuilderifThenElse(Consumer<CodeBuilder.BlockCodeBuilder> thenHandler, Consumer<CodeBuilder.BlockCodeBuilder> elseHandler) Add an "if-then-else" block that is conditional on the boolean value on top of the operand stack.default CodeBuilderifThenElse(Opcode opcode, Consumer<CodeBuilder.BlockCodeBuilder> thenHandler, Consumer<CodeBuilder.BlockCodeBuilder> elseHandler) Add an "if-then-else" block that is conditional on the value(s) on top of the operand stack in accordance with the given opcode.default CodeBuilderiinc(int slot, int val) Generate an instruction to increment a local variable by a constantdefault CodeBuilderiload(int slot) Generate an instruction to load an int from a local variabledefault CodeBuilderimul()Generate an instruction to multiply intsdefault CodeBuilderincrementInstruction(int slot, int val) Generate an instruction to increment a local variable by a constantdefault CodeBuilderineg()Generate an instruction to negate an intdefault CodeBuilderinstanceof_(ClassDesc target) Generate an instruction to determine if an object is of the given typedefault CodeBuilderinstanceof_(ClassEntry target) Generate an instruction to determine if an object is of the given typedefault CodeBuilderGenerate an instruction to invoke a dynamically-computed call sitedefault CodeBuilderGenerate an instruction to invoke a dynamically-computed call sitedefault CodeBuilderGenerate an instruction to invoke a dynamically-computed call sitedefault CodeBuilderGenerate an instruction to invoke a dynamically-computed call sitedefault CodeBuilderinvokeInstruction(Opcode opcode, ClassDesc owner, String name, MethodTypeDesc desc, boolean isInterface) Generate an instruction to invoke a method or constructordefault CodeBuilderinvokeInstruction(Opcode opcode, MemberRefEntry ref) Generate an instruction to invoke a method or constructordefault CodeBuilderinvokeinterface(ClassDesc owner, String name, MethodTypeDesc type) Generate an instruction to invoke an interface methoddefault CodeBuilderGenerate an instruction to invoke an interface methoddefault CodeBuilderinvokespecial(ClassDesc owner, String name, MethodTypeDesc type) Generate an instruction to invoke an instance method; direct invocation of instance initialization methods and methods of the current class and its supertypesdefault CodeBuilderinvokespecial(ClassDesc owner, String name, MethodTypeDesc type, boolean isInterface) Generate an instruction to invoke an instance method; direct invocation of instance initialization methods and methods of the current class and its supertypesdefault CodeBuilderGenerate an instruction to invoke an instance method; direct invocation of instance initialization methods and methods of the current class and its supertypesdefault CodeBuilderGenerate an instruction to invoke an instance method; direct invocation of instance initialization methods and methods of the current class and its supertypesdefault CodeBuilderinvokestatic(ClassDesc owner, String name, MethodTypeDesc type) Generate an instruction to invoke a class (static) methoddefault CodeBuilderinvokestatic(ClassDesc owner, String name, MethodTypeDesc type, boolean isInterface) Generate an instruction to invoke a class (static) methoddefault CodeBuilderGenerate an instruction to invoke a class (static) methoddefault CodeBuilderGenerate an instruction to invoke a class (static) methoddefault CodeBuilderinvokevirtual(ClassDesc owner, String name, MethodTypeDesc type) Generate an instruction to invoke an instance method; dispatch based on classdefault CodeBuilderGenerate an instruction to invoke an instance method; dispatch based on classdefault CodeBuilderior()Generate an instruction to calculate boolean OR of intsdefault CodeBuilderirem()Generate an instruction to calculate ints remainderdefault CodeBuilderireturn()Generate an instruction to return an int from the methoddefault CodeBuilderishl()Generate an instruction to shift an int leftdefault CodeBuilderishr()Generate an instruction to shift an int rightdefault CodeBuilderistore(int slot) Generate an instruction to store an int into a local variabledefault CodeBuilderisub()Generate an instruction to subtract intsdefault CodeBuilderiushr()Generate an instruction to logical shift an int rightdefault CodeBuilderixor()Generate an instruction to calculate boolean XOR of intsdefault CodeBuilderl2d()Generate an instruction to convert a long into a doubledefault CodeBuilderl2f()Generate an instruction to convert a long into a floatdefault CodeBuilderl2i()Generate an instruction to convert a long into an intdefault CodeBuilderlabelBinding(Label label) Bind label with current positiondefault CodeBuilderladd()Generate an instruction to add a longdefault CodeBuilderlaload()Generate an instruction to load a long from an arraydefault CodeBuilderland()Generate an instruction to calculate boolean AND of longsdefault CodeBuilderlastore()Generate an instruction to store into a long arraydefault CodeBuilderlcmp()Generate an instruction to compare longsdefault CodeBuilderlconst_0()Generate an instruction pushing long constant 0 onto the operand stackdefault CodeBuilderlconst_1()Generate an instruction pushing long constant 1 onto the operand stackdefault CodeBuilderldc(ConstantDesc value) Generate an instruction pushing an item from the run-time constant pool onto the operand stackdefault CodeBuilderldc(LoadableConstantEntry entry) Generate an instruction pushing an item from the run-time constant pool onto the operand stackdefault CodeBuilderldiv()Generate an instruction to divide longsdefault CodeBuilderlineNumber(int line) Declare a source line number of the current builder positiondefault CodeBuilderlload(int slot) Generate an instruction to load a long from a local variabledefault CodeBuilderlmul()Generate an instruction to multiply longsdefault CodeBuilderlneg()Generate an instruction to negate a longdefault CodeBuilderloadInstruction(TypeKind tk, int slot) Generate an instruction to load a value from a local variabledefault CodeBuilderlocalVariable(int slot, String name, ClassDesc descriptor, Label startScope, Label endScope) Declare a local variable entrydefault CodeBuilderlocalVariable(int slot, Utf8Entry nameEntry, Utf8Entry descriptorEntry, Label startScope, Label endScope) Declare a local variable entrydefault CodeBuilderlocalVariableType(int slot, String name, Signature signature, Label startScope, Label endScope) Declare a local variable type entrydefault CodeBuilderlocalVariableType(int slot, Utf8Entry nameEntry, Utf8Entry signatureEntry, Label startScope, Label endScope) Declare a local variable type entrydefault CodeBuilderlookupswitch(Label defaultTarget, List<SwitchCase> cases) Generate an instruction to access a jump table by key match and jumpdefault CodeBuilderlookupSwitchInstruction(Label defaultTarget, List<SwitchCase> cases) Generate an instruction to access a jump table by key match and jumpdefault CodeBuilderlor()Generate an instruction to calculate boolean OR of longsdefault CodeBuilderlrem()Generate an instruction to calculate longs remainderdefault CodeBuilderlreturn()Generate an instruction to return a long from the methoddefault CodeBuilderlshl()Generate an instruction to shift a long leftdefault CodeBuilderlshr()Generate an instruction to shift a long rightdefault CodeBuilderlstore(int slot) Generate an instruction to store a long into a local variabledefault CodeBuilderlsub()Generate an instruction to subtract longsdefault CodeBuilderlushr()Generate an instruction to logical shift a long leftdefault CodeBuilderlxor()Generate an instruction to calculate boolean XOR of longsdefault CodeBuilderGenerate an instruction to enter monitor for an objectdefault CodeBuilderGenerate an instruction to exit monitor for an objectdefault CodeBuildermonitorInstruction(Opcode opcode) Generate a monitor instructiondefault CodeBuildermultianewarray(ClassDesc array, int dims) Generate an instruction to create a new multidimensional arraydefault CodeBuildermultianewarray(ClassEntry array, int dims) Generate an instruction to create a new multidimensional arraydefault CodeBuilderGenerate an instruction to create a new objectdefault CodeBuildernew_(ClassEntry clazz) Generate an instruction to create a new objectdefault CodeBuilderGenerate an instruction to create a new array of a primitive typedefault LabelCreate new label bound with current positionnewLabel()Returns a fresh unbound label.default CodeBuildernewMultidimensionalArrayInstruction(int dimensions, ClassDesc type) Generate an instruction to create a new multidimensional arraydefault CodeBuildernewMultidimensionalArrayInstruction(int dimensions, ClassEntry type) Generate an instruction to create a new multidimensional arraydefault CodeBuilderGenerate an instruction to create a new objectdefault CodeBuilderGenerate an instruction to create a new objectdefault CodeBuildernewPrimitiveArrayInstruction(TypeKind typeKind) Generate an instruction to create a new array of a primitive typedefault CodeBuilderGenerate an instruction to create a new array of referencedefault CodeBuilderGenerate an instruction to create a new array of referencedefault CodeBuildernop()Generate a do nothing instructiondefault CodeBuilderGenerate a do nothing instructiondefault CodeBuilderoperatorInstruction(Opcode opcode) Generate an operator instructionoriginal()intparameterSlot(int paramNo) Returns the local variable slot associated with the specified parameter.default CodeBuilderpop()Generate an instruction to pop the top operand stack valuedefault CodeBuilderpop2()Generate an instruction to pop the top one or two operand stack valuesdefault CodeBuilderGenerate an instruction to set field in an objectdefault CodeBuilderputfield(FieldRefEntry ref) Generate an instruction to set field in an objectdefault CodeBuilderGenerate an instruction to set static field in a classdefault CodeBuilderputstatic(FieldRefEntry ref) Generate an instruction to set static field in a classintReturns the local variable slot associated with the receiver.default CodeBuilderreturn_()Generate an instruction to return void from the methoddefault CodeBuilderGenerate return instructiondefault CodeBuildersaload()Generate an instruction to load a short from an arraydefault CodeBuildersastore()Generate an instruction to store into a short arraydefault CodeBuildersipush(int s) Generate an instruction pushing a short onto the operand stackdefault CodeBuilderstackInstruction(Opcode opcode) Generate a stack manipulating instructionReturns the label associated with the beginning of the current block.default CodeBuilderstoreInstruction(TypeKind tk, int slot) Generate an instruction to store a value to a local variabledefault CodeBuilderswap()Generate an instruction to swap the top two operand stack valuesdefault CodeBuildertableswitch(int low, int high, Label defaultTarget, List<SwitchCase> cases) Generate an instruction to access a jump table by index and jumpdefault CodeBuildertableswitch(Label defaultTarget, List<SwitchCase> cases) Generate an instruction to access a jump table by index and jumpdefault CodeBuildertableSwitchInstruction(int lowValue, int highValue, Label defaultTarget, List<SwitchCase> cases) Generate an instruction to access a jump table by index and jumpdefault CodeBuilderGenerate an instruction to throw an exception or errordefault CodeBuildertransforming(CodeTransform transform, Consumer<CodeBuilder> handler) Apply a transform to the code built by a handler, directing results to this builder.default CodeBuildertrying(Consumer<CodeBuilder.BlockCodeBuilder> tryHandler, Consumer<CodeBuilder.CatchBuilder> catchesHandler) Adds a "try-catch" block comprising one try block and zero or more catch blocks.default CodeBuildertypeCheckInstruction(Opcode opcode, ClassDesc type) Generate a type checking instructiondefault CodeBuildertypeCheckInstruction(Opcode opcode, ClassEntry type) Generate a type checking instructionMethods inherited from interface org.glavo.classfile.ClassFileBuilder
accept, canWriteDirect, constantPool, transform, with
-
Method Details
-
original
-
newLabel
Label newLabel()Returns a fresh unbound label.- Returns:
- a fresh unbound label
-
startLabel
Label startLabel()Returns the label associated with the beginning of the current block. If the current CodeBuilder is not a "block" builder, such as those provided byblock(Consumer)orifThenElse(Consumer, Consumer), the current block will be the entire method body.- Returns:
- the label associated with the beginning of the current block
-
endLabel
Label endLabel()Returns the label associated with the end of the current block. If the current CodeBuilder is not a "block" builder, such as those provided byblock(Consumer)orifThenElse(Consumer, Consumer), the current block will be the entire method body.- Returns:
- the label associated with the end of the current block
-
receiverSlot
int receiverSlot()Returns the local variable slot associated with the receiver..- Returns:
- the local variable slot associated with the receiver
- Throws:
IllegalStateException- if this is not a static method
-
parameterSlot
int parameterSlot(int paramNo) Returns the local variable slot associated with the specified parameter.. The returned value is adjusted for the receiver slot (if the method is an instance method) and for the requirement thatlonganddoublevalues require two slots.- Parameters:
paramNo- the index of the parameter- Returns:
- the local variable slot associated with the specified parameter
-
allocateLocal
Returns the local variable slot of a fresh local variable. This method makes reasonable efforts to determine which slots are in use and which are not. When transforming a method, fresh locals begin at themaxLocalsof the original method. For a method being built directly, fresh locals begin after the last parameter slot.If the current code builder is a "block" code builder provided by
block(Consumer),ifThen(Consumer), orifThenElse(Consumer, Consumer), at the end of the block, locals are reset to their value at the beginning of the block.- Parameters:
typeKind- the type of the local variable- Returns:
- the local variable slot of a fresh local variable
-
transforming
Apply a transform to the code built by a handler, directing results to this builder.- Parameters:
transform- the transform to apply to the code built by the handlerhandler- the handler that receives a CodeBuilder to build the code.- Returns:
- this builder
-
block
Add a lexical block to the method being built.Within this block, the
startLabel()andendLabel()correspond to the start and end of the block, and theCodeBuilder.BlockCodeBuilder.breakLabel()also corresponds to the end of the block.- Parameters:
handler- handler that receives a CodeBuilder.BlockCodeBuilder to generate the body of the lexical block.- Returns:
- this builder
-
ifThen
Add an "if-then" block that is conditional on the boolean value on top of the operand stack.The
CodeBuilder.BlockCodeBuilder.breakLabel()for the "then" block corresponds to the end of that block.- Parameters:
thenHandler- handler that receives a CodeBuilder.BlockCodeBuilder to generate the body of theif- Returns:
- this builder
-
ifThen
Add an "if-then" block that is conditional on the value(s) on top of the operand stack in accordance with the given opcode.The
CodeBuilder.BlockCodeBuilder.breakLabel()for the "then" block corresponds to the end of that block.- Parameters:
opcode- the operation code for a branch instructions that accepts one or two operands on the stackthenHandler- handler that receives a CodeBuilder.BlockCodeBuilder to generate the body of theif- Returns:
- this builder
- Throws:
IllegalArgumentException- if the operation code is not for a branch instruction that accepts one or two operands
-
ifThenElse
default CodeBuilder ifThenElse(Consumer<CodeBuilder.BlockCodeBuilder> thenHandler, Consumer<CodeBuilder.BlockCodeBuilder> elseHandler) Add an "if-then-else" block that is conditional on the boolean value on top of the operand stack.The
CodeBuilder.BlockCodeBuilder.breakLabel()for each block corresponds to the end of the "else" block.- Parameters:
thenHandler- handler that receives a CodeBuilder.BlockCodeBuilder to generate the body of theifelseHandler- handler that receives a CodeBuilder.BlockCodeBuilder to generate the body of theelse- Returns:
- this builder
-
ifThenElse
default CodeBuilder ifThenElse(Opcode opcode, Consumer<CodeBuilder.BlockCodeBuilder> thenHandler, Consumer<CodeBuilder.BlockCodeBuilder> elseHandler) Add an "if-then-else" block that is conditional on the value(s) on top of the operand stack in accordance with the given opcode.The
CodeBuilder.BlockCodeBuilder.breakLabel()for each block corresponds to the end of the "else" block.- Parameters:
opcode- the operation code for a branch instructions that accepts one or two operands on the stackthenHandler- handler that receives a CodeBuilder.BlockCodeBuilder to generate the body of theifelseHandler- handler that receives a CodeBuilder.BlockCodeBuilder to generate the body of theelse- Returns:
- this builder
- Throws:
IllegalArgumentException- if the operation code is not for a branch instruction that accepts one or two operands
-
trying
default CodeBuilder trying(Consumer<CodeBuilder.BlockCodeBuilder> tryHandler, Consumer<CodeBuilder.CatchBuilder> catchesHandler) Adds a "try-catch" block comprising one try block and zero or more catch blocks. Exceptions thrown by instructions in the try block may be caught by catch blocks.- Parameters:
tryHandler- handler that receives a CodeBuilder to generate the body of the try block.catchesHandler- a handler that receives a CodeBuilder.CatchBuilder to generate bodies of catch blocks.- Returns:
- this builder
- Throws:
IllegalArgumentException- if the try block is empty.- See Also:
-
loadInstruction
Generate an instruction to load a value from a local variable- Parameters:
tk- the load typeslot- the local variable slot- Returns:
- this builder
-
storeInstruction
Generate an instruction to store a value to a local variable- Parameters:
tk- the store typeslot- the local variable slot- Returns:
- this builder
-
incrementInstruction
Generate an instruction to increment a local variable by a constant- Parameters:
slot- the local variable slotval- the increment value- Returns:
- this builder
-
branchInstruction
Generate a branch instruction- Parameters:
op- the branch opcodetarget- the branch target- Returns:
- this builder
- See Also:
-
lookupSwitchInstruction
Generate an instruction to access a jump table by key match and jump- Parameters:
defaultTarget- the default jump targetcases- the switch cases- Returns:
- this builder
-
tableSwitchInstruction
default CodeBuilder tableSwitchInstruction(int lowValue, int highValue, Label defaultTarget, List<SwitchCase> cases) Generate an instruction to access a jump table by index and jump- Parameters:
lowValue- the low key valuehighValue- the high key valuedefaultTarget- the default jump targetcases- the switch cases- Returns:
- this builder
-
returnInstruction
Generate return instruction- Parameters:
tk- the return type- Returns:
- this builder
-
throwInstruction
Generate an instruction to throw an exception or error- Returns:
- this builder
-
fieldInstruction
Generate an instruction to access a field- Parameters:
opcode- the field access opcoderef- the field reference- Returns:
- this builder
- See Also:
-
fieldInstruction
Generate an instruction to access a field- Parameters:
opcode- the field access opcodeowner- the classname- the field nametype- the field type- Returns:
- this builder
- See Also:
-
invokeInstruction
Generate an instruction to invoke a method or constructor- Parameters:
opcode- the invoke opcoderef- the interface method or method reference- Returns:
- this builder
- See Also:
-
invokeInstruction
default CodeBuilder invokeInstruction(Opcode opcode, ClassDesc owner, String name, MethodTypeDesc desc, boolean isInterface) Generate an instruction to invoke a method or constructor- Parameters:
opcode- the invoke opcodeowner- the classname- the method namedesc- the method typeisInterface- the interface method invocation indication- Returns:
- this builder
- See Also:
-
invokeDynamicInstruction
Generate an instruction to invoke a dynamically-computed call site- Parameters:
ref- the dynamic call site- Returns:
- this builder
-
invokeDynamicInstruction
Generate an instruction to invoke a dynamically-computed call site- Parameters:
desc- the dynamic call site- Returns:
- this builder
-
newObjectInstruction
Generate an instruction to create a new object- Parameters:
type- the object type- Returns:
- this builder
-
newObjectInstruction
Generate an instruction to create a new object- Parameters:
type- the object type- Returns:
- this builder
- Throws:
IllegalArgumentException- iftyperepresents a primitive type
-
newPrimitiveArrayInstruction
Generate an instruction to create a new array of a primitive type- Parameters:
typeKind- the primitive component type- Returns:
- this builder
-
newReferenceArrayInstruction
Generate an instruction to create a new array of reference- Parameters:
type- the component type- Returns:
- this builder
-
newReferenceArrayInstruction
Generate an instruction to create a new array of reference- Parameters:
type- the component type- Returns:
- this builder
- Throws:
IllegalArgumentException- iftyperepresents a primitive type
-
newMultidimensionalArrayInstruction
Generate an instruction to create a new multidimensional array- Parameters:
dimensions- the number of dimensionstype- the array type- Returns:
- this builder
-
newMultidimensionalArrayInstruction
Generate an instruction to create a new multidimensional array- Parameters:
dimensions- the number of dimensionstype- the array type- Returns:
- this builder
-
arrayLoadInstruction
Generate an instruction to load from an array- Parameters:
tk- the array element type- Returns:
- this builder
-
arrayStoreInstruction
Generate an instruction to store into an array- Parameters:
tk- the array element type- Returns:
- this builder
-
typeCheckInstruction
Generate a type checking instruction- Parameters:
opcode- the type check instruction opcodetype- the type- Returns:
- this builder
- See Also:
-
typeCheckInstruction
Generate a type checking instruction- Parameters:
opcode- the type check instruction opcodetype- the type- Returns:
- this builder
- See Also:
-
convertInstruction
Generate a type converting instruction- Parameters:
fromType- the source typetoType- the target type- Returns:
- this builder
-
stackInstruction
Generate a stack manipulating instruction- Parameters:
opcode- the stack instruction opcode- Returns:
- this builder
- See Also:
-
operatorInstruction
Generate an operator instruction- Parameters:
opcode- the operator instruction opcode- Returns:
- this builder
- See Also:
-
constantInstruction
Generate an instruction pushing a constant onto the operand stack- Parameters:
opcode- the constant instruction opcodevalue- the constant value- Returns:
- this builder
- See Also:
-
constantInstruction
Generate an instruction pushing a constant onto the operand stack- Parameters:
value- the constant value- Returns:
- this builder
-
monitorInstruction
Generate a monitor instruction- Parameters:
opcode- the monitor instruction opcode- Returns:
- this builder
- See Also:
-
nopInstruction
Generate a do nothing instruction- Returns:
- this builder
-
nop
Generate a do nothing instruction- Returns:
- this builder
-
newBoundLabel
Create new label bound with current position- Returns:
- this builder
-
labelBinding
Bind label with current position- Parameters:
label- the label- Returns:
- this builder
-
lineNumber
Declare a source line number of the current builder position- Parameters:
line- the line number- Returns:
- this builder
-
exceptionCatch
Declare an exception table entry- Parameters:
start- the try block startend- the try block endhandler- the exception handler startcatchType- the catch type or null to catch all exceptions and errors- Returns:
- this builder
-
exceptionCatch
default CodeBuilder exceptionCatch(Label start, Label end, Label handler, Optional<ClassEntry> catchType) Declare an exception table entry- Parameters:
start- the try block startend- the try block endhandler- the exception handler startcatchType- the optional catch type, empty to catch all exceptions and errors- Returns:
- this builder
-
exceptionCatch
Declare an exception table entry- Parameters:
start- the try block startend- the try block endhandler- the exception handler startcatchType- the catch type- Returns:
- this builder
-
exceptionCatchAll
Declare an exception table entry catching all exceptions and errors- Parameters:
start- the try block startend- the try block endhandler- the exception handler start- Returns:
- this builder
-
characterRange
default CodeBuilder characterRange(Label startScope, Label endScope, int characterRangeStart, int characterRangeEnd, int flags) Declare a character range entry- Parameters:
startScope- the start scope of the character rangeendScope- the end scope of the character rangecharacterRangeStart- the encoded start of the character range region (inclusive)characterRangeEnd- the encoded end of the character range region (exclusive)flags- the flags word, indicating the kind of range- Returns:
- this builder
-
localVariable
default CodeBuilder localVariable(int slot, Utf8Entry nameEntry, Utf8Entry descriptorEntry, Label startScope, Label endScope) Declare a local variable entry- Parameters:
slot- the local variable slotnameEntry- the variable namedescriptorEntry- the variable descriptorstartScope- the start scope of the variableendScope- the end scope of the variable- Returns:
- this builder
-
localVariable
default CodeBuilder localVariable(int slot, String name, ClassDesc descriptor, Label startScope, Label endScope) Declare a local variable entry- Parameters:
slot- the local variable slotname- the variable namedescriptor- the variable descriptorstartScope- the start scope of the variableendScope- the end scope of the variable- Returns:
- this builder
-
localVariableType
default CodeBuilder localVariableType(int slot, Utf8Entry nameEntry, Utf8Entry signatureEntry, Label startScope, Label endScope) Declare a local variable type entry- Parameters:
slot- the local variable slotnameEntry- the variable namesignatureEntry- the variable signaturestartScope- the start scope of the variableendScope- the end scope of the variable- Returns:
- this builder
-
localVariableType
default CodeBuilder localVariableType(int slot, String name, Signature signature, Label startScope, Label endScope) Declare a local variable type entry- Parameters:
slot- the local variable slotname- the variable namesignature- the variable signaturestartScope- the start scope of the variableendScope- the end scope of the variable- Returns:
- this builder
-
aconst_null
Generate an instruction pushing the null object reference onto the operand stack- Returns:
- this builder
-
aaload
Generate an instruction to load a reference from an array- Returns:
- this builder
-
aastore
Generate an instruction to store into a reference array- Returns:
- this builder
-
aload
Generate an instruction to load a reference from a local variable- Parameters:
slot- the local variable slot- Returns:
- this builder
-
anewarray
Generate an instruction to create a new array of reference- Parameters:
classEntry- the component type- Returns:
- this builder
-
anewarray
Generate an instruction to create a new array of reference- Parameters:
className- the component type- Returns:
- this builder
- Throws:
IllegalArgumentException- ifclassNamerepresents a primitive type
-
areturn
Generate an instruction to return a reference from the method- Returns:
- this builder
-
arraylength
Generate an instruction to get length of an array- Returns:
- this builder
-
astore
Generate an instruction to store a reference into a local variable- Parameters:
slot- the local variable slot- Returns:
- this builder
-
athrow
Generate an instruction to throw an exception or error- Returns:
- this builder
-
baload
Generate an instruction to load a byte from a array- Returns:
- this builder
-
bastore
Generate an instruction to store into a byte array- Returns:
- this builder
-
bipush
Generate an instruction pushing a byte onto the operand stack- Parameters:
b- the byte- Returns:
- this builder
-
caload
Generate an instruction to load a char from an array- Returns:
- this builder
-
castore
Generate an instruction to store into a char array- Returns:
- this builder
-
checkcast
Generate an instruction to check whether an object is of the given type- Parameters:
type- the object type- Returns:
- this builder
-
checkcast
Generate an instruction to check whether an object is of the given type- Parameters:
type- the object type- Returns:
- this builder
- Throws:
IllegalArgumentException- iftyperepresents a primitive type
-
d2f
Generate an instruction to convert a double into a float- Returns:
- this builder
-
d2i
Generate an instruction to convert a double into an int- Returns:
- this builder
-
d2l
Generate an instruction to convert a double into a long- Returns:
- this builder
-
dadd
Generate an instruction to add a double- Returns:
- this builder
-
daload
Generate an instruction to load a double from an array- Returns:
- this builder
-
dastore
Generate an instruction to store into a double array- Returns:
- this builder
-
dcmpg
Generate an instruction to add a double- Returns:
- this builder
-
dcmpl
Generate an instruction to compare doubles- Returns:
- this builder
-
dconst_0
Generate an instruction pushing double constant 0 onto the operand stack- Returns:
- this builder
-
dconst_1
Generate an instruction pushing double constant 1 onto the operand stack- Returns:
- this builder
-
ddiv
Generate an instruction to divide doubles- Returns:
- this builder
-
dload
Generate an instruction to load a double from a local variable- Parameters:
slot- the local variable slot- Returns:
- this builder
-
dmul
Generate an instruction to multiply doubles- Returns:
- this builder
-
dneg
Generate an instruction to negate a double- Returns:
- this builder
-
drem
Generate an instruction to calculate double remainder- Returns:
- this builder
-
dreturn
Generate an instruction to return a double from the method- Returns:
- this builder
-
dstore
Generate an instruction to store a double into a local variable- Parameters:
slot- the local variable slot- Returns:
- this builder
-
dsub
Generate an instruction to subtract doubles- Returns:
- this builder
-
dup
Generate an instruction to duplicate the top operand stack value- Returns:
- this builder
-
dup2
Generate an instruction to duplicate the top one or two operand stack value- Returns:
- this builder
-
dup2_x1
Generate an instruction to duplicate the top one or two operand stack values and insert two or three values down- Returns:
- this builder
-
dup2_x2
Generate an instruction to duplicate the top one or two operand stack values and insert two, three, or four values down- Returns:
- this builder
-
dup_x1
Generate an instruction to duplicate the top operand stack value and insert two values down- Returns:
- this builder
-
dup_x2
Generate an instruction to duplicate the top operand stack value and insert two or three values down- Returns:
- this builder
-
f2d
Generate an instruction to convert a float into a double- Returns:
- this builder
-
f2i
Generate an instruction to convert a float into an int- Returns:
- this builder
-
f2l
Generate an instruction to convert a float into a long- Returns:
- this builder
-
fadd
Generate an instruction to add a float- Returns:
- this builder
-
faload
Generate an instruction to load a float from an array- Returns:
- this builder
-
fastore
Generate an instruction to store into a float array- Returns:
- this builder
-
fcmpg
Generate an instruction to compare floats- Returns:
- this builder
-
fcmpl
Generate an instruction to compare floats- Returns:
- this builder
-
fconst_0
Generate an instruction pushing float constant 0 onto the operand stack- Returns:
- this builder
-
fconst_1
Generate an instruction pushing float constant 1 onto the operand stack- Returns:
- this builder
-
fconst_2
Generate an instruction pushing float constant 2 onto the operand stack- Returns:
- this builder
-
fdiv
Generate an instruction to divide floats- Returns:
- this builder
-
fload
Generate an instruction to load a float from a local variable- Parameters:
slot- the local variable slot- Returns:
- this builder
-
fmul
Generate an instruction to multiply floats- Returns:
- this builder
-
fneg
Generate an instruction to negate a float- Returns:
- this builder
-
frem
Generate an instruction to calculate floats remainder- Returns:
- this builder
-
freturn
Generate an instruction to return a float from the method- Returns:
- this builder
-
fstore
Generate an instruction to store a float into a local variable- Parameters:
slot- the local variable slot- Returns:
- this builder
-
fsub
Generate an instruction to subtract floats- Returns:
- this builder
-
getfield
Generate an instruction to fetch field from an object- Parameters:
ref- the field reference- Returns:
- this builder
-
getfield
Generate an instruction to fetch field from an object- Parameters:
owner- the owner classname- the field nametype- the field type- Returns:
- this builder
- Throws:
IllegalArgumentException- ifownerrepresents a primitive type
-
getstatic
Generate an instruction to get static field from a class- Parameters:
ref- the field reference- Returns:
- this builder
-
getstatic
Generate an instruction to get static field from a class- Parameters:
owner- the owner classname- the field nametype- the field type- Returns:
- this builder
- Throws:
IllegalArgumentException- ifownerrepresents a primitive type
-
goto_
Generate an instruction to branch always- Parameters:
target- the branch target- Returns:
- this builder
-
goto_w
Generate an instruction to branch always with wide index- Parameters:
target- the branch target- Returns:
- this builder
-
i2b
Generate an instruction to convert an int into a byte- Returns:
- this builder
-
i2c
Generate an instruction to convert an int into a char- Returns:
- this builder
-
i2d
Generate an instruction to convert an int into a double- Returns:
- this builder
-
i2f
Generate an instruction to convert an int into a float- Returns:
- this builder
-
i2l
Generate an instruction to convert an int into a long- Returns:
- this builder
-
i2s
Generate an instruction to convert an int into a short- Returns:
- this builder
-
iadd
Generate an instruction to add an int- Returns:
- this builder
-
iaload
Generate an instruction to load a int from an array- Returns:
- this builder
-
iand
Generate an instruction to calculate boolean AND of ints- Returns:
- this builder
-
iastore
Generate an instruction to store into an int array- Returns:
- this builder
-
iconst_0
Generate an instruction pushing int constant 0 onto the operand stack- Returns:
- this builder
-
iconst_1
Generate an instruction pushing int constant 1 onto the operand stack- Returns:
- this builder
-
iconst_2
Generate an instruction pushing int constant 2 onto the operand stack- Returns:
- this builder
-
iconst_3
Generate an instruction pushing int constant 3 onto the operand stack- Returns:
- this builder
-
iconst_4
Generate an instruction pushing int constant 4 onto the operand stack- Returns:
- this builder
-
iconst_5
Generate an instruction pushing int constant 5 onto the operand stack- Returns:
- this builder
-
iconst_m1
Generate an instruction pushing int constant -1 onto the operand stack- Returns:
- this builder
-
idiv
Generate an instruction to divide ints- Returns:
- this builder
-
if_acmpeq
Generate an instruction to branch if reference comparison succeeds- Parameters:
target- the branch target- Returns:
- this builder
-
if_acmpne
Generate an instruction to branch if reference comparison succeeds- Parameters:
target- the branch target- Returns:
- this builder
-
if_icmpeq
Generate an instruction to branch if int comparison succeeds- Parameters:
target- the branch target- Returns:
- this builder
-
if_icmpge
Generate an instruction to branch if int comparison succeeds- Parameters:
target- the branch target- Returns:
- this builder
-
if_icmpgt
Generate an instruction to branch if int comparison succeeds- Parameters:
target- the branch target- Returns:
- this builder
-
if_icmple
Generate an instruction to branch if int comparison succeeds- Parameters:
target- the branch target- Returns:
- this builder
-
if_icmplt
Generate an instruction to branch if int comparison succeeds- Parameters:
target- the branch target- Returns:
- this builder
-
if_icmpne
Generate an instruction to branch if int comparison succeeds- Parameters:
target- the branch target- Returns:
- this builder
-
if_nonnull
Generate an instruction to branch if reference is not null- Parameters:
target- the branch target- Returns:
- this builder
-
if_null
Generate an instruction to branch if reference is null- Parameters:
target- the branch target- Returns:
- this builder
-
ifeq
Generate an instruction to branch if int comparison with zero succeeds- Parameters:
target- the branch target- Returns:
- this builder
-
ifge
Generate an instruction to branch if int comparison with zero succeeds- Parameters:
target- the branch target- Returns:
- this builder
-
ifgt
Generate an instruction to branch if int comparison with zero succeeds- Parameters:
target- the branch target- Returns:
- this builder
-
ifle
Generate an instruction to branch if int comparison with zero succeeds- Parameters:
target- the branch target- Returns:
- this builder
-
iflt
Generate an instruction to branch if int comparison with zero succeeds- Parameters:
target- the branch target- Returns:
- this builder
-
ifne
Generate an instruction to branch if int comparison with zero succeeds- Parameters:
target- the branch target- Returns:
- this builder
-
iinc
Generate an instruction to increment a local variable by a constant- Parameters:
slot- the local variable slotval- the increment value- Returns:
- this builder
-
iload
Generate an instruction to load an int from a local variable- Parameters:
slot- the local variable slot- Returns:
- this builder
-
imul
Generate an instruction to multiply ints- Returns:
- this builder
-
ineg
Generate an instruction to negate an int- Returns:
- this builder
-
instanceof_
Generate an instruction to determine if an object is of the given type- Parameters:
target- the target type- Returns:
- this builder
-
instanceof_
Generate an instruction to determine if an object is of the given type- Parameters:
target- the target type- Returns:
- this builder
- Throws:
IllegalArgumentException- iftargetrepresents a primitive type
-
invokedynamic
Generate an instruction to invoke a dynamically-computed call site- Parameters:
ref- the dynamic call site- Returns:
- this builder
-
invokedynamic
Generate an instruction to invoke a dynamically-computed call site- Parameters:
ref- the dynamic call site- Returns:
- this builder
-
invokeinterface
Generate an instruction to invoke an interface method- Parameters:
ref- the interface method reference- Returns:
- this builder
-
invokeinterface
Generate an instruction to invoke an interface method- Parameters:
owner- the owner classname- the method nametype- the method type- Returns:
- this builder
- Throws:
IllegalArgumentException- ifownerrepresents a primitive type
-
invokespecial
Generate an instruction to invoke an instance method; direct invocation of instance initialization methods and methods of the current class and its supertypes- Parameters:
ref- the interface method reference- Returns:
- this builder
-
invokespecial
Generate an instruction to invoke an instance method; direct invocation of instance initialization methods and methods of the current class and its supertypes- Parameters:
ref- the method reference- Returns:
- this builder
-
invokespecial
Generate an instruction to invoke an instance method; direct invocation of instance initialization methods and methods of the current class and its supertypes- Parameters:
owner- the owner classname- the method nametype- the method type- Returns:
- this builder
- Throws:
IllegalArgumentException- ifownerrepresents a primitive type
-
invokespecial
default CodeBuilder invokespecial(ClassDesc owner, String name, MethodTypeDesc type, boolean isInterface) Generate an instruction to invoke an instance method; direct invocation of instance initialization methods and methods of the current class and its supertypes- Parameters:
owner- the owner classname- the method nametype- the method typeisInterface- the interface method invocation indication- Returns:
- this builder
- Throws:
IllegalArgumentException- ifownerrepresents a primitive type
-
invokestatic
Generate an instruction to invoke a class (static) method- Parameters:
ref- the interface method reference- Returns:
- this builder
-
invokestatic
Generate an instruction to invoke a class (static) method- Parameters:
ref- the method reference- Returns:
- this builder
-
invokestatic
Generate an instruction to invoke a class (static) method- Parameters:
owner- the owner classname- the method nametype- the method type- Returns:
- this builder
- Throws:
IllegalArgumentException- ifownerrepresents a primitive type
-
invokestatic
default CodeBuilder invokestatic(ClassDesc owner, String name, MethodTypeDesc type, boolean isInterface) Generate an instruction to invoke a class (static) method- Parameters:
owner- the owner classname- the method nametype- the method typeisInterface- the interface method invocation indication- Returns:
- this builder
- Throws:
IllegalArgumentException- ifownerrepresents a primitive type
-
invokevirtual
Generate an instruction to invoke an instance method; dispatch based on class- Parameters:
ref- the method reference- Returns:
- this builder
-
invokevirtual
Generate an instruction to invoke an instance method; dispatch based on class- Parameters:
owner- the owner classname- the method nametype- the method type- Returns:
- this builder
- Throws:
IllegalArgumentException- ifownerrepresents a primitive type
-
ior
Generate an instruction to calculate boolean OR of ints- Returns:
- this builder
-
irem
Generate an instruction to calculate ints remainder- Returns:
- this builder
-
ireturn
Generate an instruction to return an int from the method- Returns:
- this builder
-
ishl
Generate an instruction to shift an int left- Returns:
- this builder
-
ishr
Generate an instruction to shift an int right- Returns:
- this builder
-
istore
Generate an instruction to store an int into a local variable- Parameters:
slot- the local variable slot- Returns:
- this builder
-
isub
Generate an instruction to subtract ints- Returns:
- this builder
-
iushr
Generate an instruction to logical shift an int right- Returns:
- this builder
-
ixor
Generate an instruction to calculate boolean XOR of ints- Returns:
- this builder
-
lookupswitch
Generate an instruction to access a jump table by key match and jump- Parameters:
defaultTarget- the default jump targetcases- the switch cases- Returns:
- this builder
-
l2d
Generate an instruction to convert a long into a double- Returns:
- this builder
-
l2f
Generate an instruction to convert a long into a float- Returns:
- this builder
-
l2i
Generate an instruction to convert a long into an int- Returns:
- this builder
-
ladd
Generate an instruction to add a long- Returns:
- this builder
-
laload
Generate an instruction to load a long from an array- Returns:
- this builder
-
land
Generate an instruction to calculate boolean AND of longs- Returns:
- this builder
-
lastore
Generate an instruction to store into a long array- Returns:
- this builder
-
lcmp
Generate an instruction to compare longs- Returns:
- this builder
-
lconst_0
Generate an instruction pushing long constant 0 onto the operand stack- Returns:
- this builder
-
lconst_1
Generate an instruction pushing long constant 1 onto the operand stack- Returns:
- this builder
-
ldc
Generate an instruction pushing an item from the run-time constant pool onto the operand stack- Parameters:
value- the constant value- Returns:
- this builder
-
ldc
Generate an instruction pushing an item from the run-time constant pool onto the operand stack- Parameters:
entry- the constant value- Returns:
- this builder
-
ldiv
Generate an instruction to divide longs- Returns:
- this builder
-
lload
Generate an instruction to load a long from a local variable- Parameters:
slot- the local variable slot- Returns:
- this builder
-
lmul
Generate an instruction to multiply longs- Returns:
- this builder
-
lneg
Generate an instruction to negate a long- Returns:
- this builder
-
lor
Generate an instruction to calculate boolean OR of longs- Returns:
- this builder
-
lrem
Generate an instruction to calculate longs remainder- Returns:
- this builder
-
lreturn
Generate an instruction to return a long from the method- Returns:
- this builder
-
lshl
Generate an instruction to shift a long left- Returns:
- this builder
-
lshr
Generate an instruction to shift a long right- Returns:
- this builder
-
lstore
Generate an instruction to store a long into a local variable- Parameters:
slot- the local variable slot- Returns:
- this builder
-
lsub
Generate an instruction to subtract longs- Returns:
- this builder
-
lushr
Generate an instruction to logical shift a long left- Returns:
- this builder
-
lxor
Generate an instruction to calculate boolean XOR of longs- Returns:
- this builder
-
monitorenter
Generate an instruction to enter monitor for an object- Returns:
- this builder
-
monitorexit
Generate an instruction to exit monitor for an object- Returns:
- this builder
-
multianewarray
Generate an instruction to create a new multidimensional array- Parameters:
array- the array typedims- the number of dimensions- Returns:
- this builder
-
multianewarray
Generate an instruction to create a new multidimensional array- Parameters:
array- the array typedims- the number of dimensions- Returns:
- this builder
- Throws:
IllegalArgumentException- ifarrayrepresents a primitive type
-
new_
Generate an instruction to create a new object- Parameters:
clazz- the new class type- Returns:
- this builder
-
new_
Generate an instruction to create a new object- Parameters:
clazz- the new class type- Returns:
- this builder
- Throws:
IllegalArgumentException- ifclazzrepresents a primitive type
-
newarray
Generate an instruction to create a new array of a primitive type- Parameters:
typeKind- the primitive array type- Returns:
- this builder
-
pop
Generate an instruction to pop the top operand stack value- Returns:
- this builder
-
pop2
Generate an instruction to pop the top one or two operand stack values- Returns:
- this builder
-
putfield
Generate an instruction to set field in an object- Parameters:
ref- the field reference- Returns:
- this builder
-
putfield
Generate an instruction to set field in an object- Parameters:
owner- the owner classname- the field nametype- the field type- Returns:
- this builder
- Throws:
IllegalArgumentException- ifownerrepresents a primitive type
-
putstatic
Generate an instruction to set static field in a class- Parameters:
ref- the field reference- Returns:
- this builder
-
putstatic
Generate an instruction to set static field in a class- Parameters:
owner- the owner classname- the field nametype- the field type- Returns:
- this builder
- Throws:
IllegalArgumentException- ifownerrepresents a primitive type
-
return_
Generate an instruction to return void from the method- Returns:
- this builder
-
saload
Generate an instruction to load a short from an array- Returns:
- this builder
-
sastore
Generate an instruction to store into a short array- Returns:
- this builder
-
sipush
Generate an instruction pushing a short onto the operand stack- Parameters:
s- the short- Returns:
- this builder
-
swap
Generate an instruction to swap the top two operand stack values- Returns:
- this builder
-
tableswitch
Generate an instruction to access a jump table by index and jump- Parameters:
low- the low key valuehigh- the high key valuedefaultTarget- the default jump targetcases- the switch cases- Returns:
- this builder
-
tableswitch
Generate an instruction to access a jump table by index and jump- Parameters:
defaultTarget- the default jump targetcases- the switch cases- Returns:
- this builder
-