public class InstructionSequenceBuilder
extends java.lang.Object
Constructor and 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.
|
public InstructionSequenceBuilder()
public InstructionSequenceBuilder(ClassPool programClassPool, ClassPool libraryClassPool)
programClassPool
- the program class pool from which new
constants can be initialized.libraryClassPool
- the library class pool from which new
constants can be initialized.public InstructionSequenceBuilder(ProgramClass targetClass)
targetClass
- the target class for the instruction
constants.public InstructionSequenceBuilder(ProgramClass targetClass, ClassPool programClassPool, ClassPool libraryClassPool)
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.public InstructionSequenceBuilder(ConstantPoolEditor constantPoolEditor)
constantPoolEditor
- the editor to use for creating any constants
for the instructions.public ConstantPoolEditor getConstantPoolEditor()
public InstructionSequenceBuilder label(Instruction instruction)
appendInstruction(Instruction)
.InstructionSequenceReplacer.label()
public InstructionSequenceBuilder catch_(Instruction instruction)
appendInstruction(Instruction)
.public InstructionSequenceBuilder line(Instruction instruction)
appendInstruction(Instruction)
.public InstructionSequenceBuilder appendInstruction(Instruction instruction)
instruction
- the instruction to be appended.public InstructionSequenceBuilder appendInstructions(Instruction[] instructions)
instructions
- the instructions to be appended.public Instruction[] __()
instructions()
.public Instruction[] instructions()
public Constant[] constants()
public int size()
public InstructionSequenceBuilder nop()
public InstructionSequenceBuilder aconst_null()
public InstructionSequenceBuilder iconst(int constant)
public InstructionSequenceBuilder iconst_m1()
public InstructionSequenceBuilder iconst_0()
public InstructionSequenceBuilder iconst_1()
public InstructionSequenceBuilder iconst_2()
public InstructionSequenceBuilder iconst_3()
public InstructionSequenceBuilder iconst_4()
public InstructionSequenceBuilder iconst_5()
public InstructionSequenceBuilder lconst(int constant)
public InstructionSequenceBuilder lconst_0()
public InstructionSequenceBuilder lconst_1()
public InstructionSequenceBuilder fconst(int constant)
public InstructionSequenceBuilder fconst_0()
public InstructionSequenceBuilder fconst_1()
public InstructionSequenceBuilder fconst_2()
public InstructionSequenceBuilder dconst(int constant)
public InstructionSequenceBuilder dconst_0()
public InstructionSequenceBuilder dconst_1()
public InstructionSequenceBuilder bipush(int constant)
public InstructionSequenceBuilder sipush(int constant)
public InstructionSequenceBuilder ldc(int value)
public InstructionSequenceBuilder ldc(float value)
public InstructionSequenceBuilder ldc(java.lang.String string)
public InstructionSequenceBuilder ldc(java.lang.Object primitiveArray)
public InstructionSequenceBuilder ldc(Clazz clazz, Member member)
public InstructionSequenceBuilder ldc(java.lang.String string, Clazz referencedClass, Member referencedMember)
public InstructionSequenceBuilder ldc(ResourceFile resourceFile)
public InstructionSequenceBuilder ldc(java.lang.String string, ResourceFile referencedResourceFile)
public InstructionSequenceBuilder ldc(Clazz clazz)
public InstructionSequenceBuilder ldc(java.lang.String typeName, Clazz referencedClass)
public InstructionSequenceBuilder ldc_(int constantIndex)
public InstructionSequenceBuilder ldc_w(int value)
public InstructionSequenceBuilder ldc_w(float value)
public InstructionSequenceBuilder ldc_w(java.lang.String string)
public InstructionSequenceBuilder ldc_w(java.lang.Object primitiveArray)
public InstructionSequenceBuilder ldc_w(Clazz clazz, Member member)
public InstructionSequenceBuilder ldc_w(java.lang.String string, Clazz referencedClass, Member referencedMember)
public InstructionSequenceBuilder ldc_w(ResourceFile resourceFile)
public InstructionSequenceBuilder ldc_w(java.lang.String string, ResourceFile referencedResourceFile)
public InstructionSequenceBuilder ldc_w(Clazz clazz)
public InstructionSequenceBuilder ldc_w(java.lang.String typeName, Clazz referencedClass)
public InstructionSequenceBuilder ldc_w_(int constantIndex)
public InstructionSequenceBuilder ldc2_w(long value)
public InstructionSequenceBuilder ldc2_w(double value)
public InstructionSequenceBuilder ldc2_w(int constantIndex)
public InstructionSequenceBuilder iload(int variableIndex)
public InstructionSequenceBuilder lload(int variableIndex)
public InstructionSequenceBuilder fload(int variableIndex)
public InstructionSequenceBuilder dload(int variableIndex)
public InstructionSequenceBuilder aload(int variableIndex)
public InstructionSequenceBuilder iload_0()
public InstructionSequenceBuilder iload_1()
public InstructionSequenceBuilder iload_2()
public InstructionSequenceBuilder iload_3()
public InstructionSequenceBuilder lload_0()
public InstructionSequenceBuilder lload_1()
public InstructionSequenceBuilder lload_2()
public InstructionSequenceBuilder lload_3()
public InstructionSequenceBuilder fload_0()
public InstructionSequenceBuilder fload_1()
public InstructionSequenceBuilder fload_2()
public InstructionSequenceBuilder fload_3()
public InstructionSequenceBuilder dload_0()
public InstructionSequenceBuilder dload_1()
public InstructionSequenceBuilder dload_2()
public InstructionSequenceBuilder dload_3()
public InstructionSequenceBuilder aload_0()
public InstructionSequenceBuilder aload_1()
public InstructionSequenceBuilder aload_2()
public InstructionSequenceBuilder aload_3()
public InstructionSequenceBuilder iaload()
public InstructionSequenceBuilder laload()
public InstructionSequenceBuilder faload()
public InstructionSequenceBuilder daload()
public InstructionSequenceBuilder aaload()
public InstructionSequenceBuilder baload()
public InstructionSequenceBuilder caload()
public InstructionSequenceBuilder saload()
public InstructionSequenceBuilder istore(int variableIndex)
public InstructionSequenceBuilder lstore(int variableIndex)
public InstructionSequenceBuilder fstore(int variableIndex)
public InstructionSequenceBuilder dstore(int variableIndex)
public InstructionSequenceBuilder astore(int variableIndex)
public InstructionSequenceBuilder istore_0()
public InstructionSequenceBuilder istore_1()
public InstructionSequenceBuilder istore_2()
public InstructionSequenceBuilder istore_3()
public InstructionSequenceBuilder lstore_0()
public InstructionSequenceBuilder lstore_1()
public InstructionSequenceBuilder lstore_2()
public InstructionSequenceBuilder lstore_3()
public InstructionSequenceBuilder fstore_0()
public InstructionSequenceBuilder fstore_1()
public InstructionSequenceBuilder fstore_2()
public InstructionSequenceBuilder fstore_3()
public InstructionSequenceBuilder dstore_0()
public InstructionSequenceBuilder dstore_1()
public InstructionSequenceBuilder dstore_2()
public InstructionSequenceBuilder dstore_3()
public InstructionSequenceBuilder astore_0()
public InstructionSequenceBuilder astore_1()
public InstructionSequenceBuilder astore_2()
public InstructionSequenceBuilder astore_3()
public InstructionSequenceBuilder iastore()
public InstructionSequenceBuilder lastore()
public InstructionSequenceBuilder fastore()
public InstructionSequenceBuilder dastore()
public InstructionSequenceBuilder aastore()
public InstructionSequenceBuilder bastore()
public InstructionSequenceBuilder castore()
public InstructionSequenceBuilder sastore()
public InstructionSequenceBuilder pop()
public InstructionSequenceBuilder pop2()
public InstructionSequenceBuilder dup()
public InstructionSequenceBuilder dup_x1()
public InstructionSequenceBuilder dup_x2()
public InstructionSequenceBuilder dup2()
public InstructionSequenceBuilder dup2_x1()
public InstructionSequenceBuilder dup2_x2()
public InstructionSequenceBuilder swap()
public InstructionSequenceBuilder iadd()
public InstructionSequenceBuilder ladd()
public InstructionSequenceBuilder fadd()
public InstructionSequenceBuilder dadd()
public InstructionSequenceBuilder isub()
public InstructionSequenceBuilder lsub()
public InstructionSequenceBuilder fsub()
public InstructionSequenceBuilder dsub()
public InstructionSequenceBuilder imul()
public InstructionSequenceBuilder lmul()
public InstructionSequenceBuilder fmul()
public InstructionSequenceBuilder dmul()
public InstructionSequenceBuilder idiv()
public InstructionSequenceBuilder ldiv()
public InstructionSequenceBuilder fdiv()
public InstructionSequenceBuilder ddiv()
public InstructionSequenceBuilder irem()
public InstructionSequenceBuilder lrem()
public InstructionSequenceBuilder frem()
public InstructionSequenceBuilder drem()
public InstructionSequenceBuilder ineg()
public InstructionSequenceBuilder lneg()
public InstructionSequenceBuilder fneg()
public InstructionSequenceBuilder dneg()
public InstructionSequenceBuilder ishl()
public InstructionSequenceBuilder lshl()
public InstructionSequenceBuilder ishr()
public InstructionSequenceBuilder lshr()
public InstructionSequenceBuilder iushr()
public InstructionSequenceBuilder lushr()
public InstructionSequenceBuilder iand()
public InstructionSequenceBuilder land()
public InstructionSequenceBuilder ior()
public InstructionSequenceBuilder lor()
public InstructionSequenceBuilder ixor()
public InstructionSequenceBuilder lxor()
public InstructionSequenceBuilder iinc(int variableIndex, int constant)
public InstructionSequenceBuilder i2l()
public InstructionSequenceBuilder i2f()
public InstructionSequenceBuilder i2d()
public InstructionSequenceBuilder l2i()
public InstructionSequenceBuilder l2f()
public InstructionSequenceBuilder l2d()
public InstructionSequenceBuilder f2i()
public InstructionSequenceBuilder f2l()
public InstructionSequenceBuilder f2d()
public InstructionSequenceBuilder d2i()
public InstructionSequenceBuilder d2l()
public InstructionSequenceBuilder d2f()
public InstructionSequenceBuilder i2b()
public InstructionSequenceBuilder i2c()
public InstructionSequenceBuilder i2s()
public InstructionSequenceBuilder lcmp()
public InstructionSequenceBuilder fcmpl()
public InstructionSequenceBuilder fcmpg()
public InstructionSequenceBuilder dcmpl()
public InstructionSequenceBuilder dcmpg()
public InstructionSequenceBuilder ifeq(int branchOffset)
public InstructionSequenceBuilder ifne(int branchOffset)
public InstructionSequenceBuilder iflt(int branchOffset)
public InstructionSequenceBuilder ifge(int branchOffset)
public InstructionSequenceBuilder ifgt(int branchOffset)
public InstructionSequenceBuilder ifle(int branchOffset)
public InstructionSequenceBuilder ificmpeq(int branchOffset)
public InstructionSequenceBuilder ificmpne(int branchOffset)
public InstructionSequenceBuilder ificmplt(int branchOffset)
public InstructionSequenceBuilder ificmpge(int branchOffset)
public InstructionSequenceBuilder ificmpgt(int branchOffset)
public InstructionSequenceBuilder ificmple(int branchOffset)
public InstructionSequenceBuilder ifacmpeq(int branchOffset)
public InstructionSequenceBuilder ifacmpne(int branchOffset)
public InstructionSequenceBuilder goto_(int branchOffset)
public InstructionSequenceBuilder jsr(int branchOffset)
public InstructionSequenceBuilder ret(int variableIndex)
public InstructionSequenceBuilder tableswitch(int defaultOffset, int lowCase, int highCase, int[] jumpOffsets)
public InstructionSequenceBuilder lookupswitch(int defaultOffset, int[] cases, int[] jumpOffsets)
public InstructionSequenceBuilder ireturn()
public InstructionSequenceBuilder lreturn()
public InstructionSequenceBuilder freturn()
public InstructionSequenceBuilder dreturn()
public InstructionSequenceBuilder areturn()
public InstructionSequenceBuilder return_()
public InstructionSequenceBuilder getstatic(Clazz clazz, Field field)
public InstructionSequenceBuilder getstatic(java.lang.String className, java.lang.String name, java.lang.String descriptor)
public InstructionSequenceBuilder getstatic(java.lang.String className, java.lang.String name, java.lang.String descriptor, Clazz referencedClass, Field referencedField)
public InstructionSequenceBuilder getstatic(int constantIndex)
public InstructionSequenceBuilder putstatic(Clazz clazz, Field field)
public InstructionSequenceBuilder putstatic(java.lang.String className, java.lang.String name, java.lang.String descriptor)
public InstructionSequenceBuilder putstatic(java.lang.String className, java.lang.String name, java.lang.String descriptor, Clazz referencedClass, Field referencedField)
public InstructionSequenceBuilder putstatic(int constantIndex)
public InstructionSequenceBuilder getfield(Clazz clazz, Field field)
public InstructionSequenceBuilder getfield(java.lang.String className, java.lang.String name, java.lang.String descriptor)
public InstructionSequenceBuilder getfield(java.lang.String className, java.lang.String name, java.lang.String descriptor, Clazz referencedClass, Field referencedField)
public InstructionSequenceBuilder getfield(int constantIndex)
public InstructionSequenceBuilder putfield(Clazz clazz, Field field)
public InstructionSequenceBuilder putfield(java.lang.String className, java.lang.String name, java.lang.String descriptor)
public InstructionSequenceBuilder putfield(java.lang.String className, java.lang.String name, java.lang.String descriptor, Clazz referencedClass, Field referencedField)
public InstructionSequenceBuilder putfield(int constantIndex)
public InstructionSequenceBuilder invokevirtual(Clazz clazz, Method method)
public InstructionSequenceBuilder invokevirtual(java.lang.String className, java.lang.String name, java.lang.String descriptor)
public InstructionSequenceBuilder invokevirtual(int classIndex, java.lang.String name, java.lang.String descriptor)
public InstructionSequenceBuilder invokevirtual(java.lang.String className, java.lang.String name, java.lang.String descriptor, Clazz referencedClass, Method referencedMethod)
public InstructionSequenceBuilder invokevirtual(int constantIndex)
public InstructionSequenceBuilder invokespecial(Clazz clazz, Method method)
public InstructionSequenceBuilder invokespecial(java.lang.String className, java.lang.String name, java.lang.String descriptor)
public InstructionSequenceBuilder invokespecial(java.lang.String className, java.lang.String name, java.lang.String descriptor, Clazz referencedClass, Method referencedMethod)
public InstructionSequenceBuilder invokespecial_interface(Clazz clazz, Method method)
public InstructionSequenceBuilder invokespecial_interface(java.lang.String className, java.lang.String name, java.lang.String descriptor)
public InstructionSequenceBuilder invokespecial_interface(java.lang.String className, java.lang.String name, java.lang.String descriptor, Clazz referencedClass, Method referencedMethod)
public InstructionSequenceBuilder invokespecial(int constantIndex)
public InstructionSequenceBuilder invokestatic(Clazz clazz, Method method)
public InstructionSequenceBuilder invokestatic(java.lang.String className, java.lang.String name, java.lang.String descriptor)
public InstructionSequenceBuilder invokestatic(java.lang.String className, java.lang.String name, java.lang.String descriptor, Clazz referencedClass, Method referencedMethod)
public InstructionSequenceBuilder invokestatic_interface(Clazz clazz, Method method)
public InstructionSequenceBuilder invokestatic_interface(java.lang.String className, java.lang.String name, java.lang.String descriptor)
public InstructionSequenceBuilder invokestatic_interface(java.lang.String className, java.lang.String name, java.lang.String descriptor, Clazz referencedClass, Method referencedMethod)
public InstructionSequenceBuilder invokestatic(int constantIndex)
public InstructionSequenceBuilder invokeinterface(Clazz clazz, Method method)
public InstructionSequenceBuilder invokeinterface(java.lang.String className, java.lang.String name, java.lang.String descriptor)
public InstructionSequenceBuilder invokeinterface(java.lang.String className, java.lang.String name, java.lang.String descriptor, Clazz referencedClass, Method referencedMethod)
public InstructionSequenceBuilder invokeinterface(int constantIndex, int constant)
public InstructionSequenceBuilder invokedynamic(int bootStrapMethodIndex, java.lang.String name, java.lang.String descriptor)
public InstructionSequenceBuilder invokedynamic(int bootStrapMethodIndex, java.lang.String name, java.lang.String descriptor, Clazz[] referencedClasses)
public InstructionSequenceBuilder invokedynamic(int constantIndex)
public InstructionSequenceBuilder new_(Clazz clazz)
public InstructionSequenceBuilder new_(java.lang.String className)
public InstructionSequenceBuilder new_(java.lang.String className, Clazz referencedClass)
public InstructionSequenceBuilder new_(int constantIndex)
public InstructionSequenceBuilder newarray(int constant)
public InstructionSequenceBuilder anewarray(Clazz elementType)
public InstructionSequenceBuilder anewarray(java.lang.String elementTypeName, Clazz referencedClass)
public InstructionSequenceBuilder anewarray(int constantIndex)
public InstructionSequenceBuilder arraylength()
public InstructionSequenceBuilder athrow()
public InstructionSequenceBuilder checkcast(Clazz type)
public InstructionSequenceBuilder checkcast(java.lang.String typeName)
public InstructionSequenceBuilder checkcast(java.lang.String typeName, Clazz referencedClass)
public InstructionSequenceBuilder checkcast(int constantIndex)
public InstructionSequenceBuilder instanceof_(Clazz type)
public InstructionSequenceBuilder instanceof_(java.lang.String typeName, Clazz referencedClass)
public InstructionSequenceBuilder instanceof_(int constantIndex)
public InstructionSequenceBuilder monitorenter()
public InstructionSequenceBuilder monitorexit()
public InstructionSequenceBuilder wide()
public InstructionSequenceBuilder multianewarray(Clazz type)
public InstructionSequenceBuilder multianewarray(java.lang.String typeName)
public InstructionSequenceBuilder multianewarray(java.lang.String typeName, Clazz referencedClass)
public InstructionSequenceBuilder multianewarray(int constantIndex)
public InstructionSequenceBuilder ifnull(int branchOffset)
public InstructionSequenceBuilder ifnonnull(int branchOffset)
public InstructionSequenceBuilder goto_w(int branchOffset)
public InstructionSequenceBuilder jsr_w(int branchOffset)
public InstructionSequenceBuilder pushPrimitive(java.lang.Object value, char type)
value
- the primitive value to be pushed - should never be null.type
- the internal type of the primitive ('Z','B','I',...)public InstructionSequenceBuilder boxPrimitiveType(char sourceType)
sourceType
- type of the primitive on the stack.public InstructionSequenceBuilder unboxPrimitiveType(java.lang.String sourceType, java.lang.String targetType)
sourceType
- type of the primitive that should be unboxed.targetType
- resulting type.public InstructionSequenceBuilder pushPrimitiveOrString(java.lang.Object value, java.lang.String type)
value
- the primitive value to be pushed - should never be null.type
- the internal type of the primitive ('Z','B','I',...)java.lang.IllegalArgumentException
- if the type is neither primitive or Ljava/lang/String;public InstructionSequenceBuilder pushPrimitiveOrString(java.lang.Object value, java.lang.String type, boolean allowBoxing)
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.java.lang.IllegalArgumentException
- if the type is neither primitive or Ljava/lang/String;public InstructionSequenceBuilder pushBoxedPrimitive(java.lang.Object value, java.lang.String type)
value
- the value.type
- the type e.g. Ljava/lang/Integer;public InstructionSequenceBuilder pushInt(int value)
value
- the int value to be pushed.public InstructionSequenceBuilder pushFloat(float value)
value
- the float value to be pushed.public InstructionSequenceBuilder pushLong(long value)
value
- the inlongue to be pushed.public InstructionSequenceBuilder pushDouble(double value)
value
- the double value to be pushed.public InstructionSequenceBuilder pushNewArray(java.lang.String type, int size)
type
- the array element type (or class name in case of objects).size
- the size of the array to be created.public InstructionSequenceBuilder pushPrimitiveOrStringArray(java.lang.String type, java.lang.Object[] values)
type
- the array element type (or class name in case of objects).values
- the array values.public InstructionSequenceBuilder pushDefault(java.lang.String type)
type
- the type.public InstructionSequenceBuilder load(int variableIndex, java.lang.String type)
variableIndex
- the index of the variable to be loaded.type
- the type of the variable to be loaded.public InstructionSequenceBuilder load(int variableIndex, char type)
variableIndex
- the index of the variable to be loaded.type
- the type of the variable to be loaded.public InstructionSequenceBuilder store(int variableIndex, java.lang.String type)
variableIndex
- the index of the variable where to store the
value.type
- the type of the value to be stored.public InstructionSequenceBuilder store(int variableIndex, char type)
variableIndex
- the index of the variable where to store the
value.type
- the type of the value to be stored.public InstructionSequenceBuilder storeToArray(java.lang.String elementType)
elementType
- the type of the value to be stored.public InstructionSequenceBuilder loadFromArray(java.lang.String elementType)
elementType
- the type of the value to be loaded.public static void main(java.lang.String[] args)