public final class com.oracle.svm.jni.JNIGeneratedMethodSupport
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.oracle.svm.jni.JNIGeneratedMethodSupport
  super_class: java.lang.Object
{
  private static final sun.misc.Unsafe UNSAFE;
    descriptor: Lsun/misc/Unsafe;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 54
            invokestatic org.graalvm.compiler.serviceprovider.GraalUnsafeAccess.getUnsafe:()Lsun/misc/Unsafe;
            putstatic com.oracle.svm.jni.JNIGeneratedMethodSupport.UNSAFE:Lsun/misc/Unsafe;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.svm.jni.JNIGeneratedMethodSupport this
         0: .line 51
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // com.oracle.svm.jni.JNIGeneratedMethodSupport this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/svm/jni/JNIGeneratedMethodSupport;

  static org.graalvm.word.PointerBase nativeCallAddress(com.oracle.svm.jni.access.JNINativeLinkage);
    descriptor: (Lcom/oracle/svm/jni/access/JNINativeLinkage;)Lorg/graalvm/word/PointerBase;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.svm.jni.access.JNINativeLinkage linkage
         0: .line 57
            aload 0 /* linkage */
            invokevirtual com.oracle.svm.jni.access.JNINativeLinkage.getOrFindEntryPoint:()Lorg/graalvm/word/PointerBase;
            areturn
        end local 0 // com.oracle.svm.jni.access.JNINativeLinkage linkage
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  linkage  Lcom/oracle/svm/jni/access/JNINativeLinkage;
    MethodParameters:
         Name  Flags
      linkage  

  static int nativeCallPrologue();
    descriptor: ()I
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 61
            bipush 16
            invokestatic com.oracle.svm.jni.JNIObjectHandles.pushLocalFrame:(I)I
            ireturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  static void nativeCallEpilogue(int);
    descriptor: (I)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // int handleFrame
         0: .line 65
            iload 0 /* handleFrame */
            invokestatic com.oracle.svm.jni.JNIObjectHandles.popLocalFramesIncluding:(I)V
         1: .line 66
            return
        end local 0 // int handleFrame
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0  handleFrame  I
    MethodParameters:
             Name  Flags
      handleFrame  

  static com.oracle.svm.jni.nativeapi.JNIEnvironment environment();
    descriptor: ()Lcom/oracle/svm/jni/nativeapi/JNIEnvironment;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 69
            invokestatic com.oracle.svm.jni.JNIThreadLocalEnvironment.getAddress:()Lcom/oracle/svm/jni/nativeapi/JNIEnvironment;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  static com.oracle.svm.jni.nativeapi.JNIObjectHandle boxObjectInLocalHandle(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Lcom/oracle/svm/jni/nativeapi/JNIObjectHandle;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.Object obj
         0: .line 73
            aload 0 /* obj */
            invokestatic com.oracle.svm.jni.JNIObjectHandles.createLocal:(Ljava/lang/Object;)Lcom/oracle/svm/jni/nativeapi/JNIObjectHandle;
            areturn
        end local 0 // java.lang.Object obj
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0   obj  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      obj   

  static java.lang.Object unboxHandle(com.oracle.svm.jni.nativeapi.JNIObjectHandle);
    descriptor: (Lcom/oracle/svm/jni/nativeapi/JNIObjectHandle;)Ljava/lang/Object;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.svm.jni.nativeapi.JNIObjectHandle handle
         0: .line 77
            aload 0 /* handle */
            invokestatic com.oracle.svm.jni.JNIObjectHandles.getObject:(Lcom/oracle/svm/jni/nativeapi/JNIObjectHandle;)Ljava/lang/Object;
            areturn
        end local 0 // com.oracle.svm.jni.nativeapi.JNIObjectHandle handle
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  handle  Lcom/oracle/svm/jni/nativeapi/JNIObjectHandle;
    MethodParameters:
        Name  Flags
      handle  

  static org.graalvm.word.WordBase getFieldOffsetFromId(com.oracle.svm.jni.nativeapi.JNIFieldId);
    descriptor: (Lcom/oracle/svm/jni/nativeapi/JNIFieldId;)Lorg/graalvm/word/WordBase;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.svm.jni.nativeapi.JNIFieldId fieldId
         0: .line 81
            aload 0 /* fieldId */
            invokestatic com.oracle.svm.jni.access.JNIAccessibleField.getOffsetFromId:(Lcom/oracle/svm/jni/nativeapi/JNIFieldId;)Lorg/graalvm/word/WordBase;
            areturn
        end local 0 // com.oracle.svm.jni.nativeapi.JNIFieldId fieldId
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  fieldId  Lcom/oracle/svm/jni/nativeapi/JNIFieldId;
    MethodParameters:
         Name  Flags
      fieldId  

  static byte[] getStaticPrimitiveFieldsArray();
    descriptor: ()[B
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 85
            invokestatic com.oracle.svm.core.StaticFieldsSupport.getStaticPrimitiveFields:()[B
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  static java.lang.Object[] getStaticObjectFieldsArray();
    descriptor: ()[Ljava/lang/Object;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 89
            invokestatic com.oracle.svm.core.StaticFieldsSupport.getStaticObjectFields:()[Ljava/lang/Object;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  static void setPendingException(java.lang.Throwable);
    descriptor: (Ljava/lang/Throwable;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.Throwable t
         0: .line 93
            aload 0 /* t */
            invokestatic com.oracle.svm.jni.JNIThreadLocalPendingException.set:(Ljava/lang/Throwable;)V
         1: .line 94
            return
        end local 0 // java.lang.Throwable t
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0     t  Ljava/lang/Throwable;
    MethodParameters:
      Name  Flags
      t     

  static java.lang.Throwable getAndClearPendingException();
    descriptor: ()Ljava/lang/Throwable;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=1, args_size=0
         0: .line 97
            invokestatic com.oracle.svm.jni.JNIThreadLocalPendingException.get:()Ljava/lang/Throwable;
            astore 0 /* t */
        start local 0 // java.lang.Throwable t
         1: .line 98
            invokestatic com.oracle.svm.jni.JNIThreadLocalPendingException.clear:()V
         2: .line 99
            aload 0 /* t */
            areturn
        end local 0 // java.lang.Throwable t
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            1    3     0     t  Ljava/lang/Throwable;

  static void rethrowPendingException();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=1, args_size=0
         0: .line 103
            invokestatic com.oracle.svm.jni.JNIGeneratedMethodSupport.getAndClearPendingException:()Ljava/lang/Throwable;
            astore 0 /* t */
        start local 0 // java.lang.Throwable t
         1: .line 104
            aload 0 /* t */
            ifnull 3
         2: .line 105
            aload 0 /* t */
            athrow
         3: .line 107
      StackMap locals: java.lang.Throwable
      StackMap stack:
            return
        end local 0 // java.lang.Throwable t
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            1    4     0     t  Ljava/lang/Throwable;
    Exceptions:
      throws java.lang.Throwable

  static org.graalvm.word.PointerBase pinArrayAndGetAddress(java.lang.Object, org.graalvm.nativeimage.c.type.CCharPointer);
    descriptor: (Ljava/lang/Object;Lorg/graalvm/nativeimage/c/type/CCharPointer;)Lorg/graalvm/word/PointerBase;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.lang.Object array
        start local 1 // org.graalvm.nativeimage.c.type.CCharPointer isCopy
         0: .line 110
            aload 0 /* array */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.isArray:()Z
            ifeq 4
         1: .line 111
            aload 1 /* isCopy */
            invokeinterface org.graalvm.nativeimage.c.type.CCharPointer.isNonNull:()Z
            ifeq 3
         2: .line 112
            aload 1 /* isCopy */
            iconst_0
            invokeinterface org.graalvm.nativeimage.c.type.CCharPointer.write:(B)V
         3: .line 114
      StackMap locals:
      StackMap stack:
            aload 0 /* array */
            invokestatic com.oracle.svm.jni.JNIThreadLocalPinnedObjects.pinArrayAndGetAddress:(Ljava/lang/Object;)Lorg/graalvm/word/PointerBase;
            areturn
         4: .line 116
      StackMap locals:
      StackMap stack:
            invokestatic org.graalvm.word.WordFactory.nullPointer:()Lorg/graalvm/word/PointerBase;
            areturn
        end local 1 // org.graalvm.nativeimage.c.type.CCharPointer isCopy
        end local 0 // java.lang.Object array
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0   array  Ljava/lang/Object;
            0    5     1  isCopy  Lorg/graalvm/nativeimage/c/type/CCharPointer;
    Exceptions:
      throws java.lang.Throwable
    MethodParameters:
        Name  Flags
      array   
      isCopy  

  static boolean unpinArrayByAddress(org.graalvm.word.PointerBase);
    descriptor: (Lorg/graalvm/word/PointerBase;)Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.word.PointerBase address
         0: .line 120
            aload 0 /* address */
            invokestatic com.oracle.svm.jni.JNIThreadLocalPinnedObjects.unpinArrayByAddress:(Lorg/graalvm/word/PointerBase;)Z
            ireturn
        end local 0 // org.graalvm.word.PointerBase address
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  address  Lorg/graalvm/word/PointerBase;
    Exceptions:
      throws java.lang.Throwable
    MethodParameters:
         Name  Flags
      address  

  static void getPrimitiveArrayRegion(jdk.vm.ci.meta.JavaKind, java.lang.Object, int, int, org.graalvm.word.PointerBase);
    descriptor: (Ljdk/vm/ci/meta/JavaKind;Ljava/lang/Object;IILorg/graalvm/word/PointerBase;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=9, locals=8, args_size=5
        start local 0 // jdk.vm.ci.meta.JavaKind elementKind
        start local 1 // java.lang.Object array
        start local 2 // int start
        start local 3 // int count
        start local 4 // org.graalvm.word.PointerBase buffer
         0: .line 124
            iload 2 /* start */
            iflt 1
            iload 3 /* count */
            iflt 1
            iload 2 /* start */
            iload 3 /* count */
            iadd
            aload 1 /* array */
            invokestatic java.lang.reflect.Array.getLength:(Ljava/lang/Object;)I
            if_icmple 2
         1: .line 125
      StackMap locals:
      StackMap stack:
            new java.lang.ArrayIndexOutOfBoundsException
            dup
            invokespecial java.lang.ArrayIndexOutOfBoundsException.<init>:()V
            athrow
         2: .line 127
      StackMap locals:
      StackMap stack:
            iload 3 /* count */
            ifle 6
         3: .line 128
            invokestatic com.oracle.svm.core.config.ConfigurationValues.getObjectLayout:()Lcom/oracle/svm/core/config/ObjectLayout;
            aload 0 /* elementKind */
            iload 2 /* start */
            invokevirtual com.oracle.svm.core.config.ObjectLayout.getArrayElementOffset:(Ljdk/vm/ci/meta/JavaKind;I)J
            lstore 5 /* offset */
        start local 5 // long offset
         4: .line 129
            invokestatic com.oracle.svm.core.config.ConfigurationValues.getObjectLayout:()Lcom/oracle/svm/core/config/ObjectLayout;
            aload 0 /* elementKind */
            invokevirtual com.oracle.svm.core.config.ObjectLayout.sizeInBytes:(Ljdk/vm/ci/meta/JavaKind;)I
            istore 7 /* elementSize */
        start local 7 // int elementSize
         5: .line 130
            getstatic com.oracle.svm.jni.JNIGeneratedMethodSupport.UNSAFE:Lsun/misc/Unsafe;
            aload 1 /* array */
            lload 5 /* offset */
            aconst_null
            aload 4 /* buffer */
            invokeinterface org.graalvm.word.PointerBase.rawValue:()J
            iload 3 /* count */
            iload 7 /* elementSize */
            imul
            i2l
            invokevirtual sun.misc.Unsafe.copyMemory:(Ljava/lang/Object;JLjava/lang/Object;JJ)V
        end local 7 // int elementSize
        end local 5 // long offset
         6: .line 132
      StackMap locals:
      StackMap stack:
            return
        end local 4 // org.graalvm.word.PointerBase buffer
        end local 3 // int count
        end local 2 // int start
        end local 1 // java.lang.Object array
        end local 0 // jdk.vm.ci.meta.JavaKind elementKind
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    7     0  elementKind  Ljdk/vm/ci/meta/JavaKind;
            0    7     1        array  Ljava/lang/Object;
            0    7     2        start  I
            0    7     3        count  I
            0    7     4       buffer  Lorg/graalvm/word/PointerBase;
            4    6     5       offset  J
            5    6     7  elementSize  I
    MethodParameters:
             Name  Flags
      elementKind  
      array        
      start        
      count        
      buffer       

  static void setPrimitiveArrayRegion(jdk.vm.ci.meta.JavaKind, java.lang.Object, int, int, org.graalvm.word.PointerBase);
    descriptor: (Ljdk/vm/ci/meta/JavaKind;Ljava/lang/Object;IILorg/graalvm/word/PointerBase;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=9, locals=8, args_size=5
        start local 0 // jdk.vm.ci.meta.JavaKind elementKind
        start local 1 // java.lang.Object array
        start local 2 // int start
        start local 3 // int count
        start local 4 // org.graalvm.word.PointerBase buffer
         0: .line 135
            iload 2 /* start */
            iflt 1
            iload 3 /* count */
            iflt 1
            iload 2 /* start */
            iload 3 /* count */
            iadd
            aload 1 /* array */
            invokestatic java.lang.reflect.Array.getLength:(Ljava/lang/Object;)I
            if_icmple 2
         1: .line 136
      StackMap locals:
      StackMap stack:
            new java.lang.ArrayIndexOutOfBoundsException
            dup
            invokespecial java.lang.ArrayIndexOutOfBoundsException.<init>:()V
            athrow
         2: .line 138
      StackMap locals:
      StackMap stack:
            iload 3 /* count */
            ifle 6
         3: .line 139
            invokestatic com.oracle.svm.core.config.ConfigurationValues.getObjectLayout:()Lcom/oracle/svm/core/config/ObjectLayout;
            aload 0 /* elementKind */
            iload 2 /* start */
            invokevirtual com.oracle.svm.core.config.ObjectLayout.getArrayElementOffset:(Ljdk/vm/ci/meta/JavaKind;I)J
            lstore 5 /* offset */
        start local 5 // long offset
         4: .line 140
            invokestatic com.oracle.svm.core.config.ConfigurationValues.getObjectLayout:()Lcom/oracle/svm/core/config/ObjectLayout;
            aload 0 /* elementKind */
            invokevirtual com.oracle.svm.core.config.ObjectLayout.sizeInBytes:(Ljdk/vm/ci/meta/JavaKind;)I
            istore 7 /* elementSize */
        start local 7 // int elementSize
         5: .line 141
            getstatic com.oracle.svm.jni.JNIGeneratedMethodSupport.UNSAFE:Lsun/misc/Unsafe;
            aconst_null
            aload 4 /* buffer */
            invokeinterface org.graalvm.word.PointerBase.rawValue:()J
            aload 1 /* array */
            lload 5 /* offset */
            iload 3 /* count */
            iload 7 /* elementSize */
            imul
            i2l
            invokevirtual sun.misc.Unsafe.copyMemory:(Ljava/lang/Object;JLjava/lang/Object;JJ)V
        end local 7 // int elementSize
        end local 5 // long offset
         6: .line 143
      StackMap locals:
      StackMap stack:
            return
        end local 4 // org.graalvm.word.PointerBase buffer
        end local 3 // int count
        end local 2 // int start
        end local 1 // java.lang.Object array
        end local 0 // jdk.vm.ci.meta.JavaKind elementKind
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    7     0  elementKind  Ljdk/vm/ci/meta/JavaKind;
            0    7     1        array  Ljava/lang/Object;
            0    7     2        start  I
            0    7     3        count  I
            0    7     4       buffer  Lorg/graalvm/word/PointerBase;
            4    6     5       offset  J
            5    6     7  elementSize  I
    MethodParameters:
             Name  Flags
      elementKind  
      array        
      start        
      count        
      buffer       
}
SourceFile: "JNIGeneratedMethodSupport.java"