|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--org.objectweb.asm.CodeWriter
A CodeVisitor
that generates Java bytecode instructions.
Each visit method of this class appends the bytecode corresponding to the
visited instruction to a byte vector, in the order these methods are called.
Constructor Summary | |
protected |
CodeWriter(ClassWriter cw,
boolean computeMaxs)
Constructs a CodeWriter. |
Method Summary | |
protected byte[] |
getCode()
Returns the current bytecode of this method. |
protected int |
getCodeSize()
Returns the current size of the bytecode of this method. |
protected void |
init(int access,
String name,
String desc,
String[] exceptions)
Initializes this CodeWriter to define the bytecode of the specified method. |
void |
visitFieldInsn(int opcode,
String owner,
String name,
String desc)
Visits a field instruction. |
void |
visitIincInsn(int var,
int increment)
Visits an IINC instruction. |
void |
visitInsn(int opcode)
Visits a zero operand instruction. |
void |
visitIntInsn(int opcode,
int operand)
Visits an instruction with a single int operand. |
void |
visitJumpInsn(int opcode,
Label label)
Visits a jump instruction. |
void |
visitLabel(Label label)
Visits a label. |
void |
visitLdcInsn(Object cst)
Visits a LDC instruction. |
void |
visitLineNumber(int line,
Label start)
Visits a line number declaration. |
void |
visitLocalVariable(String name,
String desc,
Label start,
Label end,
int index)
Visits a local variable declaration. |
void |
visitLookupSwitchInsn(Label dflt,
int[] keys,
Label[] labels)
Visits a LOOKUPSWITCH instruction. |
void |
visitMaxs(int maxStack,
int maxLocals)
Visits the maximum stack size and the maximum number of local variables of the method. |
void |
visitMethodInsn(int opcode,
String owner,
String name,
String desc)
Visits a method instruction. |
void |
visitMultiANewArrayInsn(String desc,
int dims)
Visits a MULTIANEWARRAY instruction. |
void |
visitTableSwitchInsn(int min,
int max,
Label dflt,
Label[] labels)
Visits a TABLESWITCH instruction. |
void |
visitTryCatchBlock(Label start,
Label end,
Label handler,
String type)
Visits a try catch block. |
void |
visitTypeInsn(int opcode,
String desc)
Visits a type instruction. |
void |
visitVarInsn(int opcode,
int var)
Visits a local variable instruction. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
protected CodeWriter(ClassWriter cw, boolean computeMaxs)
cw
- the class writer in which the method must be added.computeMaxs
- true if the maximum stack size and number of
local variables must be automatically computed.Method Detail |
protected void init(int access, String name, String desc, String[] exceptions)
access
- the method's access flags (see Constants
).name
- the method's name.desc
- the method's descriptor (see Type
).exceptions
- the internal names of the method's exceptions. May be
null.public void visitInsn(int opcode)
CodeVisitor
visitInsn
in interface CodeVisitor
org.objectweb.asm.CodeVisitor
opcode
- the opcode of the instruction to be visited. This opcode is
either NOP, ACONST_NULL, ICONST_M1, ICONST_0, ICONST_1, ICONST_2,
ICONST_3, ICONST_4, ICONST_5, LCONST_0, LCONST_1, FCONST_0, FCONST_1,
FCONST_2, DCONST_0, DCONST_1,
IALOAD, LALOAD, FALOAD, DALOAD, AALOAD, BALOAD, CALOAD, SALOAD,
IASTORE, LASTORE, FASTORE, DASTORE, AASTORE, BASTORE, CASTORE,
SASTORE,
POP, POP2, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, SWAP,
IADD, LADD, FADD, DADD, ISUB, LSUB, FSUB, DSUB, IMUL, LMUL, FMUL,
DMUL, IDIV, LDIV, FDIV, DDIV, IREM, LREM, FREM, DREM, INEG, LNEG,
FNEG, DNEG, ISHL, LSHL, ISHR, LSHR, IUSHR, LUSHR, IAND, LAND, IOR,
LOR, IXOR, LXOR,
I2L, I2F, I2D, L2I, L2F, L2D, F2I, F2L, F2D, D2I, D2L, D2F, I2B, I2C,
I2S,
LCMP, FCMPL, FCMPG, DCMPL, DCMPG,
IRETURN, LRETURN, FRETURN, DRETURN, ARETURN, RETURN,
ARRAYLENGTH,
ATHROW,
MONITORENTER, or MONITOREXIT.public void visitIntInsn(int opcode, int operand)
CodeVisitor
visitIntInsn
in interface CodeVisitor
org.objectweb.asm.CodeVisitor
opcode
- the opcode of the instruction to be visited. This opcode is
either BIPUSH, SIPUSH or NEWARRAY.operand
- the operand of the instruction to be visited.public void visitVarInsn(int opcode, int var)
CodeVisitor
visitVarInsn
in interface CodeVisitor
org.objectweb.asm.CodeVisitor
opcode
- the opcode of the local variable instruction to be visited.
This opcode is either ILOAD, LLOAD, FLOAD, DLOAD, ALOAD, ISTORE,
LSTORE, FSTORE, DSTORE, ASTORE or RET.var
- the operand of the instuction to be visited. This operand is the
index of a local variable.public void visitTypeInsn(int opcode, String desc)
CodeVisitor
visitTypeInsn
in interface CodeVisitor
org.objectweb.asm.CodeVisitor
opcode
- the opcode of the type instruction to be visited. This opcode
is either NEW, ANEWARRAY, CHECKCAST or INSTANCEOF.desc
- the operand of the instuction to be visited. This operand is
a type descriptor (see Type
).public void visitFieldInsn(int opcode, String owner, String name, String desc)
CodeVisitor
visitFieldInsn
in interface CodeVisitor
org.objectweb.asm.CodeVisitor
opcode
- the opcode of the type instruction to be visited. This opcode
is either GETSTATIC, PUTSTATIC, GETFIELD or PUTFIELD.owner
- the internal name of the field's owner class (see getInternalName
).name
- the field's name.desc
- the field's descriptor (see Type
).public void visitMethodInsn(int opcode, String owner, String name, String desc)
CodeVisitor
visitMethodInsn
in interface CodeVisitor
org.objectweb.asm.CodeVisitor
opcode
- the opcode of the type instruction to be visited. This opcode
is either INVOKEVIRTUAL, INVOKESPECIAL, INVOKESTATIC or
INVOKEINTERFACE.owner
- the internal name of the method's owner class (see getInternalName
).name
- the method's name.desc
- the method's descriptor (see Type
).public void visitJumpInsn(int opcode, Label label)
CodeVisitor
visitJumpInsn
in interface CodeVisitor
org.objectweb.asm.CodeVisitor
opcode
- the opcode of the type instruction to be visited. This opcode
is either IFEQ, IFNE, IFLT, IFGE, IFGT, IFLE, IF_ICMPEQ, IF_ICMPNE,
IF_ICMPLT, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ACMPEQ, IF_ACMPNE,
GOTO, JSR, IFNULL or IFNONNULL.label
- the operand of the instuction to be visited. This operand is
a label that designates the instruction to which the jump instruction
may jump.public void visitLabel(Label label)
CodeVisitor
visitLabel
in interface CodeVisitor
org.objectweb.asm.CodeVisitor
label
- a Label
object.public void visitLdcInsn(Object cst)
CodeVisitor
visitLdcInsn
in interface CodeVisitor
org.objectweb.asm.CodeVisitor
cst
- the constant to be loaded on the stack. This parameter must be
a non null Integer
, a Float
, a Long
, a Double
or a String
.public void visitIincInsn(int var, int increment)
CodeVisitor
visitIincInsn
in interface CodeVisitor
org.objectweb.asm.CodeVisitor
var
- index of the local variable to be incremented.increment
- amount to increment the local variable by.public void visitTableSwitchInsn(int min, int max, Label dflt, Label[] labels)
CodeVisitor
visitTableSwitchInsn
in interface CodeVisitor
org.objectweb.asm.CodeVisitor
min
- the minimum key value.max
- the maximum key value.dflt
- beginning of the default handler block.labels
- beginnings of the handler blocks. labels[i] is the
beginning of the handler block for the keys[i] key.public void visitLookupSwitchInsn(Label dflt, int[] keys, Label[] labels)
CodeVisitor
visitLookupSwitchInsn
in interface CodeVisitor
org.objectweb.asm.CodeVisitor
dflt
- beginning of the default handler block.keys
- the values of the keys.labels
- beginnings of the handler blocks. labels[i] is the
beginning of the handler block for the keys[i] key.public void visitMultiANewArrayInsn(String desc, int dims)
CodeVisitor
visitMultiANewArrayInsn
in interface CodeVisitor
org.objectweb.asm.CodeVisitor
desc
- an array type descriptor (see Type
).dims
- number of dimensions of the array to allocate.public void visitTryCatchBlock(Label start, Label end, Label handler, String type)
CodeVisitor
visitTryCatchBlock
in interface CodeVisitor
org.objectweb.asm.CodeVisitor
start
- beginning of the exception handler's scope (inclusive).end
- end of the exception handler's scope (exclusive).handler
- beginning of the exception handler's code.type
- name of the type of exceptions handled by the handler,
or null to catch any exceptions (for "finally" blocks).IllegalArgumentException
- if one of the labels has not already been
visited by this visitor (by the visitLabel
method).public void visitMaxs(int maxStack, int maxLocals)
CodeVisitor
visitMaxs
in interface CodeVisitor
org.objectweb.asm.CodeVisitor
maxStack
- maximum stack size of the method.maxLocals
- maximum number of local variables for the method.public void visitLocalVariable(String name, String desc, Label start, Label end, int index)
CodeVisitor
visitLocalVariable
in interface CodeVisitor
org.objectweb.asm.CodeVisitor
name
- the name of a local variable.desc
- the type descriptor of this local variable.start
- the first instruction corresponding to the scope of this
local variable (inclusive).end
- the last instruction corresponding to the scope of this
local variable (exclusive).index
- the local variable's index.IllegalArgumentException
- if one of the labels has not already been
visited by this visitor (by the visitLabel
method).public void visitLineNumber(int line, Label start)
CodeVisitor
visitLineNumber
in interface CodeVisitor
org.objectweb.asm.CodeVisitor
line
- a line number. This number refers to the source file
from which the class was compiled.start
- the first instruction corresponding to this line number.IllegalArgumentException
- if start has not already been
visited by this visitor (by the visitLabel
method).protected int getCodeSize()
protected byte[] getCode()
getCodeSize
(exclusive).
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |