final class jdk.jfr.internal.JVMUpcalls
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: jdk.jfr.internal.JVMUpcalls
  super_class: java.lang.Object
{
  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.jfr.internal.JVMUpcalls this
         0: .line 38
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // jdk.jfr.internal.JVMUpcalls this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/jfr/internal/JVMUpcalls;

  static byte[] onRetransform(long, boolean, java.lang.Class<?>, );
    descriptor: (JZLjava/lang/Class;[B)[B
    flags: (0x0008) ACC_STATIC
    Code:
      stack=6, locals=8, args_size=4
        start local 0 // long traceId
        start local 2 // boolean dummy
        start local 3 // java.lang.Class clazz
        start local 4 // byte[] oldBytes
         0: .line 56
            ldc Ljdk/jfr/Event;
            aload 3 /* clazz */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 12
            aload 3 /* clazz */
            invokevirtual java.lang.Class.getModifiers:()I
            invokestatic java.lang.reflect.Modifier.isAbstract:(I)Z
            ifne 12
         1: .line 57
            aload 3 /* clazz */
            ldc Ljdk/jfr/Event;
            invokevirtual java.lang.Class.asSubclass:(Ljava/lang/Class;)Ljava/lang/Class;
            invokestatic jdk.jfr.internal.Utils.getHandler:(Ljava/lang/Class;)Ljdk/jfr/internal/handlers/EventHandler;
            astore 5 /* handler */
        start local 5 // jdk.jfr.internal.handlers.EventHandler handler
         2: .line 58
            aload 5 /* handler */
            ifnonnull 6
         3: .line 59
            getstatic jdk.jfr.internal.LogTag.JFR_SYSTEM:Ljdk/jfr/internal/LogTag;
            getstatic jdk.jfr.internal.LogLevel.INFO:Ljdk/jfr/internal/LogLevel;
            new java.lang.StringBuilder
            dup
            ldc "No event handler found for "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* clazz */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ". Ignoring instrumentation request."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic jdk.jfr.internal.Logger.log:(Ljdk/jfr/internal/LogTag;Ljdk/jfr/internal/LogLevel;Ljava/lang/String;)V
         4: .line 61
            aload 4 /* oldBytes */
         5: areturn
         6: .line 63
      StackMap locals: jdk.jfr.internal.handlers.EventHandler
      StackMap stack:
            getstatic jdk.jfr.internal.LogTag.JFR_SYSTEM:Ljdk/jfr/internal/LogTag;
            getstatic jdk.jfr.internal.LogLevel.INFO:Ljdk/jfr/internal/LogLevel;
            new java.lang.StringBuilder
            dup
            ldc "Adding instrumentation to event class "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* clazz */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " using retransform"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic jdk.jfr.internal.Logger.log:(Ljdk/jfr/internal/LogTag;Ljdk/jfr/internal/LogLevel;Ljava/lang/String;)V
         7: .line 64
            new jdk.jfr.internal.EventInstrumentation
            dup
            aload 3 /* clazz */
            invokevirtual java.lang.Class.getSuperclass:()Ljava/lang/Class;
            aload 4 /* oldBytes */
            lload 0 /* traceId */
            invokespecial jdk.jfr.internal.EventInstrumentation.<init>:(Ljava/lang/Class;[BJ)V
            astore 6 /* ei */
        start local 6 // jdk.jfr.internal.EventInstrumentation ei
         8: .line 65
            aload 6 /* ei */
            invokevirtual jdk.jfr.internal.EventInstrumentation.buildInstrumented:()[B
            astore 7 /* bytes */
        start local 7 // byte[] bytes
         9: .line 66
            aload 3 /* clazz */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            aload 7 /* bytes */
            invokestatic jdk.jfr.internal.ASMToolkit.logASM:(Ljava/lang/String;[B)V
        10: .line 67
            aload 7 /* bytes */
        11: areturn
        end local 7 // byte[] bytes
        end local 6 // jdk.jfr.internal.EventInstrumentation ei
        end local 5 // jdk.jfr.internal.handlers.EventHandler handler
        12: .line 69
      StackMap locals:
      StackMap stack:
            aload 3 /* clazz */
            aload 4 /* oldBytes */
            invokestatic jdk.jfr.internal.instrument.JDKEvents.retransformCallback:(Ljava/lang/Class;[B)[B
        13: areturn
        14: .line 70
      StackMap locals:
      StackMap stack: java.lang.Throwable
            pop
        15: .line 71
            getstatic jdk.jfr.internal.LogTag.JFR_SYSTEM:Ljdk/jfr/internal/LogTag;
            getstatic jdk.jfr.internal.LogLevel.WARN:Ljdk/jfr/internal/LogLevel;
            new java.lang.StringBuilder
            dup
            ldc "Unexpected error when adding instrumentation to event class "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* clazz */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic jdk.jfr.internal.Logger.log:(Ljdk/jfr/internal/LogTag;Ljdk/jfr/internal/LogLevel;Ljava/lang/String;)V
        16: .line 73
            aload 4 /* oldBytes */
            areturn
        end local 4 // byte[] oldBytes
        end local 3 // java.lang.Class clazz
        end local 2 // boolean dummy
        end local 0 // long traceId
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   17     0   traceId  J
            0   17     2     dummy  Z
            0   17     3     clazz  Ljava/lang/Class<*>;
            0   17     4  oldBytes  [B
            2   12     5   handler  Ljdk/jfr/internal/handlers/EventHandler;
            8   12     6        ei  Ljdk/jfr/internal/EventInstrumentation;
            9   12     7     bytes  [B
      Exception table:
        from    to  target  type
           0     5      14  Class java.lang.Throwable
           6    11      14  Class java.lang.Throwable
          12    13      14  Class java.lang.Throwable
    Exceptions:
      throws java.lang.Throwable
    Signature: (JZLjava/lang/Class<*>;[B)[B
    MethodParameters:
          Name  Flags
      traceId   
      dummy     
      clazz     
      oldBytes  

  static byte[] bytesForEagerInstrumentation(long, boolean, java.lang.Class<?>, );
    descriptor: (JZLjava/lang/Class;[B)[B
    flags: (0x0008) ACC_STATIC
    Code:
      stack=6, locals=9, args_size=4
        start local 0 // long traceId
        start local 2 // boolean forceInstrumentation
        start local 3 // java.lang.Class superClass
        start local 4 // byte[] oldBytes
         0: .line 93
            invokestatic jdk.jfr.internal.JVMSupport.isNotAvailable:()Z
            ifeq 2
         1: .line 94
            aload 4 /* oldBytes */
            areturn
         2: .line 96
      StackMap locals:
      StackMap stack:
            ldc "<Unknown>"
            astore 5 /* eventName */
        start local 5 // java.lang.String eventName
         3: .line 98
            new jdk.jfr.internal.EventInstrumentation
            dup
            aload 3 /* superClass */
            aload 4 /* oldBytes */
            lload 0 /* traceId */
            invokespecial jdk.jfr.internal.EventInstrumentation.<init>:(Ljava/lang/Class;[BJ)V
            astore 6 /* ei */
        start local 6 // jdk.jfr.internal.EventInstrumentation ei
         4: .line 99
            aload 6 /* ei */
            invokevirtual jdk.jfr.internal.EventInstrumentation.getEventName:()Ljava/lang/String;
            astore 5 /* eventName */
         5: .line 100
            iload 2 /* forceInstrumentation */
            ifne 12
         6: .line 102
            invokestatic jdk.jfr.internal.MetadataRepository.getInstance:()Ljdk/jfr/internal/MetadataRepository;
            astore 7 /* mr */
        start local 7 // jdk.jfr.internal.MetadataRepository mr
         7: .line 106
            aload 7 /* mr */
            aload 6 /* ei */
            invokevirtual jdk.jfr.internal.EventInstrumentation.getEventName:()Ljava/lang/String;
            invokevirtual jdk.jfr.internal.MetadataRepository.isEnabled:(Ljava/lang/String;)Z
            ifne 8
            aload 6 /* ei */
            invokevirtual jdk.jfr.internal.EventInstrumentation.isEnabled:()Z
            ifeq 9
      StackMap locals: java.lang.String jdk.jfr.internal.EventInstrumentation jdk.jfr.internal.MetadataRepository
      StackMap stack:
         8: aload 6 /* ei */
            invokevirtual jdk.jfr.internal.EventInstrumentation.isRegistered:()Z
            ifne 12
         9: .line 107
      StackMap locals:
      StackMap stack:
            getstatic jdk.jfr.internal.LogTag.JFR_SYSTEM:Ljdk/jfr/internal/LogTag;
            getstatic jdk.jfr.internal.LogLevel.INFO:Ljdk/jfr/internal/LogLevel;
            new java.lang.StringBuilder
            dup
            ldc "Skipping instrumentation for event type "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 5 /* eventName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " since event was disabled on class load"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic jdk.jfr.internal.Logger.log:(Ljdk/jfr/internal/LogTag;Ljdk/jfr/internal/LogLevel;Ljava/lang/String;)V
        10: .line 108
            aload 4 /* oldBytes */
        11: areturn
        end local 7 // jdk.jfr.internal.MetadataRepository mr
        12: .line 114
      StackMap locals:
      StackMap stack:
            aload 6 /* ei */
            iconst_1
            invokevirtual jdk.jfr.internal.EventInstrumentation.setGuardHandler:(Z)V
        13: .line 115
            getstatic jdk.jfr.internal.LogTag.JFR_SYSTEM:Ljdk/jfr/internal/LogTag;
            getstatic jdk.jfr.internal.LogLevel.INFO:Ljdk/jfr/internal/LogLevel;
            new java.lang.StringBuilder
            dup
            ldc "Adding "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 2 /* forceInstrumentation */
            ifeq 14
            ldc "forced "
            goto 15
      StackMap locals: long int java.lang.Class byte[] java.lang.String jdk.jfr.internal.EventInstrumentation
      StackMap stack: jdk.jfr.internal.LogTag jdk.jfr.internal.LogLevel java.lang.StringBuilder
        14: ldc ""
      StackMap locals: long int java.lang.Class byte[] java.lang.String jdk.jfr.internal.EventInstrumentation
      StackMap stack: jdk.jfr.internal.LogTag jdk.jfr.internal.LogLevel java.lang.StringBuilder java.lang.String
        15: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "instrumentation for event type "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 5 /* eventName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " during initial class load"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic jdk.jfr.internal.Logger.log:(Ljdk/jfr/internal/LogTag;Ljdk/jfr/internal/LogLevel;Ljava/lang/String;)V
        16: .line 116
            new jdk.jfr.internal.EventHandlerCreator
            dup
            lload 0 /* traceId */
            aload 6 /* ei */
            invokevirtual jdk.jfr.internal.EventInstrumentation.getSettingInfos:()Ljava/util/List;
            aload 6 /* ei */
            invokevirtual jdk.jfr.internal.EventInstrumentation.getFieldInfos:()Ljava/util/List;
            invokespecial jdk.jfr.internal.EventHandlerCreator.<init>:(JLjava/util/List;Ljava/util/List;)V
            astore 7 /* eh */
        start local 7 // jdk.jfr.internal.EventHandlerCreator eh
        17: .line 119
            aload 7 /* eh */
            invokevirtual jdk.jfr.internal.EventHandlerCreator.makeEventHandlerClass:()Ljava/lang/Class;
            pop
        18: .line 120
            aload 6 /* ei */
            invokevirtual jdk.jfr.internal.EventInstrumentation.buildInstrumented:()[B
            astore 8 /* bytes */
        start local 8 // byte[] bytes
        19: .line 121
            new java.lang.StringBuilder
            dup
            aload 6 /* ei */
            invokevirtual jdk.jfr.internal.EventInstrumentation.getClassName:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "("
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            lload 0 /* traceId */
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            ldc ")"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 8 /* bytes */
            invokestatic jdk.jfr.internal.ASMToolkit.logASM:(Ljava/lang/String;[B)V
        20: .line 122
            aload 8 /* bytes */
        21: areturn
        end local 8 // byte[] bytes
        end local 7 // jdk.jfr.internal.EventHandlerCreator eh
        end local 6 // jdk.jfr.internal.EventInstrumentation ei
        22: .line 123
      StackMap locals: long int java.lang.Class byte[] java.lang.String
      StackMap stack: java.lang.Throwable
            pop
        23: .line 124
            getstatic jdk.jfr.internal.LogTag.JFR_SYSTEM:Ljdk/jfr/internal/LogTag;
            getstatic jdk.jfr.internal.LogLevel.WARN:Ljdk/jfr/internal/LogLevel;
            new java.lang.StringBuilder
            dup
            ldc "Unexpected error when adding instrumentation for event type "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 5 /* eventName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic jdk.jfr.internal.Logger.log:(Ljdk/jfr/internal/LogTag;Ljdk/jfr/internal/LogLevel;Ljava/lang/String;)V
        24: .line 125
            aload 4 /* oldBytes */
            areturn
        end local 5 // java.lang.String eventName
        end local 4 // byte[] oldBytes
        end local 3 // java.lang.Class superClass
        end local 2 // boolean forceInstrumentation
        end local 0 // long traceId
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   25     0               traceId  J
            0   25     2  forceInstrumentation  Z
            0   25     3            superClass  Ljava/lang/Class<*>;
            0   25     4              oldBytes  [B
            3   25     5             eventName  Ljava/lang/String;
            4   22     6                    ei  Ljdk/jfr/internal/EventInstrumentation;
            7   12     7                    mr  Ljdk/jfr/internal/MetadataRepository;
           17   22     7                    eh  Ljdk/jfr/internal/EventHandlerCreator;
           19   22     8                 bytes  [B
      Exception table:
        from    to  target  type
           3    11      22  Class java.lang.Throwable
          12    21      22  Class java.lang.Throwable
    Exceptions:
      throws java.lang.Throwable
    Signature: (JZLjava/lang/Class<*>;[B)[B
    MethodParameters:
                      Name  Flags
      traceId               
      forceInstrumentation  
      superClass            
      oldBytes              

  static java.lang.Thread createRecorderThread(java.lang.ThreadGroup, java.lang.ClassLoader);
    descriptor: (Ljava/lang/ThreadGroup;Ljava/lang/ClassLoader;)Ljava/lang/Thread;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.lang.ThreadGroup systemThreadGroup
        start local 1 // java.lang.ClassLoader contextClassLoader
         0: .line 141
            aload 0 /* systemThreadGroup */
            aload 1 /* contextClassLoader */
            invokestatic jdk.jfr.internal.SecuritySupport.createRecorderThread:(Ljava/lang/ThreadGroup;Ljava/lang/ClassLoader;)Ljava/lang/Thread;
            areturn
        end local 1 // java.lang.ClassLoader contextClassLoader
        end local 0 // java.lang.ThreadGroup systemThreadGroup
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    1     0   systemThreadGroup  Ljava/lang/ThreadGroup;
            0    1     1  contextClassLoader  Ljava/lang/ClassLoader;
    MethodParameters:
                    Name  Flags
      systemThreadGroup   
      contextClassLoader  

  static java.lang.Class<? extends jdk.jfr.internal.handlers.EventHandler> getEventHandlerProxyClass();
    descriptor: ()Ljava/lang/Class;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 150
            getstatic jdk.jfr.internal.EventHandlerProxyCreator.proxyClass:Ljava/lang/Class;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Signature: ()Ljava/lang/Class<+Ljdk/jfr/internal/handlers/EventHandler;>;
}
SourceFile: "JVMUpcalls.java"
InnerClasses:
  final FieldInfo = jdk.jfr.internal.EventInstrumentation$FieldInfo of jdk.jfr.internal.EventInstrumentation
  final SettingInfo = jdk.jfr.internal.EventInstrumentation$SettingInfo of jdk.jfr.internal.EventInstrumentation