Class JFRLegacyMethodAdvisor

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.jfrlegacy.impl.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 final org.objectweb.asm.Type[]
     
    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
    JFRLegacyMethodAdvisor(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 void
     
    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, 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

    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
    • shouldInstrumentThrow

      private boolean shouldInstrumentThrow
  • Constructor Details

    • JFRLegacyMethodAdvisor

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

    • 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
    • createEvent

      private void createEvent() throws IllegalSyntaxException
      Throws:
      IllegalSyntaxException
    • loadField

      private void loadField(ReferenceChain refChain)
    • 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()