Class JFRLegacyMethodAdvisor

  • All Implemented Interfaces:
    org.objectweb.asm.Opcodes

    public class JFRLegacyMethodAdvisor
    extends org.objectweb.asm.commons.AdviceAdapter
    Code emitter for JFR distributed with pre-JDK 9 releases. Probably works with JRockit too. ;)
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private org.objectweb.asm.Type[] argumentTypesRef  
      private int eventLocal  
      private org.objectweb.asm.Type eventType  
      private java.lang.Class<?> inspectionClass  
      private org.objectweb.asm.Type returnTypeRef  
      private boolean shouldInstrumentThrow  
      private static java.lang.String THROWABLE_BINARY_NAME  
      private JFRTransformDescriptor transformDescriptor  
      private org.objectweb.asm.Label tryBegin  
      private org.objectweb.asm.Label tryEnd  
      • Fields inherited from class org.objectweb.asm.commons.AdviceAdapter

        methodAccess, methodDesc
      • Fields inherited from class org.objectweb.asm.commons.GeneratorAdapter

        ADD, AND, DIV, EQ, GE, GT, LE, LT, MUL, NE, NEG, OR, REM, SHL, SHR, SUB, USHR, XOR
      • Fields inherited from class org.objectweb.asm.commons.LocalVariablesSorter

        firstLocal, nextLocal
      • Fields inherited from class org.objectweb.asm.MethodVisitor

        api, mv
      • Fields inherited from interface org.objectweb.asm.Opcodes

        AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_DEPRECATED, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_MANDATED, ACC_MODULE, ACC_NATIVE, ACC_OPEN, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_RECORD, ACC_STATIC, ACC_STATIC_PHASE, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_TRANSITIVE, ACC_VARARGS, ACC_VOLATILE, ACONST_NULL, ALOAD, ANEWARRAY, ARETURN, ARRAYLENGTH, ASM10_EXPERIMENTAL, ASM4, ASM5, ASM6, ASM7, ASM8, ASM9, 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, SOURCE_DEPRECATED, SOURCE_MASK, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, TOP, V_PREVIEW, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6, V1_7, V1_8, V10, V11, V12, V13, V14, V15, V16, V17, V18, V9
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected JFRLegacyMethodAdvisor​(JFRTransformDescriptor transformDescriptor, java.lang.Class<?> inspectionClass, int api, org.objectweb.asm.MethodVisitor mv, int access, java.lang.String name, java.lang.String desc)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      private void commitEvent()  
      private void createEvent()  
      private void emitSettingReturnParam​(int opcode, ReturnValue returnValue)  
      private void loadField​(ReferenceChain refChain)  
      protected void onMethodEnter()  
      protected void onMethodExit​(int opcode)  
      void visitCode()  
      void visitEnd()  
      private void writeAttribute​(Attribute param, org.objectweb.asm.Type type, boolean allowToString)  
      • Methods inherited from class org.objectweb.asm.commons.AdviceAdapter

        visitFieldInsn, visitInsn, visitIntInsn, visitInvokeDynamicInsn, visitJumpInsn, visitLabel, visitLdcInsn, visitLookupSwitchInsn, visitMethodInsn, visitMultiANewArrayInsn, visitTableSwitchInsn, visitTryCatchBlock, visitTypeInsn, visitVarInsn
      • Methods inherited from class org.objectweb.asm.commons.GeneratorAdapter

        arrayLength, arrayLoad, arrayStore, box, cast, catchException, checkCast, dup, dup2, dup2X1, dup2X2, dupX1, dupX2, endMethod, getAccess, getArgumentTypes, getField, getLocalType, getName, getReturnType, getStatic, goTo, ifCmp, ifICmp, ifNonNull, ifNull, ifZCmp, iinc, instanceOf, invokeConstructor, invokeDynamic, invokeInterface, invokeStatic, invokeVirtual, loadArg, loadArgArray, loadArgs, loadArgs, loadLocal, loadLocal, loadThis, mark, mark, math, monitorEnter, monitorExit, newArray, newInstance, newLabel, not, pop, pop2, push, push, push, push, push, push, push, push, push, putField, putStatic, ret, returnValue, setLocalType, storeArg, storeLocal, storeLocal, swap, swap, tableSwitch, tableSwitch, throwException, throwException, unbox, valueOf
      • Methods inherited from class org.objectweb.asm.commons.LocalVariablesSorter

        newLocal, newLocalMapping, updateNewLocals, visitFrame, visitIincInsn, visitLocalVariable, visitLocalVariableAnnotation, visitMaxs
      • Methods inherited from class org.objectweb.asm.MethodVisitor

        visitAnnotableParameterCount, visitAnnotation, visitAnnotationDefault, visitAttribute, visitInsnAnnotation, visitLineNumber, visitMethodInsn, visitParameter, visitParameterAnnotation, visitTryCatchAnnotation, visitTypeAnnotation
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • THROWABLE_BINARY_NAME

        private static final java.lang.String THROWABLE_BINARY_NAME
        See Also:
        Constant Field Values
      • inspectionClass

        private final java.lang.Class<?> inspectionClass
      • argumentTypesRef

        private final org.objectweb.asm.Type[] argumentTypesRef
      • returnTypeRef

        private final org.objectweb.asm.Type returnTypeRef
      • eventType

        private final org.objectweb.asm.Type eventType
      • eventLocal

        private int eventLocal
      • tryBegin

        private org.objectweb.asm.Label tryBegin
      • tryEnd

        private org.objectweb.asm.Label tryEnd
      • shouldInstrumentThrow

        private boolean shouldInstrumentThrow
    • Constructor Detail

      • JFRLegacyMethodAdvisor

        protected JFRLegacyMethodAdvisor​(JFRTransformDescriptor transformDescriptor,
                                         java.lang.Class<?> inspectionClass,
                                         int api,
                                         org.objectweb.asm.MethodVisitor mv,
                                         int access,
                                         java.lang.String name,
                                         java.lang.String desc)
    • Method Detail

      • visitCode

        public void visitCode()
        Overrides:
        visitCode in class org.objectweb.asm.commons.AdviceAdapter
      • visitEnd

        public void visitEnd()
        Overrides:
        visitEnd in class org.objectweb.asm.MethodVisitor
      • onMethodEnter

        protected void onMethodEnter()
        Overrides:
        onMethodEnter in class org.objectweb.asm.commons.AdviceAdapter
      • writeAttribute

        private void writeAttribute​(Attribute param,
                                    org.objectweb.asm.Type type,
                                    boolean allowToString)
      • onMethodExit

        protected void onMethodExit​(int opcode)
        Overrides:
        onMethodExit in class org.objectweb.asm.commons.AdviceAdapter
      • emitSettingReturnParam

        private void emitSettingReturnParam​(int opcode,
                                            ReturnValue returnValue)
      • commitEvent

        private void commitEvent()