Package proguard.classfile.editor
Class InstructionSequenceBuilder
- java.lang.Object
-
- proguard.classfile.editor.InstructionSequenceBuilder
-
public class InstructionSequenceBuilder extends java.lang.ObjectThis utility class allows to construct sequences of instructions and their constants.
-
-
Constructor Summary
Constructors Constructor Description InstructionSequenceBuilder()Creates a new InstructionSequenceBuilder.InstructionSequenceBuilder(ClassPool programClassPool, ClassPool libraryClassPool)Creates a new InstructionSequenceBuilder that automatically initializes class references and class member references in new constants.InstructionSequenceBuilder(ConstantPoolEditor constantPoolEditor)Creates a new InstructionSequenceBuilder.InstructionSequenceBuilder(ProgramClass targetClass)Creates a new InstructionSequenceBuilder.InstructionSequenceBuilder(ProgramClass targetClass, ClassPool programClassPool, ClassPool libraryClassPool)Creates a new InstructionSequenceBuilder that automatically initializes class references and class member references in new constants.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description Instruction[]__()Short forinstructions().InstructionSequenceBuilderaaload()InstructionSequenceBuilderaastore()InstructionSequenceBuilderaconst_null()InstructionSequenceBuilderaload(int variableIndex)InstructionSequenceBuilderaload_0()InstructionSequenceBuilderaload_1()InstructionSequenceBuilderaload_2()InstructionSequenceBuilderaload_3()InstructionSequenceBuilderanewarray(int constantIndex)InstructionSequenceBuilderanewarray(java.lang.String elementTypeName, Clazz referencedClass)InstructionSequenceBuilderanewarray(Clazz elementType)InstructionSequenceBuilderappendInstruction(Instruction instruction)Appends the given instruction.InstructionSequenceBuilderappendInstructions(Instruction[] instructions)Appends the given instructions.InstructionSequenceBuilderareturn()InstructionSequenceBuilderarraylength()InstructionSequenceBuilderastore(int variableIndex)InstructionSequenceBuilderastore_0()InstructionSequenceBuilderastore_1()InstructionSequenceBuilderastore_2()InstructionSequenceBuilderastore_3()InstructionSequenceBuilderathrow()InstructionSequenceBuilderbaload()InstructionSequenceBuilderbastore()InstructionSequenceBuilderbipush(int constant)InstructionSequenceBuilderboxPrimitiveType(char sourceType)Box the primitive value present on the stack.InstructionSequenceBuildercaload()InstructionSequenceBuildercastore()InstructionSequenceBuildercatch_(Instruction instruction)Short forappendInstruction(Instruction).InstructionSequenceBuildercheckcast(int constantIndex)InstructionSequenceBuildercheckcast(java.lang.String typeName)InstructionSequenceBuildercheckcast(java.lang.String typeName, Clazz referencedClass)InstructionSequenceBuildercheckcast(Clazz type)Constant[]constants()Returns the accumulated set of constants and resets the set in the builder.InstructionSequenceBuilderd2f()InstructionSequenceBuilderd2i()InstructionSequenceBuilderd2l()InstructionSequenceBuilderdadd()InstructionSequenceBuilderdaload()InstructionSequenceBuilderdastore()InstructionSequenceBuilderdcmpg()InstructionSequenceBuilderdcmpl()InstructionSequenceBuilderdconst(int constant)InstructionSequenceBuilderdconst_0()InstructionSequenceBuilderdconst_1()InstructionSequenceBuilderddiv()InstructionSequenceBuilderdload(int variableIndex)InstructionSequenceBuilderdload_0()InstructionSequenceBuilderdload_1()InstructionSequenceBuilderdload_2()InstructionSequenceBuilderdload_3()InstructionSequenceBuilderdmul()InstructionSequenceBuilderdneg()InstructionSequenceBuilderdrem()InstructionSequenceBuilderdreturn()InstructionSequenceBuilderdstore(int variableIndex)InstructionSequenceBuilderdstore_0()InstructionSequenceBuilderdstore_1()InstructionSequenceBuilderdstore_2()InstructionSequenceBuilderdstore_3()InstructionSequenceBuilderdsub()InstructionSequenceBuilderdup()InstructionSequenceBuilderdup_x1()InstructionSequenceBuilderdup_x2()InstructionSequenceBuilderdup2()InstructionSequenceBuilderdup2_x1()InstructionSequenceBuilderdup2_x2()InstructionSequenceBuilderf2d()InstructionSequenceBuilderf2i()InstructionSequenceBuilderf2l()InstructionSequenceBuilderfadd()InstructionSequenceBuilderfaload()InstructionSequenceBuilderfastore()InstructionSequenceBuilderfcmpg()InstructionSequenceBuilderfcmpl()InstructionSequenceBuilderfconst(int constant)InstructionSequenceBuilderfconst_0()InstructionSequenceBuilderfconst_1()InstructionSequenceBuilderfconst_2()InstructionSequenceBuilderfdiv()InstructionSequenceBuilderfload(int variableIndex)InstructionSequenceBuilderfload_0()InstructionSequenceBuilderfload_1()InstructionSequenceBuilderfload_2()InstructionSequenceBuilderfload_3()InstructionSequenceBuilderfmul()InstructionSequenceBuilderfneg()InstructionSequenceBuilderfrem()InstructionSequenceBuilderfreturn()InstructionSequenceBuilderfstore(int variableIndex)InstructionSequenceBuilderfstore_0()InstructionSequenceBuilderfstore_1()InstructionSequenceBuilderfstore_2()InstructionSequenceBuilderfstore_3()InstructionSequenceBuilderfsub()ConstantPoolEditorgetConstantPoolEditor()Returns the ConstantPoolEditor used by this builder to create constants.InstructionSequenceBuildergetfield(int constantIndex)InstructionSequenceBuildergetfield(java.lang.String className, java.lang.String name, java.lang.String descriptor)InstructionSequenceBuildergetfield(java.lang.String className, java.lang.String name, java.lang.String descriptor, Clazz referencedClass, Field referencedField)InstructionSequenceBuildergetfield(Clazz clazz, Field field)InstructionSequenceBuildergetstatic(int constantIndex)InstructionSequenceBuildergetstatic(java.lang.String className, java.lang.String name, java.lang.String descriptor)InstructionSequenceBuildergetstatic(java.lang.String className, java.lang.String name, java.lang.String descriptor, Clazz referencedClass, Field referencedField)InstructionSequenceBuildergetstatic(Clazz clazz, Field field)InstructionSequenceBuildergoto_(int branchOffset)InstructionSequenceBuildergoto_w(int branchOffset)InstructionSequenceBuilderi2b()InstructionSequenceBuilderi2c()InstructionSequenceBuilderi2d()InstructionSequenceBuilderi2f()InstructionSequenceBuilderi2l()InstructionSequenceBuilderi2s()InstructionSequenceBuilderiadd()InstructionSequenceBuilderiaload()InstructionSequenceBuilderiand()InstructionSequenceBuilderiastore()InstructionSequenceBuildericonst(int constant)InstructionSequenceBuildericonst_0()InstructionSequenceBuildericonst_1()InstructionSequenceBuildericonst_2()InstructionSequenceBuildericonst_3()InstructionSequenceBuildericonst_4()InstructionSequenceBuildericonst_5()InstructionSequenceBuildericonst_m1()InstructionSequenceBuilderidiv()InstructionSequenceBuilderifacmpeq(int branchOffset)InstructionSequenceBuilderifacmpne(int branchOffset)InstructionSequenceBuilderifeq(int branchOffset)InstructionSequenceBuilderifge(int branchOffset)InstructionSequenceBuilderifgt(int branchOffset)InstructionSequenceBuilderificmpeq(int branchOffset)InstructionSequenceBuilderificmpge(int branchOffset)InstructionSequenceBuilderificmpgt(int branchOffset)InstructionSequenceBuilderificmple(int branchOffset)InstructionSequenceBuilderificmplt(int branchOffset)InstructionSequenceBuilderificmpne(int branchOffset)InstructionSequenceBuilderifle(int branchOffset)InstructionSequenceBuilderiflt(int branchOffset)InstructionSequenceBuilderifne(int branchOffset)InstructionSequenceBuilderifnonnull(int branchOffset)InstructionSequenceBuilderifnull(int branchOffset)InstructionSequenceBuilderiinc(int variableIndex, int constant)InstructionSequenceBuilderiload(int variableIndex)InstructionSequenceBuilderiload_0()InstructionSequenceBuilderiload_1()InstructionSequenceBuilderiload_2()InstructionSequenceBuilderiload_3()InstructionSequenceBuilderimul()InstructionSequenceBuilderineg()InstructionSequenceBuilderinstanceof_(int constantIndex)InstructionSequenceBuilderinstanceof_(java.lang.String typeName, Clazz referencedClass)InstructionSequenceBuilderinstanceof_(Clazz type)Instruction[]instructions()Returns the accumulated sequence of instructions and resets the sequence in the builder.InstructionSequenceBuilderinvoke(byte opcode, java.lang.String className, java.lang.String name, java.lang.String descriptor, Clazz referencedClass, Method referencedMethod)InstructionSequenceBuilderinvoke(byte opcode, Clazz referencedClass, Method referencedMethod)InstructionSequenceBuilderinvoke(Clazz referencedClass, Method referencedMethod)InstructionSequenceBuilderinvokedynamic(int constantIndex)InstructionSequenceBuilderinvokedynamic(int bootStrapMethodIndex, java.lang.String name, java.lang.String descriptor)InstructionSequenceBuilderinvokedynamic(int bootStrapMethodIndex, java.lang.String name, java.lang.String descriptor, Clazz[] referencedClasses)InstructionSequenceBuilderinvokeinterface(int constantIndex, int constant)InstructionSequenceBuilderinvokeinterface(java.lang.String className, java.lang.String name, java.lang.String descriptor)InstructionSequenceBuilderinvokeinterface(java.lang.String className, java.lang.String name, java.lang.String descriptor, Clazz referencedClass, Method referencedMethod)InstructionSequenceBuilderinvokeinterface(Clazz clazz, Method method)InstructionSequenceBuilderinvokespecial(int constantIndex)InstructionSequenceBuilderinvokespecial(java.lang.String className, java.lang.String name, java.lang.String descriptor)InstructionSequenceBuilderinvokespecial(java.lang.String className, java.lang.String name, java.lang.String descriptor, Clazz referencedClass, Method referencedMethod)InstructionSequenceBuilderinvokespecial(Clazz clazz, Method method)InstructionSequenceBuilderinvokespecial_interface(java.lang.String className, java.lang.String name, java.lang.String descriptor)InstructionSequenceBuilderinvokespecial_interface(java.lang.String className, java.lang.String name, java.lang.String descriptor, Clazz referencedClass, Method referencedMethod)InstructionSequenceBuilderinvokespecial_interface(Clazz clazz, Method method)InstructionSequenceBuilderinvokestatic(int constantIndex)InstructionSequenceBuilderinvokestatic(java.lang.String className, java.lang.String name, java.lang.String descriptor)InstructionSequenceBuilderinvokestatic(java.lang.String className, java.lang.String name, java.lang.String descriptor, Clazz referencedClass, Method referencedMethod)InstructionSequenceBuilderinvokestatic(Clazz clazz, Method method)InstructionSequenceBuilderinvokestatic_interface(java.lang.String className, java.lang.String name, java.lang.String descriptor)InstructionSequenceBuilderinvokestatic_interface(java.lang.String className, java.lang.String name, java.lang.String descriptor, Clazz referencedClass, Method referencedMethod)InstructionSequenceBuilderinvokestatic_interface(Clazz clazz, Method method)InstructionSequenceBuilderinvokevirtual(int constantIndex)InstructionSequenceBuilderinvokevirtual(int classIndex, java.lang.String name, java.lang.String descriptor)InstructionSequenceBuilderinvokevirtual(java.lang.String className, java.lang.String name, java.lang.String descriptor)InstructionSequenceBuilderinvokevirtual(java.lang.String className, java.lang.String name, java.lang.String descriptor, Clazz referencedClass, Method referencedMethod)InstructionSequenceBuilderinvokevirtual(Clazz clazz, Method method)InstructionSequenceBuilderior()InstructionSequenceBuilderirem()InstructionSequenceBuilderireturn()InstructionSequenceBuilderishl()InstructionSequenceBuilderishr()InstructionSequenceBuilderistore(int variableIndex)InstructionSequenceBuilderistore_0()InstructionSequenceBuilderistore_1()InstructionSequenceBuilderistore_2()InstructionSequenceBuilderistore_3()InstructionSequenceBuilderisub()InstructionSequenceBuilderiushr()InstructionSequenceBuilderixor()InstructionSequenceBuilderjsr(int branchOffset)InstructionSequenceBuilderjsr_w(int branchOffset)InstructionSequenceBuilderl2d()InstructionSequenceBuilderl2f()InstructionSequenceBuilderl2i()InstructionSequenceBuilderlabel(Instruction instruction)Short forappendInstruction(Instruction).InstructionSequenceBuilderladd()InstructionSequenceBuilderlaload()InstructionSequenceBuilderland()InstructionSequenceBuilderlastore()InstructionSequenceBuilderlcmp()InstructionSequenceBuilderlconst(int constant)InstructionSequenceBuilderlconst_0()InstructionSequenceBuilderlconst_1()InstructionSequenceBuilderldc(float value)Appends an ldc instruction that loads a float constant with the given value.InstructionSequenceBuilderldc(float value, ConstantVisitor visitor)Appends an ldc instruction that loads a float constant with the given value.InstructionSequenceBuilderldc(int value)Appends an ldc instruction that loads an integer constant with the given value.InstructionSequenceBuilderldc(int value, ConstantVisitor visitor)Appends an ldc instruction that loads an integer constant with the given value.InstructionSequenceBuilderldc(java.lang.Object primitiveArray)Appends an ldc instruction that loads an (internal) primitive array constant with the given value.InstructionSequenceBuilderldc(java.lang.Object primitiveArray, ConstantVisitor visitor)Appends an ldc instruction that loads an (internal) primitive array constant with the given value.InstructionSequenceBuilderldc(java.lang.String string)Appends an ldc instruction that loads a string constant with the given value.InstructionSequenceBuilderldc(java.lang.String typeName, Clazz referencedClass)Appends an ldc instruction that loads a class constant for the given type name, that references the given class.InstructionSequenceBuilderldc(java.lang.String typeName, Clazz referencedClass, ConstantVisitor visitor)Appends an ldc instruction that loads a class constant for the given type name, that references the given class.InstructionSequenceBuilderldc(java.lang.String string, Clazz referencedClass, Member referencedMember)Appends an ldc instruction that loads a string constant with the given value, that references the given class member.InstructionSequenceBuilderldc(java.lang.String string, Clazz referencedClass, Member referencedMember, ConstantVisitor visitor)Appends an ldc instruction that loads a string constant with the given value, that references the given class member.InstructionSequenceBuilderldc(java.lang.String string, ConstantVisitor visitor)Appends an ldc instruction that loads a string constant with the given value.InstructionSequenceBuilderldc(java.lang.String string, ResourceFile referencedResourceFile)Appends an ldc instruction that loads a string constant with the given value, that references the given resource file.InstructionSequenceBuilderldc(java.lang.String string, ResourceFile referencedResourceFile, ConstantVisitor visitor)Appends an ldc instruction that loads a string constant with the given value, that references the given resource file.InstructionSequenceBuilderldc(Clazz clazz)Appends an ldc instruction that loads a class constant for the given class.InstructionSequenceBuilderldc(Clazz clazz, ConstantVisitor visitor)Appends an ldc instruction that loads a class constant for the given class.InstructionSequenceBuilderldc(Clazz clazz, Member member)Appends an ldc instruction that loads a string constant with the given class member name.InstructionSequenceBuilderldc(Clazz clazz, Member member, ConstantVisitor visitor)Appends an ldc instruction that loads a string constant with the given class member name.InstructionSequenceBuilderldc(ResourceFile resourceFile)Appends an ldc instruction that loads a string constant with the given resource file name.InstructionSequenceBuilderldc(ResourceFile resourceFile, ConstantVisitor visitor)Appends an ldc instruction that loads a string constant with the given resource file name.InstructionSequenceBuilderldc_(int constantIndex)Appends an ldc instruction that loads the constant at the given index.InstructionSequenceBuilderldc_(int constantIndex, ConstantVisitor visitor)Appends an ldc instruction that loads the constant at the given index.InstructionSequenceBuilderldc_w(float value)Appends an ldc_w instruction that loads a float constant with the given value.InstructionSequenceBuilderldc_w(float value, ConstantVisitor visitor)Appends an ldc_w instruction that loads a float constant with the given value.InstructionSequenceBuilderldc_w(int value)Appends an ldc_w instruction that loads an integer constant with the given value.InstructionSequenceBuilderldc_w(int value, ConstantVisitor visitor)Appends an ldc_w instruction that loads an integer constant with the given value.InstructionSequenceBuilderldc_w(java.lang.Object primitiveArray)Appends an ldc_w instruction that loads an (internal) primitive array constant with the given value.InstructionSequenceBuilderldc_w(java.lang.Object primitiveArray, ConstantVisitor visitor)Appends an ldc_w instruction that loads an (internal) primitive array constant with the given value.InstructionSequenceBuilderldc_w(java.lang.String string)Appends an ldc_w instruction that loads a string constant with the given value.InstructionSequenceBuilderldc_w(java.lang.String typeName, Clazz referencedClass)Appends an ldc_w instruction that loads a class constant for the given type name, that references the given class.InstructionSequenceBuilderldc_w(java.lang.String typeName, Clazz referencedClass, ConstantVisitor visitor)Appends an ldc_w instruction that loads a class constant for the given type name, that references the given class.InstructionSequenceBuilderldc_w(java.lang.String string, Clazz referencedClass, Member referencedMember)Appends an ldc_w instruction that loads a string constant with the given value, that references the given class member.InstructionSequenceBuilderldc_w(java.lang.String string, Clazz referencedClass, Member referencedMember, ConstantVisitor visitor)Appends an ldc_w instruction that loads a string constant with the given value, that references the given class member.InstructionSequenceBuilderldc_w(java.lang.String string, ConstantVisitor visitor)Appends an ldc_w instruction that loads a string constant with the given value.InstructionSequenceBuilderldc_w(java.lang.String string, ResourceFile referencedResourceFile)Appends an ldc_w instruction that loads a string constant with the given value, that references the given resource file.InstructionSequenceBuilderldc_w(java.lang.String string, ResourceFile referencedResourceFile, ConstantVisitor visitor)Appends an ldc_w instruction that loads a string constant with the given value, that references the given resource file.InstructionSequenceBuilderldc_w(Clazz clazz)Appends an ldc_w instruction that loads a class constant for the given class.InstructionSequenceBuilderldc_w(Clazz clazz, ConstantVisitor visitor)Appends an ldc_w instruction that loads a class constant for the given class.InstructionSequenceBuilderldc_w(Clazz clazz, Member member)Appends an ldc_w instruction that loads a string constant with the given class member name.InstructionSequenceBuilderldc_w(Clazz clazz, Member member, ConstantVisitor visitor)Appends an ldc_w instruction that loads a string constant with the given class member name.InstructionSequenceBuilderldc_w(ResourceFile resourceFile)Appends an ldc_w instruction that loads a string constant with the given resource file name.InstructionSequenceBuilderldc_w(ResourceFile resourceFile, ConstantVisitor visitor)Appends an ldc_w instruction that loads a string constant with the given resource file name.InstructionSequenceBuilderldc_w_(int constantIndex)Appends an ldc_w instruction that loads the constant at the given index.InstructionSequenceBuilderldc_w_(int constantIndex, ConstantVisitor visitor)Appends an ldc_w instruction that loads the constant at the given index.InstructionSequenceBuilderldc2_w(double value)Appends an ldc2_w instruction that loads a double constant with the given value.InstructionSequenceBuilderldc2_w(double value, ConstantVisitor visitor)Appends an ldc2_w instruction that loads a double constant with the given value.InstructionSequenceBuilderldc2_w(int constantIndex)Appends an ldc2_w instruction that loads the Category 2 constant at the given index.InstructionSequenceBuilderldc2_w(int constantIndex, ConstantVisitor visitor)Appends an ldc2_w instruction that loads the Category 2 constant at the given index.InstructionSequenceBuilderldc2_w(long value)Appends an ldc2_w instruction that loads a long constant with the given value.InstructionSequenceBuilderldc2_w(long value, ConstantVisitor visitor)Appends an ldc2_w instruction that loads a long constant with the given value.InstructionSequenceBuilderldiv()InstructionSequenceBuilderline(Instruction instruction)Short forappendInstruction(Instruction).InstructionSequenceBuilderlload(int variableIndex)InstructionSequenceBuilderlload_0()InstructionSequenceBuilderlload_1()InstructionSequenceBuilderlload_2()InstructionSequenceBuilderlload_3()InstructionSequenceBuilderlmul()InstructionSequenceBuilderlneg()InstructionSequenceBuilderload(int variableIndex, char type)Loads the given variable of primitive type onto the stack.InstructionSequenceBuilderload(int variableIndex, java.lang.String type)Loads the given variable onto the stack.InstructionSequenceBuilderloadFromArray(java.lang.String elementType)Loads an element from an array.InstructionSequenceBuilderlookupswitch(int defaultOffset, int[] cases, int[] jumpOffsets)InstructionSequenceBuilderlor()InstructionSequenceBuilderlrem()InstructionSequenceBuilderlreturn()InstructionSequenceBuilderlshl()InstructionSequenceBuilderlshr()InstructionSequenceBuilderlstore(int variableIndex)InstructionSequenceBuilderlstore_0()InstructionSequenceBuilderlstore_1()InstructionSequenceBuilderlstore_2()InstructionSequenceBuilderlstore_3()InstructionSequenceBuilderlsub()InstructionSequenceBuilderlushr()InstructionSequenceBuilderlxor()static voidmain(java.lang.String[] args)Small sample application that illustrates the use of this class.InstructionSequenceBuildermonitorenter()InstructionSequenceBuildermonitorexit()InstructionSequenceBuildermultianewarray(int constantIndex)InstructionSequenceBuildermultianewarray(java.lang.String typeName)InstructionSequenceBuildermultianewarray(java.lang.String typeName, Clazz referencedClass)InstructionSequenceBuildermultianewarray(Clazz type)InstructionSequenceBuildernew_(int constantIndex)InstructionSequenceBuildernew_(java.lang.String className)InstructionSequenceBuildernew_(java.lang.String className, Clazz referencedClass)InstructionSequenceBuildernew_(Clazz clazz)InstructionSequenceBuildernewarray(int constant)InstructionSequenceBuildernop()InstructionSequenceBuilderpop()InstructionSequenceBuilderpop2()InstructionSequenceBuilderpushBoxedPrimitive(java.lang.Object value, java.lang.String type)Push a primitive on the stack followed by a call to it's boxed valueOf method.InstructionSequenceBuilderpushDefault(java.lang.String type)Pushes a default value onto the stack.InstructionSequenceBuilderpushDouble(double value)Pushes the given primitive double on the stack in the most efficient way (as a dconst or ldc instruction).InstructionSequenceBuilderpushFloat(float value)Pushes the given primitive float on the stack in the most efficient way (as an fconst or ldc instruction).InstructionSequenceBuilderpushInt(int value)Pushes the given primitive int on the stack in the most efficient way (as an iconst, bipush, sipush, or ldc instruction).InstructionSequenceBuilderpushLong(long value)Pushes the given primitive long on the stack in the most efficient way (as an lconst or ldc instruction).InstructionSequenceBuilderpushNewArray(java.lang.String type, int size)Pushes a new array on the stack.InstructionSequenceBuilderpushPrimitive(java.lang.Object value, char type)Pushes the given primitive value on the stack.InstructionSequenceBuilderpushPrimitiveOrString(java.lang.Object value, java.lang.String type)Pushes the given string or primitive on the stack.InstructionSequenceBuilderpushPrimitiveOrString(java.lang.Object value, java.lang.String type, boolean allowBoxing)Pushes the given string or primitive on the stack.InstructionSequenceBuilderpushPrimitiveOrStringArray(java.lang.String type, java.lang.Object[] values)Pushes a new array with given values onto the stack.InstructionSequenceBuilderputfield(int constantIndex)InstructionSequenceBuilderputfield(java.lang.String className, java.lang.String name, java.lang.String descriptor)InstructionSequenceBuilderputfield(java.lang.String className, java.lang.String name, java.lang.String descriptor, Clazz referencedClass, Field referencedField)InstructionSequenceBuilderputfield(Clazz clazz, Field field)InstructionSequenceBuilderputstatic(int constantIndex)InstructionSequenceBuilderputstatic(java.lang.String className, java.lang.String name, java.lang.String descriptor)InstructionSequenceBuilderputstatic(java.lang.String className, java.lang.String name, java.lang.String descriptor, Clazz referencedClass, Field referencedField)InstructionSequenceBuilderputstatic(Clazz clazz, Field field)InstructionSequenceBuilderret(int variableIndex)InstructionSequenceBuilderreturn_()InstructionSequenceBuilderreturn_(java.lang.String internalType)InstructionSequenceBuildersaload()InstructionSequenceBuildersastore()InstructionSequenceBuildersipush(int constant)intsize()Returns the number of instructions accumulated by this InstructionSequenceBuilder.InstructionSequenceBuilderstore(int variableIndex, char type)Stores the primitve value on top of the stack in the variable with given index.InstructionSequenceBuilderstore(int variableIndex, java.lang.String type)Stores the value on top of the stack in the variable with given index.InstructionSequenceBuilderstoreToArray(java.lang.String elementType)Stores an element to an array.InstructionSequenceBuilderswap()InstructionSequenceBuildertableswitch(int defaultOffset, int lowCase, int highCase, int[] jumpOffsets)InstructionSequenceBuilderunboxPrimitiveType(java.lang.String sourceType, java.lang.String targetType)Unbox the object on the stack to a primitive value.InstructionSequenceBuilderwide()
-
-
-
Constructor Detail
-
InstructionSequenceBuilder
public InstructionSequenceBuilder()
Creates a new InstructionSequenceBuilder.
-
InstructionSequenceBuilder
public InstructionSequenceBuilder(ClassPool programClassPool, ClassPool libraryClassPool)
Creates a new InstructionSequenceBuilder that automatically initializes class references and class member references in new constants.- Parameters:
programClassPool- The program class pool from which new constants can be initialized.libraryClassPool- The library class pool from which new constants can be initialized.
-
InstructionSequenceBuilder
public InstructionSequenceBuilder(ProgramClass targetClass)
Creates a new InstructionSequenceBuilder.- Parameters:
targetClass- The target class for the instruction constants.
-
InstructionSequenceBuilder
public InstructionSequenceBuilder(ProgramClass targetClass, ClassPool programClassPool, ClassPool libraryClassPool)
Creates a new InstructionSequenceBuilder that automatically initializes class references and class member references in new constants.- Parameters:
targetClass- The target class for the instruction constants.programClassPool- The program class pool from which new constants can be initialized.libraryClassPool- The library class pool from which new constants can be initialized.
-
InstructionSequenceBuilder
public InstructionSequenceBuilder(ConstantPoolEditor constantPoolEditor)
Creates a new InstructionSequenceBuilder.- Parameters:
constantPoolEditor- The editor to use for creating any constants for the instructions.
-
-
Method Detail
-
getConstantPoolEditor
public ConstantPoolEditor getConstantPoolEditor()
Returns the ConstantPoolEditor used by this builder to create constants.- Returns:
- The ConstantPoolEditor used by this builder to create constants.
-
label
public InstructionSequenceBuilder label(Instruction instruction)
Short forappendInstruction(Instruction).- See Also:
InstructionSequenceReplacer.label()
-
catch_
public InstructionSequenceBuilder catch_(Instruction instruction)
Short forappendInstruction(Instruction).
-
line
public InstructionSequenceBuilder line(Instruction instruction)
Short forappendInstruction(Instruction).
-
appendInstruction
public InstructionSequenceBuilder appendInstruction(Instruction instruction)
Appends the given instruction.- Parameters:
instruction- The instruction to be appended.- Returns:
- The builder itself.
-
appendInstructions
public InstructionSequenceBuilder appendInstructions(Instruction[] instructions)
Appends the given instructions.- Parameters:
instructions- The instructions to be appended.- Returns:
- The builder itself.
-
__
public Instruction[] __()
Short forinstructions().
-
instructions
public Instruction[] instructions()
Returns the accumulated sequence of instructions and resets the sequence in the builder.
-
constants
public Constant[] constants()
Returns the accumulated set of constants and resets the set in the builder.
-
size
public int size()
Returns the number of instructions accumulated by this InstructionSequenceBuilder.
-
nop
public InstructionSequenceBuilder nop()
-
aconst_null
public InstructionSequenceBuilder aconst_null()
-
iconst
public InstructionSequenceBuilder iconst(int constant)
-
iconst_m1
public InstructionSequenceBuilder iconst_m1()
-
iconst_0
public InstructionSequenceBuilder iconst_0()
-
iconst_1
public InstructionSequenceBuilder iconst_1()
-
iconst_2
public InstructionSequenceBuilder iconst_2()
-
iconst_3
public InstructionSequenceBuilder iconst_3()
-
iconst_4
public InstructionSequenceBuilder iconst_4()
-
iconst_5
public InstructionSequenceBuilder iconst_5()
-
lconst
public InstructionSequenceBuilder lconst(int constant)
-
lconst_0
public InstructionSequenceBuilder lconst_0()
-
lconst_1
public InstructionSequenceBuilder lconst_1()
-
fconst
public InstructionSequenceBuilder fconst(int constant)
-
fconst_0
public InstructionSequenceBuilder fconst_0()
-
fconst_1
public InstructionSequenceBuilder fconst_1()
-
fconst_2
public InstructionSequenceBuilder fconst_2()
-
dconst
public InstructionSequenceBuilder dconst(int constant)
-
dconst_0
public InstructionSequenceBuilder dconst_0()
-
dconst_1
public InstructionSequenceBuilder dconst_1()
-
bipush
public InstructionSequenceBuilder bipush(int constant)
-
sipush
public InstructionSequenceBuilder sipush(int constant)
-
ldc
public InstructionSequenceBuilder ldc(int value)
Appends an ldc instruction that loads an integer constant with the given value.
-
ldc
public InstructionSequenceBuilder ldc(int value, ConstantVisitor visitor)
Appends an ldc instruction that loads an integer constant with the given value. Also visits the constant with the given visitor.
-
ldc
public InstructionSequenceBuilder ldc(float value)
Appends an ldc instruction that loads a float constant with the given value.
-
ldc
public InstructionSequenceBuilder ldc(float value, ConstantVisitor visitor)
Appends an ldc instruction that loads a float constant with the given value. Also visits the constant with the given visitor.
-
ldc
public InstructionSequenceBuilder ldc(java.lang.String string)
Appends an ldc instruction that loads a string constant with the given value.
-
ldc
public InstructionSequenceBuilder ldc(java.lang.String string, ConstantVisitor visitor)
Appends an ldc instruction that loads a string constant with the given value. Also visits the constant with the given visitor.
-
ldc
public InstructionSequenceBuilder ldc(java.lang.Object primitiveArray)
Appends an ldc instruction that loads an (internal) primitive array constant with the given value.
-
ldc
public InstructionSequenceBuilder ldc(java.lang.Object primitiveArray, ConstantVisitor visitor)
Appends an ldc instruction that loads an (internal) primitive array constant with the given value. Also visits the constant with the given visitor.
-
ldc
public InstructionSequenceBuilder ldc(Clazz clazz, Member member)
Appends an ldc instruction that loads a string constant with the given class member name.
-
ldc
public InstructionSequenceBuilder ldc(Clazz clazz, Member member, ConstantVisitor visitor)
Appends an ldc instruction that loads a string constant with the given class member name. Also visits the constant with the given visitor.
-
ldc
public InstructionSequenceBuilder ldc(java.lang.String string, Clazz referencedClass, Member referencedMember)
Appends an ldc instruction that loads a string constant with the given value, that references the given class member.
-
ldc
public InstructionSequenceBuilder ldc(java.lang.String string, Clazz referencedClass, Member referencedMember, ConstantVisitor visitor)
Appends an ldc instruction that loads a string constant with the given value, that references the given class member. Also visits the constant with the given visitor.
-
ldc
public InstructionSequenceBuilder ldc(ResourceFile resourceFile)
Appends an ldc instruction that loads a string constant with the given resource file name.
-
ldc
public InstructionSequenceBuilder ldc(ResourceFile resourceFile, ConstantVisitor visitor)
Appends an ldc instruction that loads a string constant with the given resource file name. Also visits the constant with the given visitor.
-
ldc
public InstructionSequenceBuilder ldc(java.lang.String string, ResourceFile referencedResourceFile)
Appends an ldc instruction that loads a string constant with the given value, that references the given resource file.
-
ldc
public InstructionSequenceBuilder ldc(java.lang.String string, ResourceFile referencedResourceFile, ConstantVisitor visitor)
Appends an ldc instruction that loads a string constant with the given value, that references the given resource file. Also visits the constant with the given visitor.
-
ldc
public InstructionSequenceBuilder ldc(Clazz clazz)
Appends an ldc instruction that loads a class constant for the given class.
-
ldc
public InstructionSequenceBuilder ldc(Clazz clazz, ConstantVisitor visitor)
Appends an ldc instruction that loads a class constant for the given class. Also visits the constant with the given visitor.
-
ldc
public InstructionSequenceBuilder ldc(java.lang.String typeName, Clazz referencedClass)
Appends an ldc instruction that loads a class constant for the given type name, that references the given class.
-
ldc
public InstructionSequenceBuilder ldc(java.lang.String typeName, Clazz referencedClass, ConstantVisitor visitor)
Appends an ldc instruction that loads a class constant for the given type name, that references the given class. Also visits the constant with the given visitor.
-
ldc_
public InstructionSequenceBuilder ldc_(int constantIndex)
Appends an ldc instruction that loads the constant at the given index.
-
ldc_
public InstructionSequenceBuilder ldc_(int constantIndex, ConstantVisitor visitor)
Appends an ldc instruction that loads the constant at the given index. Also visits the constant with the given visitor.
-
ldc_w
public InstructionSequenceBuilder ldc_w(int value)
Appends an ldc_w instruction that loads an integer constant with the given value.
-
ldc_w
public InstructionSequenceBuilder ldc_w(int value, ConstantVisitor visitor)
Appends an ldc_w instruction that loads an integer constant with the given value. Also visits the constant with the given visitor.
-
ldc_w
public InstructionSequenceBuilder ldc_w(float value)
Appends an ldc_w instruction that loads a float constant with the given value.
-
ldc_w
public InstructionSequenceBuilder ldc_w(float value, ConstantVisitor visitor)
Appends an ldc_w instruction that loads a float constant with the given value. Also visits the constant with the given visitor.
-
ldc_w
public InstructionSequenceBuilder ldc_w(java.lang.String string)
Appends an ldc_w instruction that loads a string constant with the given value.
-
ldc_w
public InstructionSequenceBuilder ldc_w(java.lang.String string, ConstantVisitor visitor)
Appends an ldc_w instruction that loads a string constant with the given value. Also visits the constant with the given visitor.
-
ldc_w
public InstructionSequenceBuilder ldc_w(java.lang.Object primitiveArray)
Appends an ldc_w instruction that loads an (internal) primitive array constant with the given value.
-
ldc_w
public InstructionSequenceBuilder ldc_w(java.lang.Object primitiveArray, ConstantVisitor visitor)
Appends an ldc_w instruction that loads an (internal) primitive array constant with the given value. Also visits the constant with the given visitor.
-
ldc_w
public InstructionSequenceBuilder ldc_w(Clazz clazz, Member member)
Appends an ldc_w instruction that loads a string constant with the given class member name.
-
ldc_w
public InstructionSequenceBuilder ldc_w(Clazz clazz, Member member, ConstantVisitor visitor)
Appends an ldc_w instruction that loads a string constant with the given class member name. Also visits the constant with the given visitor.
-
ldc_w
public InstructionSequenceBuilder ldc_w(java.lang.String string, Clazz referencedClass, Member referencedMember)
Appends an ldc_w instruction that loads a string constant with the given value, that references the given class member.
-
ldc_w
public InstructionSequenceBuilder ldc_w(java.lang.String string, Clazz referencedClass, Member referencedMember, ConstantVisitor visitor)
Appends an ldc_w instruction that loads a string constant with the given value, that references the given class member. Also visits the constant with the given visitor.
-
ldc_w
public InstructionSequenceBuilder ldc_w(ResourceFile resourceFile)
Appends an ldc_w instruction that loads a string constant with the given resource file name.
-
ldc_w
public InstructionSequenceBuilder ldc_w(ResourceFile resourceFile, ConstantVisitor visitor)
Appends an ldc_w instruction that loads a string constant with the given resource file name. Also visits the constant with the given visitor.
-
ldc_w
public InstructionSequenceBuilder ldc_w(java.lang.String string, ResourceFile referencedResourceFile)
Appends an ldc_w instruction that loads a string constant with the given value, that references the given resource file.
-
ldc_w
public InstructionSequenceBuilder ldc_w(java.lang.String string, ResourceFile referencedResourceFile, ConstantVisitor visitor)
Appends an ldc_w instruction that loads a string constant with the given value, that references the given resource file. Also visits the constant with the given visitor.
-
ldc_w
public InstructionSequenceBuilder ldc_w(Clazz clazz)
Appends an ldc_w instruction that loads a class constant for the given class.
-
ldc_w
public InstructionSequenceBuilder ldc_w(Clazz clazz, ConstantVisitor visitor)
Appends an ldc_w instruction that loads a class constant for the given class. Also visits the constant with the given visitor.
-
ldc_w
public InstructionSequenceBuilder ldc_w(java.lang.String typeName, Clazz referencedClass)
Appends an ldc_w instruction that loads a class constant for the given type name, that references the given class.
-
ldc_w
public InstructionSequenceBuilder ldc_w(java.lang.String typeName, Clazz referencedClass, ConstantVisitor visitor)
Appends an ldc_w instruction that loads a class constant for the given type name, that references the given class. Also visits the constant with the given visitor.
-
ldc_w_
public InstructionSequenceBuilder ldc_w_(int constantIndex)
Appends an ldc_w instruction that loads the constant at the given index.
-
ldc_w_
public InstructionSequenceBuilder ldc_w_(int constantIndex, ConstantVisitor visitor)
Appends an ldc_w instruction that loads the constant at the given index. Also visits the constant with the given visitor.
-
ldc2_w
public InstructionSequenceBuilder ldc2_w(long value)
Appends an ldc2_w instruction that loads a long constant with the given value.
-
ldc2_w
public InstructionSequenceBuilder ldc2_w(long value, ConstantVisitor visitor)
Appends an ldc2_w instruction that loads a long constant with the given value. Also visits the constant with the given index.
-
ldc2_w
public InstructionSequenceBuilder ldc2_w(double value)
Appends an ldc2_w instruction that loads a double constant with the given value.
-
ldc2_w
public InstructionSequenceBuilder ldc2_w(double value, ConstantVisitor visitor)
Appends an ldc2_w instruction that loads a double constant with the given value. Also visits the constant with the given index.
-
ldc2_w
public InstructionSequenceBuilder ldc2_w(int constantIndex)
Appends an ldc2_w instruction that loads the Category 2 constant at the given index.
-
ldc2_w
public InstructionSequenceBuilder ldc2_w(int constantIndex, ConstantVisitor visitor)
Appends an ldc2_w instruction that loads the Category 2 constant at the given index. Also visits the constant with the given visitor.
-
iload
public InstructionSequenceBuilder iload(int variableIndex)
-
lload
public InstructionSequenceBuilder lload(int variableIndex)
-
fload
public InstructionSequenceBuilder fload(int variableIndex)
-
dload
public InstructionSequenceBuilder dload(int variableIndex)
-
aload
public InstructionSequenceBuilder aload(int variableIndex)
-
iload_0
public InstructionSequenceBuilder iload_0()
-
iload_1
public InstructionSequenceBuilder iload_1()
-
iload_2
public InstructionSequenceBuilder iload_2()
-
iload_3
public InstructionSequenceBuilder iload_3()
-
lload_0
public InstructionSequenceBuilder lload_0()
-
lload_1
public InstructionSequenceBuilder lload_1()
-
lload_2
public InstructionSequenceBuilder lload_2()
-
lload_3
public InstructionSequenceBuilder lload_3()
-
fload_0
public InstructionSequenceBuilder fload_0()
-
fload_1
public InstructionSequenceBuilder fload_1()
-
fload_2
public InstructionSequenceBuilder fload_2()
-
fload_3
public InstructionSequenceBuilder fload_3()
-
dload_0
public InstructionSequenceBuilder dload_0()
-
dload_1
public InstructionSequenceBuilder dload_1()
-
dload_2
public InstructionSequenceBuilder dload_2()
-
dload_3
public InstructionSequenceBuilder dload_3()
-
aload_0
public InstructionSequenceBuilder aload_0()
-
aload_1
public InstructionSequenceBuilder aload_1()
-
aload_2
public InstructionSequenceBuilder aload_2()
-
aload_3
public InstructionSequenceBuilder aload_3()
-
iaload
public InstructionSequenceBuilder iaload()
-
laload
public InstructionSequenceBuilder laload()
-
faload
public InstructionSequenceBuilder faload()
-
daload
public InstructionSequenceBuilder daload()
-
aaload
public InstructionSequenceBuilder aaload()
-
baload
public InstructionSequenceBuilder baload()
-
caload
public InstructionSequenceBuilder caload()
-
saload
public InstructionSequenceBuilder saload()
-
istore
public InstructionSequenceBuilder istore(int variableIndex)
-
lstore
public InstructionSequenceBuilder lstore(int variableIndex)
-
fstore
public InstructionSequenceBuilder fstore(int variableIndex)
-
dstore
public InstructionSequenceBuilder dstore(int variableIndex)
-
astore
public InstructionSequenceBuilder astore(int variableIndex)
-
istore_0
public InstructionSequenceBuilder istore_0()
-
istore_1
public InstructionSequenceBuilder istore_1()
-
istore_2
public InstructionSequenceBuilder istore_2()
-
istore_3
public InstructionSequenceBuilder istore_3()
-
lstore_0
public InstructionSequenceBuilder lstore_0()
-
lstore_1
public InstructionSequenceBuilder lstore_1()
-
lstore_2
public InstructionSequenceBuilder lstore_2()
-
lstore_3
public InstructionSequenceBuilder lstore_3()
-
fstore_0
public InstructionSequenceBuilder fstore_0()
-
fstore_1
public InstructionSequenceBuilder fstore_1()
-
fstore_2
public InstructionSequenceBuilder fstore_2()
-
fstore_3
public InstructionSequenceBuilder fstore_3()
-
dstore_0
public InstructionSequenceBuilder dstore_0()
-
dstore_1
public InstructionSequenceBuilder dstore_1()
-
dstore_2
public InstructionSequenceBuilder dstore_2()
-
dstore_3
public InstructionSequenceBuilder dstore_3()
-
astore_0
public InstructionSequenceBuilder astore_0()
-
astore_1
public InstructionSequenceBuilder astore_1()
-
astore_2
public InstructionSequenceBuilder astore_2()
-
astore_3
public InstructionSequenceBuilder astore_3()
-
iastore
public InstructionSequenceBuilder iastore()
-
lastore
public InstructionSequenceBuilder lastore()
-
fastore
public InstructionSequenceBuilder fastore()
-
dastore
public InstructionSequenceBuilder dastore()
-
aastore
public InstructionSequenceBuilder aastore()
-
bastore
public InstructionSequenceBuilder bastore()
-
castore
public InstructionSequenceBuilder castore()
-
sastore
public InstructionSequenceBuilder sastore()
-
pop
public InstructionSequenceBuilder pop()
-
pop2
public InstructionSequenceBuilder pop2()
-
dup
public InstructionSequenceBuilder dup()
-
dup_x1
public InstructionSequenceBuilder dup_x1()
-
dup_x2
public InstructionSequenceBuilder dup_x2()
-
dup2
public InstructionSequenceBuilder dup2()
-
dup2_x1
public InstructionSequenceBuilder dup2_x1()
-
dup2_x2
public InstructionSequenceBuilder dup2_x2()
-
swap
public InstructionSequenceBuilder swap()
-
iadd
public InstructionSequenceBuilder iadd()
-
ladd
public InstructionSequenceBuilder ladd()
-
fadd
public InstructionSequenceBuilder fadd()
-
dadd
public InstructionSequenceBuilder dadd()
-
isub
public InstructionSequenceBuilder isub()
-
lsub
public InstructionSequenceBuilder lsub()
-
fsub
public InstructionSequenceBuilder fsub()
-
dsub
public InstructionSequenceBuilder dsub()
-
imul
public InstructionSequenceBuilder imul()
-
lmul
public InstructionSequenceBuilder lmul()
-
fmul
public InstructionSequenceBuilder fmul()
-
dmul
public InstructionSequenceBuilder dmul()
-
idiv
public InstructionSequenceBuilder idiv()
-
ldiv
public InstructionSequenceBuilder ldiv()
-
fdiv
public InstructionSequenceBuilder fdiv()
-
ddiv
public InstructionSequenceBuilder ddiv()
-
irem
public InstructionSequenceBuilder irem()
-
lrem
public InstructionSequenceBuilder lrem()
-
frem
public InstructionSequenceBuilder frem()
-
drem
public InstructionSequenceBuilder drem()
-
ineg
public InstructionSequenceBuilder ineg()
-
lneg
public InstructionSequenceBuilder lneg()
-
fneg
public InstructionSequenceBuilder fneg()
-
dneg
public InstructionSequenceBuilder dneg()
-
ishl
public InstructionSequenceBuilder ishl()
-
lshl
public InstructionSequenceBuilder lshl()
-
ishr
public InstructionSequenceBuilder ishr()
-
lshr
public InstructionSequenceBuilder lshr()
-
iushr
public InstructionSequenceBuilder iushr()
-
lushr
public InstructionSequenceBuilder lushr()
-
iand
public InstructionSequenceBuilder iand()
-
land
public InstructionSequenceBuilder land()
-
ior
public InstructionSequenceBuilder ior()
-
lor
public InstructionSequenceBuilder lor()
-
ixor
public InstructionSequenceBuilder ixor()
-
lxor
public InstructionSequenceBuilder lxor()
-
iinc
public InstructionSequenceBuilder iinc(int variableIndex, int constant)
-
i2l
public InstructionSequenceBuilder i2l()
-
i2f
public InstructionSequenceBuilder i2f()
-
i2d
public InstructionSequenceBuilder i2d()
-
l2i
public InstructionSequenceBuilder l2i()
-
l2f
public InstructionSequenceBuilder l2f()
-
l2d
public InstructionSequenceBuilder l2d()
-
f2i
public InstructionSequenceBuilder f2i()
-
f2l
public InstructionSequenceBuilder f2l()
-
f2d
public InstructionSequenceBuilder f2d()
-
d2i
public InstructionSequenceBuilder d2i()
-
d2l
public InstructionSequenceBuilder d2l()
-
d2f
public InstructionSequenceBuilder d2f()
-
i2b
public InstructionSequenceBuilder i2b()
-
i2c
public InstructionSequenceBuilder i2c()
-
i2s
public InstructionSequenceBuilder i2s()
-
lcmp
public InstructionSequenceBuilder lcmp()
-
fcmpl
public InstructionSequenceBuilder fcmpl()
-
fcmpg
public InstructionSequenceBuilder fcmpg()
-
dcmpl
public InstructionSequenceBuilder dcmpl()
-
dcmpg
public InstructionSequenceBuilder dcmpg()
-
ifeq
public InstructionSequenceBuilder ifeq(int branchOffset)
-
ifne
public InstructionSequenceBuilder ifne(int branchOffset)
-
iflt
public InstructionSequenceBuilder iflt(int branchOffset)
-
ifge
public InstructionSequenceBuilder ifge(int branchOffset)
-
ifgt
public InstructionSequenceBuilder ifgt(int branchOffset)
-
ifle
public InstructionSequenceBuilder ifle(int branchOffset)
-
ificmpeq
public InstructionSequenceBuilder ificmpeq(int branchOffset)
-
ificmpne
public InstructionSequenceBuilder ificmpne(int branchOffset)
-
ificmplt
public InstructionSequenceBuilder ificmplt(int branchOffset)
-
ificmpge
public InstructionSequenceBuilder ificmpge(int branchOffset)
-
ificmpgt
public InstructionSequenceBuilder ificmpgt(int branchOffset)
-
ificmple
public InstructionSequenceBuilder ificmple(int branchOffset)
-
ifacmpeq
public InstructionSequenceBuilder ifacmpeq(int branchOffset)
-
ifacmpne
public InstructionSequenceBuilder ifacmpne(int branchOffset)
-
goto_
public InstructionSequenceBuilder goto_(int branchOffset)
-
jsr
public InstructionSequenceBuilder jsr(int branchOffset)
-
ret
public InstructionSequenceBuilder ret(int variableIndex)
-
tableswitch
public InstructionSequenceBuilder tableswitch(int defaultOffset, int lowCase, int highCase, int[] jumpOffsets)
-
lookupswitch
public InstructionSequenceBuilder lookupswitch(int defaultOffset, int[] cases, int[] jumpOffsets)
-
return_
public InstructionSequenceBuilder return_(java.lang.String internalType)
-
ireturn
public InstructionSequenceBuilder ireturn()
-
lreturn
public InstructionSequenceBuilder lreturn()
-
freturn
public InstructionSequenceBuilder freturn()
-
dreturn
public InstructionSequenceBuilder dreturn()
-
areturn
public InstructionSequenceBuilder areturn()
-
return_
public InstructionSequenceBuilder return_()
-
getstatic
public InstructionSequenceBuilder getstatic(Clazz clazz, Field field)
-
getstatic
public InstructionSequenceBuilder getstatic(java.lang.String className, java.lang.String name, java.lang.String descriptor)
-
getstatic
public InstructionSequenceBuilder getstatic(java.lang.String className, java.lang.String name, java.lang.String descriptor, Clazz referencedClass, Field referencedField)
-
getstatic
public InstructionSequenceBuilder getstatic(int constantIndex)
-
putstatic
public InstructionSequenceBuilder putstatic(Clazz clazz, Field field)
-
putstatic
public InstructionSequenceBuilder putstatic(java.lang.String className, java.lang.String name, java.lang.String descriptor)
-
putstatic
public InstructionSequenceBuilder putstatic(java.lang.String className, java.lang.String name, java.lang.String descriptor, Clazz referencedClass, Field referencedField)
-
putstatic
public InstructionSequenceBuilder putstatic(int constantIndex)
-
getfield
public InstructionSequenceBuilder getfield(Clazz clazz, Field field)
-
getfield
public InstructionSequenceBuilder getfield(java.lang.String className, java.lang.String name, java.lang.String descriptor)
-
getfield
public InstructionSequenceBuilder getfield(java.lang.String className, java.lang.String name, java.lang.String descriptor, Clazz referencedClass, Field referencedField)
-
getfield
public InstructionSequenceBuilder getfield(int constantIndex)
-
putfield
public InstructionSequenceBuilder putfield(Clazz clazz, Field field)
-
putfield
public InstructionSequenceBuilder putfield(java.lang.String className, java.lang.String name, java.lang.String descriptor)
-
putfield
public InstructionSequenceBuilder putfield(java.lang.String className, java.lang.String name, java.lang.String descriptor, Clazz referencedClass, Field referencedField)
-
putfield
public InstructionSequenceBuilder putfield(int constantIndex)
-
invoke
public InstructionSequenceBuilder invoke(Clazz referencedClass, Method referencedMethod)
-
invoke
public InstructionSequenceBuilder invoke(byte opcode, Clazz referencedClass, Method referencedMethod)
-
invoke
public InstructionSequenceBuilder invoke(byte opcode, java.lang.String className, java.lang.String name, java.lang.String descriptor, Clazz referencedClass, Method referencedMethod)
-
invokevirtual
public InstructionSequenceBuilder invokevirtual(Clazz clazz, Method method)
-
invokevirtual
public InstructionSequenceBuilder invokevirtual(java.lang.String className, java.lang.String name, java.lang.String descriptor)
-
invokevirtual
public InstructionSequenceBuilder invokevirtual(int classIndex, java.lang.String name, java.lang.String descriptor)
-
invokevirtual
public InstructionSequenceBuilder invokevirtual(java.lang.String className, java.lang.String name, java.lang.String descriptor, Clazz referencedClass, Method referencedMethod)
-
invokevirtual
public InstructionSequenceBuilder invokevirtual(int constantIndex)
-
invokespecial
public InstructionSequenceBuilder invokespecial(Clazz clazz, Method method)
-
invokespecial
public InstructionSequenceBuilder invokespecial(java.lang.String className, java.lang.String name, java.lang.String descriptor)
-
invokespecial
public InstructionSequenceBuilder invokespecial(java.lang.String className, java.lang.String name, java.lang.String descriptor, Clazz referencedClass, Method referencedMethod)
-
invokespecial_interface
public InstructionSequenceBuilder invokespecial_interface(Clazz clazz, Method method)
-
invokespecial_interface
public InstructionSequenceBuilder invokespecial_interface(java.lang.String className, java.lang.String name, java.lang.String descriptor)
-
invokespecial_interface
public InstructionSequenceBuilder invokespecial_interface(java.lang.String className, java.lang.String name, java.lang.String descriptor, Clazz referencedClass, Method referencedMethod)
-
invokespecial
public InstructionSequenceBuilder invokespecial(int constantIndex)
-
invokestatic
public InstructionSequenceBuilder invokestatic(Clazz clazz, Method method)
-
invokestatic
public InstructionSequenceBuilder invokestatic(java.lang.String className, java.lang.String name, java.lang.String descriptor)
-
invokestatic
public InstructionSequenceBuilder invokestatic(java.lang.String className, java.lang.String name, java.lang.String descriptor, Clazz referencedClass, Method referencedMethod)
-
invokestatic_interface
public InstructionSequenceBuilder invokestatic_interface(Clazz clazz, Method method)
-
invokestatic_interface
public InstructionSequenceBuilder invokestatic_interface(java.lang.String className, java.lang.String name, java.lang.String descriptor)
-
invokestatic_interface
public InstructionSequenceBuilder invokestatic_interface(java.lang.String className, java.lang.String name, java.lang.String descriptor, Clazz referencedClass, Method referencedMethod)
-
invokestatic
public InstructionSequenceBuilder invokestatic(int constantIndex)
-
invokeinterface
public InstructionSequenceBuilder invokeinterface(Clazz clazz, Method method)
-
invokeinterface
public InstructionSequenceBuilder invokeinterface(java.lang.String className, java.lang.String name, java.lang.String descriptor)
-
invokeinterface
public InstructionSequenceBuilder invokeinterface(java.lang.String className, java.lang.String name, java.lang.String descriptor, Clazz referencedClass, Method referencedMethod)
-
invokeinterface
public InstructionSequenceBuilder invokeinterface(int constantIndex, int constant)
-
invokedynamic
public InstructionSequenceBuilder invokedynamic(int bootStrapMethodIndex, java.lang.String name, java.lang.String descriptor)
-
invokedynamic
public InstructionSequenceBuilder invokedynamic(int bootStrapMethodIndex, java.lang.String name, java.lang.String descriptor, Clazz[] referencedClasses)
-
invokedynamic
public InstructionSequenceBuilder invokedynamic(int constantIndex)
-
new_
public InstructionSequenceBuilder new_(Clazz clazz)
-
new_
public InstructionSequenceBuilder new_(java.lang.String className)
-
new_
public InstructionSequenceBuilder new_(java.lang.String className, Clazz referencedClass)
-
new_
public InstructionSequenceBuilder new_(int constantIndex)
-
newarray
public InstructionSequenceBuilder newarray(int constant)
-
anewarray
public InstructionSequenceBuilder anewarray(Clazz elementType)
-
anewarray
public InstructionSequenceBuilder anewarray(java.lang.String elementTypeName, Clazz referencedClass)
-
anewarray
public InstructionSequenceBuilder anewarray(int constantIndex)
-
arraylength
public InstructionSequenceBuilder arraylength()
-
athrow
public InstructionSequenceBuilder athrow()
-
checkcast
public InstructionSequenceBuilder checkcast(Clazz type)
-
checkcast
public InstructionSequenceBuilder checkcast(java.lang.String typeName)
-
checkcast
public InstructionSequenceBuilder checkcast(java.lang.String typeName, Clazz referencedClass)
-
checkcast
public InstructionSequenceBuilder checkcast(int constantIndex)
-
instanceof_
public InstructionSequenceBuilder instanceof_(Clazz type)
-
instanceof_
public InstructionSequenceBuilder instanceof_(java.lang.String typeName, Clazz referencedClass)
-
instanceof_
public InstructionSequenceBuilder instanceof_(int constantIndex)
-
monitorenter
public InstructionSequenceBuilder monitorenter()
-
monitorexit
public InstructionSequenceBuilder monitorexit()
-
wide
public InstructionSequenceBuilder wide()
-
multianewarray
public InstructionSequenceBuilder multianewarray(Clazz type)
-
multianewarray
public InstructionSequenceBuilder multianewarray(java.lang.String typeName)
-
multianewarray
public InstructionSequenceBuilder multianewarray(java.lang.String typeName, Clazz referencedClass)
-
multianewarray
public InstructionSequenceBuilder multianewarray(int constantIndex)
-
ifnull
public InstructionSequenceBuilder ifnull(int branchOffset)
-
ifnonnull
public InstructionSequenceBuilder ifnonnull(int branchOffset)
-
goto_w
public InstructionSequenceBuilder goto_w(int branchOffset)
-
jsr_w
public InstructionSequenceBuilder jsr_w(int branchOffset)
-
pushPrimitive
public InstructionSequenceBuilder pushPrimitive(java.lang.Object value, char type)
Pushes the given primitive value on the stack.Operand stack: ... -> ..., value.
- Parameters:
value- The primitive value to be pushed - should never be null.type- The internal type of the primitive ('Z','B','I',...).
-
boxPrimitiveType
public InstructionSequenceBuilder boxPrimitiveType(char sourceType)
Box the primitive value present on the stack.Operand stack: ..., primitive -> ..., boxed_primitive.
- Parameters:
sourceType- Type of the primitive on the stack.- Returns:
- This.
-
unboxPrimitiveType
public InstructionSequenceBuilder unboxPrimitiveType(java.lang.String sourceType, java.lang.String targetType)
Unbox the object on the stack to a primitive value.Operand stack: ..., boxed_primitive -> ..., primitive.
- Parameters:
sourceType- Type of the primitive that should be unboxed.targetType- Resulting type.
-
pushPrimitiveOrString
public InstructionSequenceBuilder pushPrimitiveOrString(java.lang.Object value, java.lang.String type)
Pushes the given string or primitive on the stack.- Parameters:
value- The primitive value to be pushed - should never be null.type- The internal type of the primitive ('Z','B','I',...).- Throws:
java.lang.IllegalArgumentException- if the type is neither primitive orLjava/lang/String;.
-
pushPrimitiveOrString
public InstructionSequenceBuilder pushPrimitiveOrString(java.lang.Object value, java.lang.String type, boolean allowBoxing)
Pushes the given string or primitive on the stack.- Parameters:
value- The primitive value to be pushed - should never be null.type- The internal type of the primitive ('Z','B','I',...).allowBoxing- If the type is a primitive wrapper class, set allowBoxing = true, to push a boxed primitive.- Throws:
java.lang.IllegalArgumentException- if the type is neither primitive orLjava/lang/String;.
-
pushBoxedPrimitive
public InstructionSequenceBuilder pushBoxedPrimitive(java.lang.Object value, java.lang.String type)
Push a primitive on the stack followed by a call to it's boxed valueOf method.- Parameters:
value- The value.type- The type, e.g.Ljava/lang/Integer;.
-
pushInt
public InstructionSequenceBuilder pushInt(int value)
Pushes the given primitive int on the stack in the most efficient way (as an iconst, bipush, sipush, or ldc instruction).- Parameters:
value- The int value to be pushed.
-
pushFloat
public InstructionSequenceBuilder pushFloat(float value)
Pushes the given primitive float on the stack in the most efficient way (as an fconst or ldc instruction).- Parameters:
value- The float value to be pushed.
-
pushLong
public InstructionSequenceBuilder pushLong(long value)
Pushes the given primitive long on the stack in the most efficient way (as an lconst or ldc instruction).- Parameters:
value- The long to be pushed.
-
pushDouble
public InstructionSequenceBuilder pushDouble(double value)
Pushes the given primitive double on the stack in the most efficient way (as a dconst or ldc instruction).- Parameters:
value- The double value to be pushed.
-
pushNewArray
public InstructionSequenceBuilder pushNewArray(java.lang.String type, int size)
Pushes a new array on the stack.Operand stack: ... -> ..., array.
- Parameters:
type- The array element type (or class name in case of objects).size- The size of the array to be created.
-
pushPrimitiveOrStringArray
public InstructionSequenceBuilder pushPrimitiveOrStringArray(java.lang.String type, java.lang.Object[] values)
Pushes a new array with given values onto the stack.For primitives you can specify, for example, either I or Ljava/lang/Integer; to create an object array or a primitive array.
Operand stack: ... -> ..., array.
- Parameters:
type- The array element type (or class name in case of objects).values- The array values.
-
pushDefault
public InstructionSequenceBuilder pushDefault(java.lang.String type)
Pushes a default value onto the stack.Either 0 for primitives or null for objects.
- Parameters:
type- The type.
-
load
public InstructionSequenceBuilder load(int variableIndex, java.lang.String type)
Loads the given variable onto the stack.Operand stack: ... -> ..., value.
- Parameters:
variableIndex- The index of the variable to be loaded.type- The type of the variable to be loaded.
-
load
public InstructionSequenceBuilder load(int variableIndex, char type)
Loads the given variable of primitive type onto the stack.Operand stack: ... -> ..., value.
- Parameters:
variableIndex- The index of the variable to be loaded.type- The type of the variable to be loaded.
-
store
public InstructionSequenceBuilder store(int variableIndex, java.lang.String type)
Stores the value on top of the stack in the variable with given index.Operand stsack: ..., value -> ...
- Parameters:
variableIndex- The index of the variable where to store the value.type- The type of the value to be stored.
-
store
public InstructionSequenceBuilder store(int variableIndex, char type)
Stores the primitve value on top of the stack in the variable with given index.Operand stack: ..., value -> ...
- Parameters:
variableIndex- The index of the variable where to store the value.type- The type of the value to be stored.
-
storeToArray
public InstructionSequenceBuilder storeToArray(java.lang.String elementType)
Stores an element to an array.Operand stack: ..., array, index, value -> ...
- Parameters:
elementType- The type of the value to be stored.
-
loadFromArray
public InstructionSequenceBuilder loadFromArray(java.lang.String elementType)
Loads an element from an array.Operand stack: ..., array, index -> ..., value.
- Parameters:
elementType- The type of the value to be loaded.
-
main
public static void main(java.lang.String[] args)
Small sample application that illustrates the use of this class.
-
-