Package javassist.bytecode
Class CodeAttribute
java.lang.Object
javassist.bytecode.AttributeInfo
javassist.bytecode.CodeAttribute
- All Implemented Interfaces:
Opcode
Code_attribute
.
To browse the code
field of
a Code_attribute
structure,
use CodeIterator
.
- See Also:
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
An exception that may be thrown bycopy()
inCodeAttribute
. -
Field Summary
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
ConstructorDescriptionCodeAttribute
(ConstPool cp, int stack, int locals, byte[] code, ExceptionTable etable) Constructs aCode_attribute
. -
Method Summary
Modifier and TypeMethodDescriptionint
Computes the maximum stack size and setsmax_stack
to the computed size.Makes a copy.byte[]
get()
This method is not available.getAttribute
(String name) Returns the attribute with the specified name.Returnsattributes[]
.byte[]
getCode()
Returnscode[]
.int
Returnscode_length
.Returns the name of the class declaring the method including this code attribute.Returnsexception_table[]
.int
Returnsmax_locals
.int
Returnsmax_stack
.void
insertLocalVar
(int where, int size) Changes the index numbers of the local variables to append a new parameter.iterator()
Makes a new iterator for reading this code attribute.int
length()
Returns the length of thisattribute_info
structure.void
set
(byte[] newinfo) This method is not available.void
setAttribute
(StackMap sm) Adds a stack map table for J2ME (CLDC).void
Adds a stack map table.void
setMaxLocals
(int value) Setsmax_locals
.void
setMaxStack
(int value) Setsmax_stack
.Methods inherited from class javassist.bytecode.AttributeInfo
getConstPool, getName
-
Field Details
-
tag
The name of this attribute"Code"
.- See Also:
-
-
Constructor Details
-
CodeAttribute
Constructs aCode_attribute
.- Parameters:
cp
- constant pool tablestack
-max_stack
locals
-max_locals
code
-code[]
etable
-exception_table[]
-
-
Method Details
-
copy
public AttributeInfo copy(ConstPool newCp, Map<String, String> classnames) throws CodeAttribute.RuntimeCopyExceptionMakes a copy. Class names are replaced according to the givenMap
object.- Overrides:
copy
in classAttributeInfo
- Parameters:
newCp
- the constant pool table used by the new copy.classnames
- pairs of replaced and substituted class names.- Returns:
CodeAttribute
object.- Throws:
CodeAttribute.RuntimeCopyException
- if aBadBytecode
exception is thrown, it is converted intoRuntimeCopyException
.
-
length
public int length()Returns the length of thisattribute_info
structure. The returned value isattribute_length + 6
.- Overrides:
length
in classAttributeInfo
-
get
public byte[] get()This method is not available.- Overrides:
get
in classAttributeInfo
- Throws:
UnsupportedOperationException
- always thrown.
-
set
public void set(byte[] newinfo) This method is not available.- Overrides:
set
in classAttributeInfo
- Throws:
UnsupportedOperationException
- always thrown.
-
getDeclaringClass
Returns the name of the class declaring the method including this code attribute. -
getMaxStack
public int getMaxStack()Returnsmax_stack
. -
setMaxStack
public void setMaxStack(int value) Setsmax_stack
. -
computeMaxStack
Computes the maximum stack size and setsmax_stack
to the computed size.- Returns:
- the newly computed value of
max_stack
- Throws:
BadBytecode
- if this method fails in computing.
-
getMaxLocals
public int getMaxLocals()Returnsmax_locals
. -
setMaxLocals
public void setMaxLocals(int value) Setsmax_locals
. -
getCodeLength
public int getCodeLength()Returnscode_length
. -
getCode
public byte[] getCode()Returnscode[]
. -
iterator
Makes a new iterator for reading this code attribute. -
getExceptionTable
Returnsexception_table[]
. -
getAttributes
Returnsattributes[]
. It returns a list ofAttributeInfo
. A new element can be added to the returned list and an existing element can be removed from the list.- See Also:
-
getAttribute
Returns the attribute with the specified name. If it is not found, this method returns null.- Parameters:
name
- attribute name- Returns:
- an
AttributeInfo
object or null.
-
setAttribute
Adds a stack map table. If another copy of stack map table is already contained, the old one is removed.- Parameters:
smt
- the stack map table added to this code attribute. If it is null, a new stack map is not added. Only the old stack map is removed.
-
setAttribute
Adds a stack map table for J2ME (CLDC). If another copy of stack map table is already contained, the old one is removed.- Parameters:
sm
- the stack map table added to this code attribute. If it is null, a new stack map is not added. Only the old stack map is removed.- Since:
- 3.12
-
insertLocalVar
Changes the index numbers of the local variables to append a new parameter. This method does not updateLocalVariableAttribute
,LocalVariableTypeAttribute
,StackMapTable
, orStackMap
. These attributes must be explicitly updated.- Parameters:
where
- the index of the new parameter.size
- the type size of the new parameter (1 or 2).- Throws:
BadBytecode
- See Also:
-