Class Bytecode
A Bytecode object is an unbounded array
containing bytecode. For example,
ConstPool cp = ...; // constant pool table Bytecode b = new Bytecode(cp, 1, 0); b.addIconst(3); b.addReturn(CtClass.intType); CodeAttribute ca = b.toCodeAttribute();
This program produces a Code attribute including a bytecode sequence:
iconst_3 ireturn
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final CtClassRepresents theCtClassfile using the constant pool table given to thisBytecodeobject.Fields inherited from interface javassist.bytecode.Opcode
AALOAD, AASTORE, ACONST_NULL, ALOAD, ALOAD_0, ALOAD_1, ALOAD_2, ALOAD_3, ANEWARRAY, ARETURN, ARRAYLENGTH, ASTORE, ASTORE_0, ASTORE_1, ASTORE_2, ASTORE_3, ATHROW, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DLOAD_0, DLOAD_1, DLOAD_2, DLOAD_3, DMUL, DNEG, DREM, DRETURN, DSTORE, DSTORE_0, DSTORE_1, DSTORE_2, DSTORE_3, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAD_0, FLOAD_1, FLOAD_2, FLOAD_3, FMUL, FNEG, FREM, FRETURN, FSTORE, FSTORE_0, FSTORE_1, FSTORE_2, FSTORE_3, FSUB, GETFIELD, GETSTATIC, GOTO, GOTO_W, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILOAD, ILOAD_0, ILOAD_1, ILOAD_2, ILOAD_3, IMUL, INEG, INSTANCEOF, INVOKEDYNAMIC, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISTORE_0, ISTORE_1, ISTORE_2, ISTORE_3, ISUB, IUSHR, IXOR, JSR, JSR_W, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDC_W, LDC2_W, LDIV, LLOAD, LLOAD_0, LLOAD_1, LLOAD_2, LLOAD_3, LMUL, LNEG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSTORE_0, LSTORE_1, LSTORE_2, LSTORE_3, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, STACK_GROW, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, WIDE -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidadd(int code) Appends an 8bit value to the end of the bytecode sequence.voidadd(int b1, int b2) voidadd(int b1, int b2, int b3, int b4) voidadd32bit(int value) Appends a 32bit value to the end of the bytecode sequence.voidaddAload(int n) Appends ALOAD or (WIDE) ALOAD_<n>voidaddAnewarray(String classname) Appends ANEWARRAY.voidaddAnewarray(CtClass clazz, int length) Appends ICONST and ANEWARRAY.voidaddAstore(int n) Appends ASTORE or (WIDE) ASTORE_<n>voidaddCheckcast(String classname) Appends CHECKCAST.voidAppends CHECKCAST.voidaddConstZero(CtClass type) Appends an instruction for pushing zero or null on the stack.voidaddDconst(double d) Appends DCONST or DCONST_<n>voidaddDload(int n) Appends DLOAD or (WIDE) DLOAD_<n>voidaddDstore(int n) Appends DSTORE or (WIDE) DSTORE_<n>voidaddExceptionHandler(int start, int end, int handler, int type) Adds a new entry ofexception_table.voidaddExceptionHandler(int start, int end, int handler, String type) Adds a new entry ofexception_table.voidaddExceptionHandler(int start, int end, int handler, CtClass type) Adds a new entry ofexception_table.voidaddFconst(float f) Appends FCONST or FCONST_<n>voidaddFload(int n) Appends FLOAD or (WIDE) FLOAD_<n>voidaddFstore(int n) Appends FSTORE or FSTORE_<n>voidaddGap(int length) Appends the length-byte gap to the end of the bytecode sequence.voidaddGetfield(String c, String name, String type) Appends GETFIELD.voidaddGetfield(CtClass c, String name, String type) Appends GETFIELD.voidaddGetstatic(String c, String name, String type) Appends GETSTATIC.voidaddGetstatic(CtClass c, String name, String type) Appends GETSTATIC.voidaddIconst(int n) Appends ICONST or ICONST_<n>voidaddIload(int n) Appends ILOAD or (WIDE) ILOAD_<n>voidaddIndex(int index) Appends a 16bit value to the end of the bytecode sequence.voidaddInstanceof(String classname) Appends INSTANCEOF.voidaddInvokedynamic(int bootstrap, String name, String desc) Appends INVOKEDYNAMIC.voidaddInvokeinterface(int clazz, String name, String desc, int count) Appends INVOKEINTERFACE.voidaddInvokeinterface(String classname, String name, String desc, int count) Appends INVOKEINTERFACE.voidaddInvokeinterface(CtClass clazz, String name, String desc, int count) Appends INVOKEINTERFACE.voidaddInvokeinterface(CtClass clazz, String name, CtClass returnType, CtClass[] paramTypes, int count) Appends INVOKEINTERFACE.voidaddInvokespecial(boolean isInterface, int clazz, String name, String desc) Appends INVOKESPECIAL.voidaddInvokespecial(int index, String desc) Appends INVOKESPECIAL.voidaddInvokespecial(int clazz, String name, String desc) Appends INVOKESPECIAL.voidaddInvokespecial(String clazz, String name, String desc) Appends INVOKESPECIAL.voidaddInvokespecial(CtClass clazz, String name, String desc) Appends INVOKESPECIAL.voidaddInvokespecial(CtClass clazz, String name, CtClass returnType, CtClass[] paramTypes) Appends INVOKESPECIAL.voidaddInvokestatic(int clazz, String name, String desc) Appends INVOKESTATIC.voidaddInvokestatic(String classname, String name, String desc) Appends INVOKESTATIC.voidaddInvokestatic(CtClass clazz, String name, String desc) Appends INVOKESTATIC.voidaddInvokestatic(CtClass clazz, String name, CtClass returnType, CtClass[] paramTypes) Appends INVOKESTATIC.voidaddInvokevirtual(int clazz, String name, String desc) Appends INVOKEVIRTUAL.voidaddInvokevirtual(String classname, String name, String desc) Appends INVOKEVIRTUAL.voidaddInvokevirtual(CtClass clazz, String name, String desc) Appends INVOKEVIRTUAL.voidaddInvokevirtual(CtClass clazz, String name, CtClass returnType, CtClass[] paramTypes) Appends INVOKEVIRTUAL.voidaddIstore(int n) Appends ISTORE or (WIDE) ISTORE_<n>voidaddLconst(long n) Appends LCONST or LCONST_<n>voidaddLdc(int i) Appends LDC or LDC_W.voidAppends LDC or LDC_W.voidaddLdc2w(double d) Appends LDC2_W.voidaddLdc2w(long l) Appends LDC2_W.voidaddLload(int n) Appends LLOAD or (WIDE) LLOAD_<n>intAppends an instruction for loading a value from the local variable at the indexn.intaddLoadParameters(CtClass[] params, int offset) Appends instructions for loading all the parameters onto the operand stack.voidaddLstore(int n) Appends LSTORE or LSTORE_<n>intaddMultiNewarray(String desc, int dim) Appends MULTINEWARRAY.intaddMultiNewarray(CtClass clazz, int dim) Appends MULTINEWARRAY.intaddMultiNewarray(CtClass clazz, int[] dimensions) Appends MULTINEWARRAY.voidAppends NEW.voidAppends NEW.voidaddNewarray(int atype, int length) Appends NEWARRAY for primitive types.voidaddOpcode(int code) Appends an 8bit opcode to the end of the bytecode sequence.voidaddPrintln(String message) Appends instructions for executingjava.lang.System.println(message).voidaddPutfield(String classname, String name, String desc) Appends PUTFIELD.voidaddPutfield(CtClass c, String name, String desc) Appends PUTFIELD.voidaddPutstatic(String classname, String fieldName, String desc) Appends PUTSTATIC.voidaddPutstatic(CtClass c, String name, String desc) Appends PUTSTATIC.voidaddRet(int var) Appends RET.voidAppends ARETURN, IRETURN, .., or RETURN.intAppends an instruction for storing a value into the local variable at the indexn.clone()Creates and returns a copy of this object.final byte[]copy()intReturns the length of bytecode sequence that have been added so far.byte[]get()Returns the produced bytecode sequence.Gets a constant pool table.Returnsexception_table.intGetsmax_locals.intGetsmax_stack.final intgetSize()intReturns the current stack depth.voidgrowStack(int diff) Increases the current stack depth.voidincMaxLocals(int diff) Incrementsmax_locals.intlength()Returns the length of the bytecode sequence.intread(int offset) Reads a signed 8bit value at the offset from the beginning of the bytecode sequence.intread16bit(int offset) Reads a signed 16bit value at the offset from the beginning of the bytecode sequence.intread32bit(int offset) Reads a signed 32bit value at the offset from the beginning of the bytecode sequence.voidsetMaxLocals(boolean isStatic, CtClass[] params, int locals) Setsmax_locals.voidsetMaxLocals(int size) Setsmax_locals.voidsetMaxStack(int size) Setsmax_stack.voidsetStackDepth(int depth) Sets the current stack depth.Converts to aCodeAttribute.voidwrite(int offset, int value) Writes an 8bit value at the offset from the beginning of the bytecode sequence.voidwrite16bit(int offset, int value) Writes an 16bit value at the offset from the beginning of the bytecode sequence.voidwrite32bit(int offset, int value) Writes an 32bit value at the offset from the beginning of the bytecode sequence.
-
Field Details
-
THIS
Represents theCtClassfile using the constant pool table given to thisBytecodeobject.
-
-
Constructor Details
-
Bytecode
Constructs aBytecodeobject with an empty bytecode sequence.The parameters
stacksizeandlocalvarsspecify initial values ofmax_stackandmax_locals. They can be changed later.- Parameters:
cp- constant pool table.stacksize-max_stack.localvars-max_locals.
-
Bytecode
Constructs aBytecodeobject with an empty bytecode sequence. The initial values ofmax_stackandmax_localsare zero.- Parameters:
cp- constant pool table.- See Also:
-
-
Method Details
-
clone
Creates and returns a copy of this object. The constant pool object is shared between this object and the cloned object. -
getConstPool
Gets a constant pool table. -
getExceptionTable
Returnsexception_table. -
toCodeAttribute
Converts to aCodeAttribute. -
length
public int length()Returns the length of the bytecode sequence. -
get
public byte[] get()Returns the produced bytecode sequence. -
getMaxStack
public int getMaxStack()Getsmax_stack. -
setMaxStack
public void setMaxStack(int size) Setsmax_stack.This value may be automatically updated when an instruction is appended. A
Bytecodeobject maintains the current stack depth whenever an instruction is added byaddOpcode(). For example, if DUP is appended, the current stack depth is increased by one. If the new stack depth is more thanmax_stack, then it is assigned tomax_stack. However, if branch instructions are appended, the current stack depth may not be correctly maintained.- See Also:
-
getMaxLocals
public int getMaxLocals()Getsmax_locals. -
setMaxLocals
public void setMaxLocals(int size) Setsmax_locals. -
setMaxLocals
Setsmax_locals.This computes the number of local variables used to pass method parameters and sets
max_localsto that number pluslocals.- Parameters:
isStatic- true ifparamsmust be interpreted as parameters to a static method.params- parameter types.locals- the number of local variables excluding ones used to pass parameters.
-
incMaxLocals
public void incMaxLocals(int diff) Incrementsmax_locals. -
addExceptionHandler
Adds a new entry ofexception_table. -
addExceptionHandler
Adds a new entry ofexception_table.- Parameters:
type- the fully-qualified name of a throwable class.
-
addExceptionHandler
public void addExceptionHandler(int start, int end, int handler, int type) Adds a new entry ofexception_table. -
currentPc
public int currentPc()Returns the length of bytecode sequence that have been added so far. -
read
public int read(int offset) Reads a signed 8bit value at the offset from the beginning of the bytecode sequence.- Throws:
ArrayIndexOutOfBoundsException- if offset is invalid.
-
read16bit
public int read16bit(int offset) Reads a signed 16bit value at the offset from the beginning of the bytecode sequence. -
read32bit
public int read32bit(int offset) Reads a signed 32bit value at the offset from the beginning of the bytecode sequence. -
write
public void write(int offset, int value) Writes an 8bit value at the offset from the beginning of the bytecode sequence.- Throws:
ArrayIndexOutOfBoundsException- if offset is invalid.
-
write16bit
public void write16bit(int offset, int value) Writes an 16bit value at the offset from the beginning of the bytecode sequence. -
write32bit
public void write32bit(int offset, int value) Writes an 32bit value at the offset from the beginning of the bytecode sequence. -
add
public void add(int code) Appends an 8bit value to the end of the bytecode sequence. -
add32bit
public void add32bit(int value) Appends a 32bit value to the end of the bytecode sequence. -
addGap
public void addGap(int length) Appends the length-byte gap to the end of the bytecode sequence.- Parameters:
length- the gap length in byte.
-
addOpcode
public void addOpcode(int code) Appends an 8bit opcode to the end of the bytecode sequence. The current stack depth is updated.max_stackis updated if the current stack depth is the deepest so far.Note: some instructions such as INVOKEVIRTUAL does not update the current stack depth since the increment depends on the method signature.
growStack()must be explicitly called. -
growStack
public void growStack(int diff) Increases the current stack depth. It also updatesmax_stackif the current stack depth is the deepest so far.- Parameters:
diff- the number added to the current stack depth.
-
getStackDepth
public int getStackDepth()Returns the current stack depth. -
setStackDepth
public void setStackDepth(int depth) Sets the current stack depth. It also updatesmax_stackif the current stack depth is the deepest so far.- Parameters:
depth- new value.
-
addIndex
public void addIndex(int index) Appends a 16bit value to the end of the bytecode sequence. It never changes the current stack depth. -
addAload
public void addAload(int n) Appends ALOAD or (WIDE) ALOAD_<n>- Parameters:
n- an index into the local variable array.
-
addAstore
public void addAstore(int n) Appends ASTORE or (WIDE) ASTORE_<n>- Parameters:
n- an index into the local variable array.
-
addIconst
public void addIconst(int n) Appends ICONST or ICONST_<n>- Parameters:
n- the pushed integer constant.
-
addConstZero
Appends an instruction for pushing zero or null on the stack. If the type is void, this method does not append any instruction.- Parameters:
type- the type of the zero value (or null).
-
addIload
public void addIload(int n) Appends ILOAD or (WIDE) ILOAD_<n>- Parameters:
n- an index into the local variable array.
-
addIstore
public void addIstore(int n) Appends ISTORE or (WIDE) ISTORE_<n>- Parameters:
n- an index into the local variable array.
-
addLconst
public void addLconst(long n) Appends LCONST or LCONST_<n>- Parameters:
n- the pushed long integer constant.
-
addLload
public void addLload(int n) Appends LLOAD or (WIDE) LLOAD_<n>- Parameters:
n- an index into the local variable array.
-
addLstore
public void addLstore(int n) Appends LSTORE or LSTORE_<n>- Parameters:
n- an index into the local variable array.
-
addDconst
public void addDconst(double d) Appends DCONST or DCONST_<n>- Parameters:
d- the pushed double constant.
-
addDload
public void addDload(int n) Appends DLOAD or (WIDE) DLOAD_<n>- Parameters:
n- an index into the local variable array.
-
addDstore
public void addDstore(int n) Appends DSTORE or (WIDE) DSTORE_<n>- Parameters:
n- an index into the local variable array.
-
addFconst
public void addFconst(float f) Appends FCONST or FCONST_<n>- Parameters:
f- the pushed float constant.
-
addFload
public void addFload(int n) Appends FLOAD or (WIDE) FLOAD_<n>- Parameters:
n- an index into the local variable array.
-
addFstore
public void addFstore(int n) Appends FSTORE or FSTORE_<n>- Parameters:
n- an index into the local variable array.
-
addLoad
Appends an instruction for loading a value from the local variable at the indexn.- Parameters:
n- the index.type- the type of the loaded value.- Returns:
- the size of the value (1 or 2 word).
-
addStore
Appends an instruction for storing a value into the local variable at the indexn.- Parameters:
n- the index.type- the type of the stored value.- Returns:
- 2 if the type is long or double. Otherwise 1.
-
addLoadParameters
Appends instructions for loading all the parameters onto the operand stack.- Parameters:
offset- the index of the first parameter. It is 0 if the method is static. Otherwise, it is 1.
-
addCheckcast
Appends CHECKCAST.- Parameters:
c- the type.
-
addCheckcast
Appends CHECKCAST.- Parameters:
classname- a fully-qualified class name.
-
addInstanceof
Appends INSTANCEOF.- Parameters:
classname- the class name.
-
addGetfield
Appends GETFIELD.- Parameters:
c- the class.name- the field name.type- the descriptor of the field type.- See Also:
-
addGetfield
Appends GETFIELD.- Parameters:
c- the fully-qualified class name.name- the field name.type- the descriptor of the field type.- See Also:
-
addGetstatic
Appends GETSTATIC.- Parameters:
c- the classname- the field nametype- the descriptor of the field type.- See Also:
-
addGetstatic
Appends GETSTATIC.- Parameters:
c- the fully-qualified class namename- the field nametype- the descriptor of the field type.- See Also:
-
addInvokespecial
Appends INVOKESPECIAL.- Parameters:
clazz- the target class.name- the method name.returnType- the return type.paramTypes- the parameter types.
-
addInvokespecial
Appends INVOKESPECIAL.- Parameters:
clazz- the target class.name- the method namedesc- the descriptor of the method signature.- See Also:
-
addInvokespecial
Appends INVOKESPECIAL. The invoked method must not be a default method declared in an interface.- Parameters:
clazz- the fully-qualified class name.name- the method namedesc- the descriptor of the method signature.- See Also:
-
addInvokespecial
Appends INVOKESPECIAL. The invoked method must not be a default method declared in an interface.- Parameters:
clazz- the index ofCONSTANT_Class_infostructure.name- the method namedesc- the descriptor of the method signature.- See Also:
-
addInvokespecial
Appends INVOKESPECIAL.- Parameters:
isInterface- true if the invoked method is a default method declared in an interface.clazz- the index ofCONSTANT_Class_infostructure.name- the method namedesc- the descriptor of the method signature.- See Also:
-
addInvokespecial
Appends INVOKESPECIAL.- Parameters:
index- the index ofCONSTANT_Methodref_infoorCONSTANT_InterfaceMethodref_infodesc- the descriptor of the method signature.- See Also:
-
addInvokestatic
Appends INVOKESTATIC.- Parameters:
clazz- the target class.name- the method namereturnType- the return type.paramTypes- the parameter types.
-
addInvokestatic
Appends INVOKESTATIC.- Parameters:
clazz- the target class.name- the method namedesc- the descriptor of the method signature.- See Also:
-
addInvokestatic
Appends INVOKESTATIC.- Parameters:
classname- the fully-qualified class name. It must not be an interface-type name.name- the method namedesc- the descriptor of the method signature.- See Also:
-
addInvokestatic
Appends INVOKESTATIC.- Parameters:
clazz- the index ofCONSTANT_Class_infostructure. It must not be an interface type.name- the method namedesc- the descriptor of the method signature.- See Also:
-
addInvokevirtual
Appends INVOKEVIRTUAL.The specified method must not be an inherited method. It must be directly declared in the class specified in
clazz.- Parameters:
clazz- the target class.name- the method namereturnType- the return type.paramTypes- the parameter types.
-
addInvokevirtual
Appends INVOKEVIRTUAL.The specified method must not be an inherited method. It must be directly declared in the class specified in
clazz.- Parameters:
clazz- the target class.name- the method namedesc- the descriptor of the method signature.- See Also:
-
addInvokevirtual
Appends INVOKEVIRTUAL.The specified method must not be an inherited method. It must be directly declared in the class specified in
classname.- Parameters:
classname- the fully-qualified class name.name- the method namedesc- the descriptor of the method signature.- See Also:
-
addInvokevirtual
Appends INVOKEVIRTUAL.The specified method must not be an inherited method. It must be directly declared in the class specified by
clazz.- Parameters:
clazz- the index ofCONSTANT_Class_infostructure.name- the method namedesc- the descriptor of the method signature.- See Also:
-
addInvokeinterface
public void addInvokeinterface(CtClass clazz, String name, CtClass returnType, CtClass[] paramTypes, int count) Appends INVOKEINTERFACE.- Parameters:
clazz- the target class.name- the method namereturnType- the return type.paramTypes- the parameter types.count- the count operand of the instruction.
-
addInvokeinterface
Appends INVOKEINTERFACE.- Parameters:
clazz- the target class.name- the method namedesc- the descriptor of the method signature.count- the count operand of the instruction.- See Also:
-
addInvokeinterface
Appends INVOKEINTERFACE.- Parameters:
classname- the fully-qualified class name.name- the method namedesc- the descriptor of the method signature.count- the count operand of the instruction.- See Also:
-
addInvokeinterface
Appends INVOKEINTERFACE.- Parameters:
clazz- the index ofCONSTANT_Class_infostructure.name- the method namedesc- the descriptor of the method signature.count- the count operand of the instruction.- See Also:
-
addInvokedynamic
Appends INVOKEDYNAMIC.- Parameters:
bootstrap- an index into thebootstrap_methodsarray of the bootstrap method table.name- the method name.desc- the method descriptor.- Since:
- 3.17
- See Also:
-
addLdc
Appends LDC or LDC_W. The pushed item is aStringobject.- Parameters:
s- the character string pushed by LDC or LDC_W.
-
addLdc
public void addLdc(int i) Appends LDC or LDC_W.- Parameters:
i- index into the constant pool.
-
addLdc2w
public void addLdc2w(long l) Appends LDC2_W. The pushed item is a long value. -
addLdc2w
public void addLdc2w(double d) Appends LDC2_W. The pushed item is a double value. -
addNew
Appends NEW.- Parameters:
clazz- the class of the created instance.
-
addNew
Appends NEW.- Parameters:
classname- the fully-qualified class name.
-
addAnewarray
Appends ANEWARRAY.- Parameters:
classname- the qualified class name of the element type.
-
addAnewarray
Appends ICONST and ANEWARRAY.- Parameters:
clazz- the elememnt type.length- the array length.
-
addNewarray
public void addNewarray(int atype, int length) Appends NEWARRAY for primitive types.- Parameters:
atype-T_BOOLEAN,T_CHAR, ...- See Also:
-
addMultiNewarray
Appends MULTINEWARRAY.- Parameters:
clazz- the array type.dimensions- the sizes of all dimensions.- Returns:
- the length of
dimensions.
-
addMultiNewarray
Appends MULTINEWARRAY. The size of every dimension must have been already pushed on the stack.- Parameters:
clazz- the array type.dim- the number of the dimensions.- Returns:
- the value of
dim.
-
addMultiNewarray
Appends MULTINEWARRAY.- Parameters:
desc- the type descriptor of the created array.dim- dimensions.- Returns:
- the value of
dim.
-
addPutfield
Appends PUTFIELD.- Parameters:
c- the target class.name- the field name.desc- the descriptor of the field type.
-
addPutfield
Appends PUTFIELD.- Parameters:
classname- the fully-qualified name of the target class.name- the field name.desc- the descriptor of the field type.
-
addPutstatic
Appends PUTSTATIC.- Parameters:
c- the target class.name- the field name.desc- the descriptor of the field type.
-
addPutstatic
Appends PUTSTATIC.- Parameters:
classname- the fully-qualified name of the target class.fieldName- the field name.desc- the descriptor of the field type.
-
addReturn
Appends ARETURN, IRETURN, .., or RETURN.- Parameters:
type- the return type.
-
addRet
public void addRet(int var) Appends RET.- Parameters:
var- local variable
-
addPrintln
Appends instructions for executingjava.lang.System.println(message).- Parameters:
message- printed message.
-
getSize
public final int getSize() -
copy
public final byte[] copy() -
add
public void add(int b1, int b2) -
add
public void add(int b1, int b2, int b3, int b4)
-