| java.lang.Object net.sf.retrotranslator.runtime.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 | |
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) 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 | 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, boolean dropTigerFlags) 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 | 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. |
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)(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. |
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, boolean dropTigerFlags)(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 be Parameters: dropTigerFlags - |
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) | | |
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. |
|
|