Class JFRMethodAdvisor

java.lang.Object
org.objectweb.asm.MethodVisitor
org.objectweb.asm.commons.LocalVariablesSorter
org.objectweb.asm.commons.GeneratorAdapter
org.objectweb.asm.commons.AdviceAdapter
org.openjdk.jmc.agent.jfr.impl.JFRMethodAdvisor
All Implemented Interfaces:
org.objectweb.asm.Opcodes

public class JFRMethodAdvisor extends org.objectweb.asm.commons.AdviceAdapter
This class is responsible for transforming the method to be instrumented. Code emitter for JFR next, i.e. the version of JFR distributed with JDK 9 and later.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private final org.objectweb.asm.Type[]
     
    private org.objectweb.asm.Label
     
    private int
     
    private final org.objectweb.asm.Type
     
    private final Class<?>
     
    private final org.objectweb.asm.Type
     
    private boolean
     
    private static final String
     
     
    private org.objectweb.asm.Label
     
    private org.objectweb.asm.Label
     

    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, V19, V20, V21, V22, V23, V24, V25, V9
  • Constructor Summary

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

    Modifier and Type
    Method
    Description
    private void
     
    private org.objectweb.asm.Type
    convertify(org.objectweb.asm.MethodVisitor mv, Attribute convertable, org.objectweb.asm.Type type)
     
    private org.objectweb.asm.Type
    convertify(org.objectweb.asm.MethodVisitor mv, ResolvedConvertable resolvedConvertable, org.objectweb.asm.Type type)
     
    private void
    Generates the transformation for instantiating the event type, setting its parameter and field attributes and call begin().
    private void
    emitSettingReturnParam(int opcode, ReturnValue returnValue)
     
    private void
     
    protected void
     
    protected void
    onMethodExit(int opcode)
     
    void
     
    void
     
    private void
    writeAttribute(Attribute param, org.objectweb.asm.Type type)
     

    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

    getDelegate, 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 Details

    • THROWABLE_BINARY_NAME

      private static final String THROWABLE_BINARY_NAME
      See Also:
    • transformDescriptor

      private final JFRTransformDescriptor transformDescriptor
    • inspectionClass

      private final 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
    • catchBegin

      private org.objectweb.asm.Label catchBegin
    • shouldInstrumentThrow

      private boolean shouldInstrumentThrow
  • Constructor Details

    • JFRMethodAdvisor

      protected JFRMethodAdvisor(JFRTransformDescriptor transformDescriptor, Class<?> inspectionClass, int api, org.objectweb.asm.MethodVisitor mv, int access, String name, String desc)
  • Method Details