| java.lang.Object org.objectweb.asm.MethodWriter
MethodWriter | class MethodWriter implements MethodVisitor(Code) | | A
MethodVisitor that generates methods in bytecode form. 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.
author: Eric Bruneton author: Eugene Kuleshov |
Field Summary | |
final static int | ACC_CONSTRUCTOR Pseudo access flag used to denote constructors. | final static int | APPEND_FRAME Frame where current locals are the same as the locals in the previous
frame, except that k additional locals are defined. | final static int | CHOP_FRAME Frame where current locals are the same as the locals in the previous
frame, except that the k last locals are absent. | final static int | FULL_FRAME | final static int | RESERVED | final static int | SAME_FRAME Frame has exactly the same locals as the previous stack map frame and
number of stack items is zero. | final static int | SAME_FRAME_EXTENDED Frame has exactly the same locals as the previous stack map frame and
number of stack items is zero. | final static int | SAME_LOCALS_1_STACK_ITEM_FRAME | final static int | SAME_LOCALS_1_STACK_ITEM_FRAME_EXTENDED Frame has exactly the same locals as the previous stack map frame and
number of stack items is 1. | int | classReaderLength If not zero, indicates that the code of this method must be copied from
the ClassReader associated to this writer in cw.cr . | int | classReaderOffset If not zero, indicates that the code of this method must be copied from
the ClassReader associated to this writer in cw.cr . | ClassWriter | cw The class writer to which this method must be added. | int | exceptionCount Number of exceptions that can be thrown by this method. | int[] | exceptions The exceptions that can be thrown by this method. | MethodWriter | next Next method writer (see
ClassWriter.firstMethod firstMethod ). | String | signature The signature of this method. |
Constructor Summary | |
| MethodWriter(ClassWriter cw, int access, String name, String desc, String signature, String[] exceptions, boolean computeMaxs, boolean computeFrames) Constructs a new
MethodWriter .
Parameters: cw - the class writer in which the method must be added. Parameters: access - the method's access flags (see Opcodes). Parameters: name - the method's name. Parameters: desc - the method's descriptor (see Type). Parameters: signature - the method's signature. |
Method Summary | |
static int | getArgumentsAndReturnSizes(String desc) Computes the size of the arguments and of the return value of a method.
Parameters: desc - the descriptor of a method. | static int | getNewOffset(int[] indexes, int[] sizes, int begin, int end) Computes the future value of a bytecode offset. | static void | getNewOffset(int[] indexes, int[] sizes, Label label) Updates the offset of the given label.
Parameters: indexes - current positions of the instructions to be resized. | final int | getSize() Returns the size of the bytecode of this method. | final void | put(ByteVector out) Puts the bytecode of this method in the given byte vector. | static int | readInt(byte[] b, int index) Reads a signed int value in the given byte array.
Parameters: b - a byte array. Parameters: index - the start index of the value to be read. | static short | readShort(byte[] b, int index) Reads a signed short value in the given byte array.
Parameters: b - a byte array. Parameters: index - the start index of the value to be read. | static int | readUnsignedShort(byte[] b, int index) Reads an unsigned short value in the given byte array.
Parameters: b - a byte array. Parameters: index - the start index of the value to be read. | public AnnotationVisitor | visitAnnotation(String desc, boolean visible) | public AnnotationVisitor | visitAnnotationDefault() | public void | visitAttribute(Attribute attr) | public void | visitCode() | public void | visitEnd() | public void | visitFieldInsn(int opcode, String owner, String name, String desc) | public void | visitFrame(int type, int nLocal, Object[] local, int nStack, Object[] stack) | public void | visitIincInsn(int var, int increment) | public void | visitInsn(int opcode) | public void | visitIntInsn(int opcode, int operand) | public void | visitJumpInsn(int opcode, Label label) | public void | visitLabel(Label label) | public void | visitLdcInsn(Object cst) | public void | visitLineNumber(int line, Label start) | public void | visitLocalVariable(String name, String desc, String signature, Label start, Label end, int index) | public void | visitLookupSwitchInsn(Label dflt, int keys, Label labels) | public void | visitMaxs(int maxStack, int maxLocals) | public void | visitMethodInsn(int opcode, String owner, String name, String desc) | public void | visitMultiANewArrayInsn(String desc, int dims) | public AnnotationVisitor | visitParameterAnnotation(int parameter, String desc, boolean visible) | public void | visitTableSwitchInsn(int min, int max, Label dflt, Label labels) | public void | visitTryCatchBlock(Label start, Label end, Label handler, String type) | public void | visitTypeInsn(int opcode, String desc) | public void | visitVarInsn(int opcode, int var) | static void | writeShort(byte[] b, int index, int s) Writes a short value in the given byte array. |
ACC_CONSTRUCTOR | final static int ACC_CONSTRUCTOR(Code) | | Pseudo access flag used to denote constructors.
|
APPEND_FRAME | final static int APPEND_FRAME(Code) | | Frame where current locals are the same as the locals in the previous
frame, except that k additional locals are defined. The value of k is
given by the formula frame_type-251.
|
CHOP_FRAME | final static int CHOP_FRAME(Code) | | Frame where current locals are the same as the locals in the previous
frame, except that the k last locals are absent. The value of k is given
by the formula 251-frame_type.
|
FULL_FRAME | final static int FULL_FRAME(Code) | | Full frame
|
RESERVED | final static int RESERVED(Code) | | Reserved for future use
|
SAME_FRAME | final static int SAME_FRAME(Code) | | Frame has exactly the same locals as the previous stack map frame and
number of stack items is zero.
|
SAME_FRAME_EXTENDED | final static int SAME_FRAME_EXTENDED(Code) | | Frame has exactly the same locals as the previous stack map frame and
number of stack items is zero. Offset is bigger then 63;
|
SAME_LOCALS_1_STACK_ITEM_FRAME | final static int SAME_LOCALS_1_STACK_ITEM_FRAME(Code) | | Frame has exactly the same locals as the previous stack map frame and
number of stack items is 1
|
SAME_LOCALS_1_STACK_ITEM_FRAME_EXTENDED | final static int SAME_LOCALS_1_STACK_ITEM_FRAME_EXTENDED(Code) | | Frame has exactly the same locals as the previous stack map frame and
number of stack items is 1. Offset is bigger then 63;
|
classReaderLength | int classReaderLength(Code) | | If not zero, indicates that the code of this method must be copied from
the ClassReader associated to this writer in cw.cr . More
precisely, this field gives the number of bytes to copied from
cw.cr.b .
|
classReaderOffset | int classReaderOffset(Code) | | If not zero, indicates that the code of this method must be copied from
the ClassReader associated to this writer in cw.cr . More
precisely, this field gives the index of the first byte to copied from
cw.cr.b .
|
exceptionCount | int exceptionCount(Code) | | Number of exceptions that can be thrown by this method.
|
exceptions | int[] exceptions(Code) | | The exceptions that can be thrown by this method. More precisely, this
array contains the indexes of the constant pool items that contain the
internal names of these exception classes.
|
signature | String signature(Code) | | The signature of this method.
|
MethodWriter | MethodWriter(ClassWriter cw, int access, String name, String desc, String signature, String[] exceptions, boolean computeMaxs, boolean computeFrames)(Code) | | Constructs a new
MethodWriter .
Parameters: cw - the class writer in which the method must be added. Parameters: access - the method's access flags (see Opcodes). Parameters: name - the method's name. Parameters: desc - the method's descriptor (see Type). Parameters: signature - the method's signature. May be null. Parameters: exceptions - the internal names of the method's exceptions. May benull. Parameters: computeMaxs - true if the maximum stack size and numberof local variables must be automatically computed. Parameters: computeFrames - true if the stack map tables must berecomputed from scratch. |
getArgumentsAndReturnSizes | static int getArgumentsAndReturnSizes(String desc)(Code) | | Computes the size of the arguments and of the return value of a method.
Parameters: desc - the descriptor of a method. the size of the arguments of the method (plus one for theimplicit this argument), argSize, and the size of its returnvalue, retSize, packed into a single int i =(argSize << 2) | retSize (argSize is therefore equalto i >> 2, and retSize to i & 0x03). |
getNewOffset | static int getNewOffset(int[] indexes, int[] sizes, int begin, int end)(Code) | | Computes the future value of a bytecode offset. Note: it is possible
to have several entries for the same instruction in the indexes
and sizes: two entries (index=a,size=b) and (index=a,size=b')
are equivalent to a single entry (index=a,size=b+b').
Parameters: indexes - current positions of the instructions to be resized. Eachinstruction must be designated by the index of its lastbyte, plus one (or, in other words, by the index of the firstbyte of the next instruction). Parameters: sizes - the number of bytes to be added to the aboveinstructions. More precisely, for each i < len,sizes[i] bytes will be added at the end of theinstruction designated by indexes[i] or, ifsizes[i] is negative, the last |sizes[i]|bytes of the instruction will be removed (the instruction sizemust not become negative or null). Parameters: begin - index of the first byte of the source instruction. Parameters: end - index of the first byte of the target instruction. the future value of the given bytecode offset. |
getNewOffset | static void getNewOffset(int[] indexes, int[] sizes, Label label)(Code) | | Updates the offset of the given label.
Parameters: indexes - current positions of the instructions to be resized. Eachinstruction must be designated by the index of its lastbyte, plus one (or, in other words, by the index of the firstbyte of the next instruction). Parameters: sizes - the number of bytes to be added to the aboveinstructions. More precisely, for each i < len,sizes[i] bytes will be added at the end of theinstruction designated by indexes[i] or, ifsizes[i] is negative, the last |sizes[i]|bytes of the instruction will be removed (the instruction sizemust not become negative or null). Parameters: label - the label whose offset must be updated. |
getSize | final int getSize()(Code) | | Returns the size of the bytecode of this method.
the size of the bytecode of this method. |
put | final void put(ByteVector out)(Code) | | Puts the bytecode of this method in the given byte vector.
Parameters: out - the byte vector into which the bytecode of this method must becopied. |
readInt | static int readInt(byte[] b, int index)(Code) | | Reads a signed int value in the given byte array.
Parameters: b - a byte array. Parameters: index - the start index of the value to be read. the read value. |
readShort | static short readShort(byte[] b, int index)(Code) | | Reads a signed short value in the given byte array.
Parameters: b - a byte array. Parameters: index - the start index of the value to be read. the read value. |
readUnsignedShort | static int readUnsignedShort(byte[] b, int index)(Code) | | Reads an unsigned short value in the given byte array.
Parameters: b - a byte array. Parameters: index - the start index of the value to be read. the read value. |
visitCode | public void visitCode()(Code) | | |
visitEnd | public void visitEnd()(Code) | | |
visitFrame | public void visitFrame(int type, int nLocal, Object[] local, int nStack, Object[] stack)(Code) | | |
visitIincInsn | public void visitIincInsn(int var, int increment)(Code) | | |
visitInsn | public void visitInsn(int opcode)(Code) | | |
visitIntInsn | public void visitIntInsn(int opcode, int operand)(Code) | | |
visitJumpInsn | public void visitJumpInsn(int opcode, Label label)(Code) | | |
visitLineNumber | public void visitLineNumber(int line, Label start)(Code) | | |
visitLookupSwitchInsn | public void visitLookupSwitchInsn(Label dflt, int keys, Label labels)(Code) | | |
visitMaxs | public void visitMaxs(int maxStack, int maxLocals)(Code) | | |
visitMultiANewArrayInsn | public void visitMultiANewArrayInsn(String desc, int dims)(Code) | | |
visitTableSwitchInsn | public void visitTableSwitchInsn(int min, int max, Label dflt, Label labels)(Code) | | |
visitTypeInsn | public void visitTypeInsn(int opcode, String desc)(Code) | | |
visitVarInsn | public void visitVarInsn(int opcode, int var)(Code) | | |
writeShort | static void writeShort(byte[] b, int index, int s)(Code) | | Writes a short value in the given byte array.
Parameters: b - a byte array. Parameters: index - where the first byte of the short value must be written. Parameters: s - the value to be written in the given byte array. |
|
|