public class CodeAttribute extends AttributeInfo implements Opcode
Code_attribute
.
To browse the code
field of
a Code_attribute
structure,
use CodeIterator
.
CodeIterator
,
iterator()
Modifier and Type | Class and Description |
---|---|
static class |
CodeAttribute.RuntimeCopyException
An exception that may be thrown by
copy()
in CodeAttribute . |
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
tag
The name of this attribute
"Code" . |
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 and Description |
---|
CodeAttribute(ConstPool cp,
int stack,
int locals,
byte[] code,
ExceptionTable etable)
Constructs a
Code_attribute . |
Modifier and Type | Method and Description |
---|---|
int |
computeMaxStack()
Computes the maximum stack size and sets
max_stack
to the computed size. |
AttributeInfo |
copy(ConstPool newCp,
java.util.Map classnames)
Makes a copy.
|
byte[] |
get()
This method is not available.
|
AttributeInfo |
getAttribute(java.lang.String name)
Returns the attribute with the specified name.
|
java.util.List |
getAttributes()
Returns
attributes[] . |
byte[] |
getCode()
Returns
code[] . |
int |
getCodeLength()
Returns
code_length . |
java.lang.String |
getDeclaringClass()
Returns the name of the class declaring the method including
this code attribute.
|
ExceptionTable |
getExceptionTable()
Returns
exception_table[] . |
int |
getMaxLocals()
Returns
max_locals . |
int |
getMaxStack()
Returns
max_stack . |
void |
insertLocalVar(int where,
int size)
Changes the index numbers of the local variables
to append a new parameter.
|
CodeIterator |
iterator()
Makes a new iterator for reading this code attribute.
|
int |
length()
Returns the length of this
attribute_info
structure. |
void |
set(byte[] newinfo)
This method is not available.
|
void |
setAttribute(StackMap sm)
Adds a stack map table for J2ME (CLDC).
|
void |
setAttribute(StackMapTable smt)
Adds a stack map table.
|
void |
setMaxLocals(int value)
Sets
max_locals . |
void |
setMaxStack(int value)
Sets
max_stack . |
getConstPool, getName
public static final java.lang.String tag
"Code"
.public CodeAttribute(ConstPool cp, int stack, int locals, byte[] code, ExceptionTable etable)
Code_attribute
.cp
- constant pool tablestack
- max_stack
locals
- max_locals
code
- code[]
etable
- exception_table[]
public AttributeInfo copy(ConstPool newCp, java.util.Map classnames) throws CodeAttribute.RuntimeCopyException
Map
object.copy
in class AttributeInfo
newCp
- the constant pool table used by the new copy.classnames
- pairs of replaced and substituted
class names.CodeAttribute
object.CodeAttribute.RuntimeCopyException
- if a BadBytecode
exception is thrown, it is
converted into
RuntimeCopyException
.public int length()
attribute_info
structure.
The returned value is attribute_length + 6
.length
in class AttributeInfo
public byte[] get()
get
in class AttributeInfo
java.lang.UnsupportedOperationException
- always thrown.public void set(byte[] newinfo)
set
in class AttributeInfo
java.lang.UnsupportedOperationException
- always thrown.public java.lang.String getDeclaringClass()
public int getMaxStack()
max_stack
.public void setMaxStack(int value)
max_stack
.public int computeMaxStack() throws BadBytecode
max_stack
to the computed size.max_stack
BadBytecode
- if this method fails in computing.public int getMaxLocals()
max_locals
.public void setMaxLocals(int value)
max_locals
.public int getCodeLength()
code_length
.public byte[] getCode()
code[]
.public CodeIterator iterator()
public ExceptionTable getExceptionTable()
exception_table[]
.public java.util.List getAttributes()
attributes[]
.
It returns a list of AttributeInfo
.
A new element can be added to the returned list
and an existing element can be removed from the list.AttributeInfo
public AttributeInfo getAttribute(java.lang.String name)
name
- attribute nameAttributeInfo
object or null.public void setAttribute(StackMapTable smt)
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.public void setAttribute(StackMap sm)
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.public void insertLocalVar(int where, int size) throws BadBytecode
LocalVariableAttribute
,
LocalVariableTypeAttribute
,
StackMapTable
, or StackMap
.
These attributes must be explicitly updated.where
- the index of the new parameter.size
- the type size of the new parameter (1 or 2).BadBytecode
LocalVariableAttribute.shiftIndex(int, int)
,
LocalVariableAttribute.shiftIndex(int, int)
,
StackMapTable.insertLocal(int, int, int)
,
StackMap.insertLocal(int, int, int)
Javassist, a Java-bytecode translator toolkit.
Copyright (C) 1999- Shigeru Chiba. All Rights Reserved.