Package com.alibaba.fastjson.asm
Class MethodWriter
- java.lang.Object
-
- com.alibaba.fastjson.asm.MethodWriter
-
- All Implemented Interfaces:
MethodVisitor
public class MethodWriter extends Object implements MethodVisitor
- Author:
- Eric Bruneton, Eugene Kuleshov
-
-
Constructor Summary
Constructors Constructor Description MethodWriter(ClassWriter cw, int access, String name, String desc, String signature, String[] exceptions)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidvisitEnd()Visits the end of the method.voidvisitFieldInsn(int opcode, String owner, String name, String desc)Visits a field instruction.voidvisitIincInsn(int var, int increment)Visits an IINC instruction.voidvisitInsn(int opcode)Visits a zero operand instruction.voidvisitIntInsn(int opcode, int operand)voidvisitJumpInsn(int opcode, Label label)Visits a jump instruction.voidvisitLabel(Label label)Visits a label.voidvisitLdcInsn(Object cst)Visits a LDC instruction.voidvisitMaxs(int maxStack, int maxLocals)Visits the maximum stack size and the maximum number of local variables of the method.voidvisitMethodInsn(int opcode, String owner, String name, String desc)voidvisitTypeInsn(int opcode, String type)Visits a type instruction.voidvisitVarInsn(int opcode, int var)Visits a local variable instruction.
-
-
-
Constructor Detail
-
MethodWriter
public MethodWriter(ClassWriter cw, int access, String name, String desc, String signature, String[] exceptions)
-
-
Method Detail
-
visitInsn
public void visitInsn(int opcode)
Description copied from interface:MethodVisitorVisits a zero operand instruction.- Specified by:
visitInsnin interfaceMethodVisitor- Parameters:
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.
-
visitIntInsn
public void visitIntInsn(int opcode, int operand)- Specified by:
visitIntInsnin interfaceMethodVisitor
-
visitVarInsn
public void visitVarInsn(int opcode, int var)Description copied from interface:MethodVisitorVisits a local variable instruction. A local variable instruction is an instruction that loads or stores the value of a local variable.- Specified by:
visitVarInsnin interfaceMethodVisitor- Parameters:
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 instruction to be visited. This operand is the index of a local variable.
-
visitTypeInsn
public void visitTypeInsn(int opcode, String type)Description copied from interface:MethodVisitorVisits a type instruction. A type instruction is an instruction that takes the internal name of a class as parameter.- Specified by:
visitTypeInsnin interfaceMethodVisitor- Parameters:
opcode- the opcode of the type instruction to be visited. This opcode is either NEW, ANEWARRAY, CHECKCAST or INSTANCEOF.type- the operand of the instruction to be visited. This operand must be the internal name of an object or array class (seegetInternalName).
-
visitFieldInsn
public void visitFieldInsn(int opcode, String owner, String name, String desc)Description copied from interface:MethodVisitorVisits a field instruction. A field instruction is an instruction that loads or stores the value of a field of an object.- Specified by:
visitFieldInsnin interfaceMethodVisitor- Parameters:
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 (seegetInternalName).name- the field's name.desc- the field's descriptor (seeType).
-
visitMethodInsn
public void visitMethodInsn(int opcode, String owner, String name, String desc)- Specified by:
visitMethodInsnin interfaceMethodVisitor
-
visitJumpInsn
public void visitJumpInsn(int opcode, Label label)Description copied from interface:MethodVisitorVisits a jump instruction. A jump instruction is an instruction that may jump to another instruction.- Specified by:
visitJumpInsnin interfaceMethodVisitor- Parameters:
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 instruction to be visited. This operand is a label that designates the instruction to which the jump instruction may jump.
-
visitLabel
public void visitLabel(Label label)
Description copied from interface:MethodVisitorVisits a label. A label designates the instruction that will be visited just after it.- Specified by:
visitLabelin interfaceMethodVisitor- Parameters:
label- aLabelobject.
-
visitLdcInsn
public void visitLdcInsn(Object cst)
Description copied from interface:MethodVisitorVisits a LDC instruction.- Specified by:
visitLdcInsnin interfaceMethodVisitor- Parameters:
cst- the constant to be loaded on the stack. This parameter must be a non nullInteger, aFloat, aLong, aDoubleaString(or aTypefor .class constants, for classes whose version is 49.0 or more).
-
visitIincInsn
public void visitIincInsn(int var, int increment)Description copied from interface:MethodVisitorVisits an IINC instruction.- Specified by:
visitIincInsnin interfaceMethodVisitor- Parameters:
var- index of the local variable to be incremented.increment- amount to increment the local variable by.
-
visitMaxs
public void visitMaxs(int maxStack, int maxLocals)Description copied from interface:MethodVisitorVisits the maximum stack size and the maximum number of local variables of the method.- Specified by:
visitMaxsin interfaceMethodVisitor- Parameters:
maxStack- maximum stack size of the method.maxLocals- maximum number of local variables for the method.
-
visitEnd
public void visitEnd()
Description copied from interface:MethodVisitorVisits the end of the method. This method, which is the last one to be called, is used to inform the visitor that all the annotations and attributes of the method have been visited.- Specified by:
visitEndin interfaceMethodVisitor
-
-