public class com.oracle.svm.jni.JNILibraryInitializer implements com.oracle.svm.core.jdk.NativeLibrarySupport$LibraryInitializer
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.svm.jni.JNILibraryInitializer
  super_class: java.lang.Object
{
  private final org.graalvm.collections.EconomicMap<java.lang.String, com.oracle.svm.core.c.CGlobalData<org.graalvm.word.PointerBase>> onLoadCGlobalDataMap;
    descriptor: Lorg/graalvm/collections/EconomicMap;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lorg/graalvm/collections/EconomicMap<Ljava/lang/String;Lcom/oracle/svm/core/c/CGlobalData<Lorg/graalvm/word/PointerBase;>;>;

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.svm.jni.JNILibraryInitializer this
         0: .line 57
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 59
            aload 0 /* this */
            getstatic org.graalvm.collections.Equivalence.IDENTITY:Lorg/graalvm/collections/Equivalence;
            invokestatic org.graalvm.collections.EconomicMap.create:(Lorg/graalvm/collections/Equivalence;)Lorg/graalvm/collections/EconomicMap;
            putfield com.oracle.svm.jni.JNILibraryInitializer.onLoadCGlobalDataMap:Lorg/graalvm/collections/EconomicMap;
         2: .line 57
            return
        end local 0 // com.oracle.svm.jni.JNILibraryInitializer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/svm/jni/JNILibraryInitializer;

  public static java.lang.String getOnLoadName(java.lang.String, boolean);
    descriptor: (Ljava/lang/String;Z)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // java.lang.String libName
        start local 1 // boolean isBuiltIn
         0: .line 62
            ldc "JNI_OnLoad"
            astore 2 /* name */
        start local 2 // java.lang.String name
         1: .line 63
            iload 1 /* isBuiltIn */
            ifeq 3
         2: .line 64
            new java.lang.StringBuilder
            dup
            aload 2 /* name */
            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;
            aload 0 /* libName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
         3: .line 66
      StackMap locals: java.lang.String
      StackMap stack:
            aload 2 /* name */
            areturn
        end local 2 // java.lang.String name
        end local 1 // boolean isBuiltIn
        end local 0 // java.lang.String libName
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0    libName  Ljava/lang/String;
            0    4     1  isBuiltIn  Z
            1    4     2       name  Ljava/lang/String;
    MethodParameters:
           Name  Flags
      libName    
      isBuiltIn  

  private static void callOnLoadFunction(java.lang.String, org.graalvm.word.PointerBase);
    descriptor: (Ljava/lang/String;Lorg/graalvm/word/PointerBase;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // java.lang.String libName
        start local 1 // org.graalvm.word.PointerBase onLoadFunction
         0: .line 70
            aload 1 /* onLoadFunction */
            invokeinterface org.graalvm.word.PointerBase.isNonNull:()Z
            ifeq 4
         1: .line 71
            aload 1 /* onLoadFunction */
            checkcast com.oracle.svm.jni.JNIOnLoadFunctionPointer
            astore 2 /* onLoad */
        start local 2 // com.oracle.svm.jni.JNIOnLoadFunctionPointer onLoad
         2: .line 72
            aload 2 /* onLoad */
            invokestatic com.oracle.svm.jni.functions.JNIFunctionTables.singleton:()Lcom/oracle/svm/jni/functions/JNIFunctionTables;
            invokevirtual com.oracle.svm.jni.functions.JNIFunctionTables.getGlobalJavaVM:()Lcom/oracle/svm/jni/nativeapi/JNIJavaVM;
            invokestatic org.graalvm.word.WordFactory.nullPointer:()Lorg/graalvm/word/PointerBase;
            checkcast org.graalvm.nativeimage.c.type.VoidPointer
            invokeinterface com.oracle.svm.jni.JNIOnLoadFunctionPointer.invoke:(Lcom/oracle/svm/jni/nativeapi/JNIJavaVM;Lorg/graalvm/nativeimage/c/type/VoidPointer;)I
            istore 3 /* expected */
        start local 3 // int expected
         3: .line 73
            aload 0 /* libName */
            iload 3 /* expected */
            invokestatic com.oracle.svm.jni.JNILibraryInitializer.checkSupportedJNIVersion:(Ljava/lang/String;I)V
        end local 3 // int expected
        end local 2 // com.oracle.svm.jni.JNIOnLoadFunctionPointer onLoad
         4: .line 75
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.graalvm.word.PointerBase onLoadFunction
        end local 0 // java.lang.String libName
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    5     0         libName  Ljava/lang/String;
            0    5     1  onLoadFunction  Lorg/graalvm/word/PointerBase;
            2    4     2          onLoad  Lcom/oracle/svm/jni/JNIOnLoadFunctionPointer;
            3    4     3        expected  I
    MethodParameters:
                Name  Flags
      libName         
      onLoadFunction  

  private static void checkSupportedJNIVersion(java.lang.String, int);
    descriptor: (Ljava/lang/String;I)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // java.lang.String libName
        start local 1 // int expected
         0: .line 78
            iload 1 /* expected */
            invokestatic com.oracle.svm.jni.nativeapi.JNIVersion.JNI_VERSION_1_8:()I
            if_icmpeq 3
            iload 1 /* expected */
            invokestatic com.oracle.svm.jni.nativeapi.JNIVersion.JNI_VERSION_1_6:()I
            if_icmpeq 3
            iload 1 /* expected */
            invokestatic com.oracle.svm.jni.nativeapi.JNIVersion.JNI_VERSION_1_4:()I
            if_icmpeq 3
            iload 1 /* expected */
            invokestatic com.oracle.svm.jni.nativeapi.JNIVersion.JNI_VERSION_1_2:()I
            if_icmpeq 3
            iload 1 /* expected */
            invokestatic com.oracle.svm.jni.nativeapi.JNIVersion.JNI_VERSION_1_1:()I
            if_icmpeq 3
         1: .line 79
            new java.lang.StringBuilder
            dup
            ldc "Unsupported JNI version 0x"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* expected */
            invokestatic java.lang.Integer.toHexString:(I)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ", required by "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* libName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 2 /* message */
        start local 2 // java.lang.String message
         2: .line 80
            new java.lang.UnsatisfiedLinkError
            dup
            aload 2 /* message */
            invokespecial java.lang.UnsatisfiedLinkError.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // java.lang.String message
         3: .line 82
      StackMap locals:
      StackMap stack:
            return
        end local 1 // int expected
        end local 0 // java.lang.String libName
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0   libName  Ljava/lang/String;
            0    4     1  expected  I
            2    3     2   message  Ljava/lang/String;
    MethodParameters:
          Name  Flags
      libName   
      expected  

  public boolean fillCGlobalDataMap(java.util.Collection<java.lang.String>);
    descriptor: (Ljava/util/Collection;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=8, args_size=2
        start local 0 // com.oracle.svm.jni.JNILibraryInitializer this
        start local 1 // java.util.Collection staticLibNames
         0: .line 85
            bipush 20
            anewarray java.lang.String
            dup
            iconst_0
            ldc "net"
            aastore
            dup
            iconst_1
            ldc "java"
            aastore
            dup
            iconst_2
            ldc "nio"
            aastore
            dup
            iconst_3
            ldc "zip"
            aastore
            dup
            iconst_4
            ldc "sunec"
            aastore
            dup
            iconst_5
            ldc "jaas"
            aastore
            dup
            bipush 6
            ldc "sctp"
            aastore
            dup
            bipush 7
            ldc "extnet"
            aastore
            dup
            bipush 8
         1: .line 86
            ldc "j2gss"
            aastore
            dup
            bipush 9
            ldc "j2pkcs11"
            aastore
            dup
            bipush 10
            ldc "j2pcsc"
            aastore
            dup
            bipush 11
            ldc "prefs"
            aastore
            dup
            bipush 12
            ldc "verify"
            aastore
            dup
            bipush 13
            ldc "awt"
            aastore
            dup
            bipush 14
            ldc "awt_xawt"
            aastore
            dup
            bipush 15
            ldc "awt_headless"
            aastore
            dup
            bipush 16
            ldc "lcms"
            aastore
            dup
            bipush 17
         2: .line 87
            ldc "fontmanager"
            aastore
            dup
            bipush 18
            ldc "javajpeg"
            aastore
            dup
            bipush 19
            ldc "mlib_image"
            aastore
         3: .line 85
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            astore 2 /* libsWithOnLoad */
        start local 2 // java.util.List libsWithOnLoad
         4: .line 89
            new java.util.ArrayList
            dup
            aload 1 /* staticLibNames */
            invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
            astore 3 /* localStaticLibNames */
        start local 3 // java.util.ArrayList localStaticLibNames
         5: .line 90
            aload 3 /* localStaticLibNames */
            aload 2 /* libsWithOnLoad */
            invokevirtual java.util.ArrayList.retainAll:(Ljava/util/Collection;)Z
            pop
         6: .line 91
            iconst_0
            istore 4 /* mapIsChanged */
        start local 4 // boolean mapIsChanged
         7: .line 92
            aload 3 /* localStaticLibNames */
            invokevirtual java.util.ArrayList.iterator:()Ljava/util/Iterator;
            astore 6
            goto 13
      StackMap locals: com.oracle.svm.jni.JNILibraryInitializer java.util.Collection java.util.List java.util.ArrayList int top java.util.Iterator
      StackMap stack:
         8: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 5 /* libName */
        start local 5 // java.lang.String libName
         9: .line 93
            aload 0 /* this */
            getfield com.oracle.svm.jni.JNILibraryInitializer.onLoadCGlobalDataMap:Lorg/graalvm/collections/EconomicMap;
            aload 5 /* libName */
            invokeinterface org.graalvm.collections.EconomicMap.containsKey:(Ljava/lang/Object;)Z
            ifne 13
        10: .line 94
            aload 5 /* libName */
            iconst_1
            invokestatic com.oracle.svm.jni.JNILibraryInitializer.getOnLoadName:(Ljava/lang/String;Z)Ljava/lang/String;
            iconst_1
            invokestatic com.oracle.svm.core.c.CGlobalDataFactory.forSymbol:(Ljava/lang/String;Z)Lcom/oracle/svm/core/c/CGlobalData;
            astore 7 /* onLoadCGlobalData */
        start local 7 // com.oracle.svm.core.c.CGlobalData onLoadCGlobalData
        11: .line 95
            aload 0 /* this */
            getfield com.oracle.svm.jni.JNILibraryInitializer.onLoadCGlobalDataMap:Lorg/graalvm/collections/EconomicMap;
            aload 5 /* libName */
            aload 7 /* onLoadCGlobalData */
            invokeinterface org.graalvm.collections.EconomicMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        12: .line 96
            iconst_1
            istore 4 /* mapIsChanged */
        end local 7 // com.oracle.svm.core.c.CGlobalData onLoadCGlobalData
        end local 5 // java.lang.String libName
        13: .line 92
      StackMap locals:
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 8
        14: .line 99
            iload 4 /* mapIsChanged */
            ireturn
        end local 4 // boolean mapIsChanged
        end local 3 // java.util.ArrayList localStaticLibNames
        end local 2 // java.util.List libsWithOnLoad
        end local 1 // java.util.Collection staticLibNames
        end local 0 // com.oracle.svm.jni.JNILibraryInitializer this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   15     0                 this  Lcom/oracle/svm/jni/JNILibraryInitializer;
            0   15     1       staticLibNames  Ljava/util/Collection<Ljava/lang/String;>;
            4   15     2       libsWithOnLoad  Ljava/util/List<Ljava/lang/String;>;
            5   15     3  localStaticLibNames  Ljava/util/ArrayList<Ljava/lang/String;>;
            7   15     4         mapIsChanged  Z
            9   13     5              libName  Ljava/lang/String;
           11   13     7    onLoadCGlobalData  Lcom/oracle/svm/core/c/CGlobalData<Lorg/graalvm/word/PointerBase;>;
    Signature: (Ljava/util/Collection<Ljava/lang/String;>;)Z
    MethodParameters:
                Name  Flags
      staticLibNames  

  public boolean isBuiltinLibrary(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // com.oracle.svm.jni.JNILibraryInitializer this
        start local 1 // java.lang.String libName
         0: .line 104
            invokestatic com.oracle.svm.core.jdk.PlatformNativeLibrarySupport.singleton:()Lcom/oracle/svm/core/jdk/PlatformNativeLibrarySupport;
            aload 1 /* libName */
            invokevirtual com.oracle.svm.core.jdk.PlatformNativeLibrarySupport.isBuiltinLibrary:(Ljava/lang/String;)Z
            ifeq 2
         1: .line 105
            iconst_1
            ireturn
         2: .line 107
      StackMap locals:
      StackMap stack:
            aload 1 /* libName */
            iconst_1
            invokestatic com.oracle.svm.jni.JNILibraryInitializer.getOnLoadName:(Ljava/lang/String;Z)Ljava/lang/String;
            astore 2 /* onLoadName */
        start local 2 // java.lang.String onLoadName
         3: .line 108
            invokestatic com.oracle.svm.core.jdk.PlatformNativeLibrarySupport.singleton:()Lcom/oracle/svm/core/jdk/PlatformNativeLibrarySupport;
            aload 2 /* onLoadName */
            invokevirtual com.oracle.svm.core.jdk.PlatformNativeLibrarySupport.findBuiltinSymbol:(Ljava/lang/String;)Lorg/graalvm/word/PointerBase;
            astore 3 /* onLoad */
        start local 3 // org.graalvm.word.PointerBase onLoad
         4: .line 109
            aload 3 /* onLoad */
            invokeinterface org.graalvm.word.PointerBase.isNonNull:()Z
            ireturn
        end local 3 // org.graalvm.word.PointerBase onLoad
        end local 2 // java.lang.String onLoadName
        end local 1 // java.lang.String libName
        end local 0 // com.oracle.svm.jni.JNILibraryInitializer this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    5     0        this  Lcom/oracle/svm/jni/JNILibraryInitializer;
            0    5     1     libName  Ljava/lang/String;
            3    5     2  onLoadName  Ljava/lang/String;
            4    5     3      onLoad  Lorg/graalvm/word/PointerBase;
    MethodParameters:
         Name  Flags
      libName  

  public void initialize(com.oracle.svm.core.jdk.PlatformNativeLibrarySupport$NativeLibrary);
    descriptor: (Lcom/oracle/svm/core/jdk/PlatformNativeLibrarySupport$NativeLibrary;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // com.oracle.svm.jni.JNILibraryInitializer this
        start local 1 // com.oracle.svm.core.jdk.PlatformNativeLibrarySupport$NativeLibrary lib
         0: .line 114
            aload 1 /* lib */
            invokeinterface com.oracle.svm.core.jdk.PlatformNativeLibrarySupport$NativeLibrary.getCanonicalIdentifier:()Ljava/lang/String;
            astore 2 /* libName */
        start local 2 // java.lang.String libName
         1: .line 116
            aload 1 /* lib */
            invokeinterface com.oracle.svm.core.jdk.PlatformNativeLibrarySupport$NativeLibrary.isBuiltin:()Z
            ifeq 7
         2: .line 117
            aload 0 /* this */
            aload 2 /* libName */
            invokevirtual com.oracle.svm.jni.JNILibraryInitializer.getOnLoadSymbolAddress:(Ljava/lang/String;)Lorg/graalvm/word/PointerBase;
            astore 3 /* onLoadFunction */
        start local 3 // org.graalvm.word.PointerBase onLoadFunction
         3: .line 118
            aload 3 /* onLoadFunction */
            invokeinterface org.graalvm.word.PointerBase.isNull:()Z
            ifeq 9
         4: .line 122
            aload 2 /* libName */
            iconst_1
            invokestatic com.oracle.svm.jni.JNILibraryInitializer.getOnLoadName:(Ljava/lang/String;Z)Ljava/lang/String;
            astore 4 /* symbolName */
        start local 4 // java.lang.String symbolName
         5: .line 123
            aload 1 /* lib */
            aload 4 /* symbolName */
            invokeinterface com.oracle.svm.core.jdk.PlatformNativeLibrarySupport$NativeLibrary.findSymbol:(Ljava/lang/String;)Lorg/graalvm/word/PointerBase;
            astore 3 /* onLoadFunction */
        end local 4 // java.lang.String symbolName
         6: .line 125
            goto 9
        end local 3 // org.graalvm.word.PointerBase onLoadFunction
         7: .line 126
      StackMap locals: java.lang.String
      StackMap stack:
            aload 2 /* libName */
            iconst_0
            invokestatic com.oracle.svm.jni.JNILibraryInitializer.getOnLoadName:(Ljava/lang/String;Z)Ljava/lang/String;
            astore 4 /* symbolName */
        start local 4 // java.lang.String symbolName
         8: .line 127
            aload 1 /* lib */
            aload 4 /* symbolName */
            invokeinterface com.oracle.svm.core.jdk.PlatformNativeLibrarySupport$NativeLibrary.findSymbol:(Ljava/lang/String;)Lorg/graalvm/word/PointerBase;
            astore 3 /* onLoadFunction */
        end local 4 // java.lang.String symbolName
        start local 3 // org.graalvm.word.PointerBase onLoadFunction
         9: .line 129
      StackMap locals: org.graalvm.word.PointerBase
      StackMap stack:
            aload 2 /* libName */
            aload 3 /* onLoadFunction */
            invokestatic com.oracle.svm.jni.JNILibraryInitializer.callOnLoadFunction:(Ljava/lang/String;Lorg/graalvm/word/PointerBase;)V
        10: .line 130
            return
        end local 3 // org.graalvm.word.PointerBase onLoadFunction
        end local 2 // java.lang.String libName
        end local 1 // com.oracle.svm.core.jdk.PlatformNativeLibrarySupport$NativeLibrary lib
        end local 0 // com.oracle.svm.jni.JNILibraryInitializer this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   11     0            this  Lcom/oracle/svm/jni/JNILibraryInitializer;
            0   11     1             lib  Lcom/oracle/svm/core/jdk/PlatformNativeLibrarySupport$NativeLibrary;
            1   11     2         libName  Ljava/lang/String;
            3    7     3  onLoadFunction  Lorg/graalvm/word/PointerBase;
            9   11     3  onLoadFunction  Lorg/graalvm/word/PointerBase;
            5    6     4      symbolName  Ljava/lang/String;
            8    9     4      symbolName  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      lib   

  private org.graalvm.word.PointerBase getOnLoadSymbolAddress(java.lang.String);
    descriptor: (Ljava/lang/String;)Lorg/graalvm/word/PointerBase;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.oracle.svm.jni.JNILibraryInitializer this
        start local 1 // java.lang.String libName
         0: .line 133
            aload 0 /* this */
            getfield com.oracle.svm.jni.JNILibraryInitializer.onLoadCGlobalDataMap:Lorg/graalvm/collections/EconomicMap;
            aload 1 /* libName */
            invokeinterface org.graalvm.collections.EconomicMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.svm.core.c.CGlobalData
            astore 2 /* symbol */
        start local 2 // com.oracle.svm.core.c.CGlobalData symbol
         1: .line 134
            aload 2 /* symbol */
            ifnonnull 2
            invokestatic org.graalvm.word.WordFactory.nullPointer:()Lorg/graalvm/word/PointerBase;
            goto 3
      StackMap locals: com.oracle.svm.core.c.CGlobalData
      StackMap stack:
         2: aload 2 /* symbol */
            invokevirtual com.oracle.svm.core.c.CGlobalData.get:()Lorg/graalvm/word/PointerBase;
      StackMap locals:
      StackMap stack: org.graalvm.word.PointerBase
         3: areturn
        end local 2 // com.oracle.svm.core.c.CGlobalData symbol
        end local 1 // java.lang.String libName
        end local 0 // com.oracle.svm.jni.JNILibraryInitializer this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lcom/oracle/svm/jni/JNILibraryInitializer;
            0    4     1  libName  Ljava/lang/String;
            1    4     2   symbol  Lcom/oracle/svm/core/c/CGlobalData<Lorg/graalvm/word/PointerBase;>;
    MethodParameters:
         Name  Flags
      libName  
}
SourceFile: "JNILibraryInitializer.java"
InnerClasses:
  public abstract LibraryInitializer = com.oracle.svm.core.jdk.NativeLibrarySupport$LibraryInitializer of com.oracle.svm.core.jdk.NativeLibrarySupport
  public abstract NativeLibrary = com.oracle.svm.core.jdk.PlatformNativeLibrarySupport$NativeLibrary of com.oracle.svm.core.jdk.PlatformNativeLibrarySupport