public class JSRInlinerAdapter extends MethodNode implements Opcodes
MethodVisitor that removes JSR instructions and inlines the
referenced subroutines.
Explanation of how it works TODOaccess, annotationDefault, attrs, desc, exceptions, instructions, invisibleAnnotations, invisibleParameterAnnotations, localVariables, maxLocals, maxStack, name, signature, tryCatchBlocks, visibleAnnotations, visibleParameterAnnotationsapi, mvAALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_DEPRECATED, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_VARARGS, ACC_VOLATILE, ACONST_NULL, ALOAD, ANEWARRAY, ARETURN, ARRAYLENGTH, ASM4, ASTORE, ATHROW, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DMUL, DNEG, DOUBLE, DREM, DRETURN, DSTORE, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F_APPEND, F_CHOP, F_FULL, F_NEW, F_SAME, F_SAME1, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAT, FMUL, FNEG, FREM, FRETURN, FSTORE, FSUB, GETFIELD, GETSTATIC, GOTO, H_GETFIELD, H_GETSTATIC, H_INVOKEINTERFACE, H_INVOKESPECIAL, H_INVOKESTATIC, H_INVOKEVIRTUAL, H_NEWINVOKESPECIAL, H_PUTFIELD, H_PUTSTATIC, 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, IMUL, INEG, INSTANCEOF, INTEGER, INVOKEDYNAMIC, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISUB, IUSHR, IXOR, JSR, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDIV, LLOAD, LMUL, LNEG, LONG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, NULL, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, TOP, UNINITIALIZED_THIS, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6, V1_7, V1_8| 限定符 | 构造器和说明 |
|---|---|
protected |
JSRInlinerAdapter(int api,
MethodVisitor mv,
int access,
java.lang.String name,
java.lang.String desc,
java.lang.String signature,
java.lang.String[] exceptions)
Creates a new JSRInliner.
|
|
JSRInlinerAdapter(MethodVisitor mv,
int access,
java.lang.String name,
java.lang.String desc,
java.lang.String signature,
java.lang.String[] exceptions)
Creates a new JSRInliner.
|
| 限定符和类型 | 方法和说明 |
|---|---|
void |
visitEnd()
If any JSRs were seen, triggers the inlining process.
|
void |
visitJumpInsn(int opcode,
Label lbl)
Detects a JSR instruction and sets a flag to indicate we will need to do inlining.
|
accept, accept, check, getLabelNode, visitAnnotation, visitAnnotationDefault, visitAttribute, visitCode, visitFieldInsn, visitFrame, visitIincInsn, visitInsn, visitIntInsn, visitInvokeDynamicInsn, visitLabel, visitLdcInsn, visitLineNumber, visitLocalVariable, visitLookupSwitchInsn, visitMaxs, visitMethodInsn, visitMultiANewArrayInsn, visitParameterAnnotation, visitTableSwitchInsn, visitTryCatchBlock, visitTypeInsn, visitVarInsnpublic JSRInlinerAdapter(MethodVisitor mv, int access, java.lang.String name, java.lang.String desc, java.lang.String signature, java.lang.String[] exceptions)
JSRInlinerAdapter(int, MethodVisitor, int, String, String, String, String[])
version.mv - the MethodVisitor to send the resulting inlined method code to (use
null for none).access - the method's access flags (see Opcodes). This parameter also indicates
if the method is synthetic and/or deprecated.name - the method's name.desc - the method's descriptor (see Type).signature - the method's signature. May be null.exceptions - the internal names of the method's exception classes (see
getInternalName). May be null.protected JSRInlinerAdapter(int api,
MethodVisitor mv,
int access,
java.lang.String name,
java.lang.String desc,
java.lang.String signature,
java.lang.String[] exceptions)
api - the ASM API version implemented by this visitor. Must be one of
Opcodes.ASM4.mv - the MethodVisitor to send the resulting inlined method code to (use
null for none).access - the method's access flags (see Opcodes). This parameter also indicates
if the method is synthetic and/or deprecated.name - the method's name.desc - the method's descriptor (see Type).signature - the method's signature. May be null.exceptions - the internal names of the method's exception classes (see
getInternalName). May be null.public void visitJumpInsn(int opcode,
Label lbl)
visitJumpInsn 在类中 MethodNodeopcode - 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.lbl - the operand of the instruction to be visited. This operand is a label that
designates the instruction to which the jump instruction may jump.public void visitEnd()
visitEnd 在类中 MethodNode