final class com.oracle.svm.truffle.nfi.windows.WindowsTruffleNFISupport extends com.oracle.svm.truffle.nfi.TruffleNFISupport
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.oracle.svm.truffle.nfi.windows.WindowsTruffleNFISupport
  super_class: com.oracle.svm.truffle.nfi.TruffleNFISupport
{
  static void initialize();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 59
            ldc Lcom/oracle/svm/truffle/nfi/TruffleNFISupport;
            new com.oracle.svm.truffle.nfi.windows.WindowsTruffleNFISupport
            dup
            invokespecial com.oracle.svm.truffle.nfi.windows.WindowsTruffleNFISupport.<init>:()V
            invokestatic org.graalvm.nativeimage.ImageSingletons.add:(Ljava/lang/Class;Ljava/lang/Object;)V
         1: .line 60
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.svm.truffle.nfi.windows.WindowsTruffleNFISupport this
         0: .line 63
            aload 0 /* this */
            ldc "_errno"
            invokespecial com.oracle.svm.truffle.nfi.TruffleNFISupport.<init>:(Ljava/lang/String;)V
         1: .line 64
            return
        end local 0 // com.oracle.svm.truffle.nfi.windows.WindowsTruffleNFISupport this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/svm/truffle/nfi/windows/WindowsTruffleNFISupport;

  protected org.graalvm.nativeimage.c.type.CCharPointer strdupImpl(org.graalvm.nativeimage.c.type.CCharPointer);
    descriptor: (Lorg/graalvm/nativeimage/c/type/CCharPointer;)Lorg/graalvm/nativeimage/c/type/CCharPointer;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // com.oracle.svm.truffle.nfi.windows.WindowsTruffleNFISupport this
        start local 1 // org.graalvm.nativeimage.c.type.CCharPointer src
         0: .line 68
            aload 1 /* src */
            invokestatic com.oracle.svm.core.windows.headers.LibC.strdup:(Lorg/graalvm/nativeimage/c/type/CCharPointer;)Lorg/graalvm/nativeimage/c/type/CCharPointer;
            areturn
        end local 1 // org.graalvm.nativeimage.c.type.CCharPointer src
        end local 0 // com.oracle.svm.truffle.nfi.windows.WindowsTruffleNFISupport this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/svm/truffle/nfi/windows/WindowsTruffleNFISupport;
            0    1     1   src  Lorg/graalvm/nativeimage/c/type/CCharPointer;
    MethodParameters:
      Name  Flags
      src   

  protected long loadLibraryImpl(long, java.lang.String, int);
    descriptor: (JLjava/lang/String;I)J
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=9, args_size=4
        start local 0 // com.oracle.svm.truffle.nfi.windows.WindowsTruffleNFISupport this
        start local 1 // long nativeContext
        start local 3 // java.lang.String name
        start local 4 // int flags
         0: .line 73
            aload 3 /* name */
            astore 5 /* dllPath */
        start local 5 // java.lang.String dllPath
         1: .line 74
            aload 5 /* dllPath */
            invokestatic org.graalvm.nativeimage.c.type.CTypeConversion.toCString:(Ljava/lang/CharSequence;)Lorg/graalvm/nativeimage/c/type/CTypeConversion$CCharPointerHolder;
            astore 6 /* dllpathPin */
        start local 6 // org.graalvm.nativeimage.c.type.CTypeConversion$CCharPointerHolder dllpathPin
         2: .line 75
            aload 6 /* dllpathPin */
            invokeinterface org.graalvm.nativeimage.c.type.CTypeConversion$CCharPointerHolder.get:()Lorg/graalvm/nativeimage/c/type/CCharPointer;
            astore 7 /* dllPathPtr */
        start local 7 // org.graalvm.nativeimage.c.type.CCharPointer dllPathPtr
         3: .line 80
            aload 7 /* dllPathPtr */
            invokestatic com.oracle.svm.core.windows.headers.WinBase.LoadLibraryA:(Lorg/graalvm/word/PointerBase;)Lcom/oracle/svm/core/windows/headers/WinBase$HMODULE;
            astore 8 /* dlhandle */
        start local 8 // com.oracle.svm.core.windows.headers.WinBase$HMODULE dlhandle
         4: .line 81
            aload 8 /* dlhandle */
            invokeinterface com.oracle.svm.core.windows.headers.WinBase$HMODULE.isNull:()Z
            ifeq 7
         5: .line 82
            invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreter:()V
         6: .line 83
            new com.oracle.svm.truffle.nfi.Target_com_oracle_truffle_nfi_impl_NFIUnsatisfiedLinkError
            dup
            aload 5 /* dllPath */
            invokestatic com.oracle.svm.core.windows.WindowsUtils.lastErrorString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial com.oracle.svm.truffle.nfi.Target_com_oracle_truffle_nfi_impl_NFIUnsatisfiedLinkError.<init>:(Ljava/lang/String;)V
            ldc Ljava/lang/RuntimeException;
            invokestatic com.oracle.svm.core.snippets.KnownIntrinsics.convertUnknownValue:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
            checkcast java.lang.RuntimeException
            athrow
         7: .line 85
      StackMap locals: com.oracle.svm.truffle.nfi.windows.WindowsTruffleNFISupport long java.lang.String int java.lang.String org.graalvm.nativeimage.c.type.CTypeConversion$CCharPointerHolder org.graalvm.nativeimage.c.type.CCharPointer com.oracle.svm.core.windows.headers.WinBase$HMODULE
      StackMap stack:
            aload 8 /* dlhandle */
            invokeinterface com.oracle.svm.core.windows.headers.WinBase$HMODULE.rawValue:()J
            lreturn
        end local 8 // com.oracle.svm.core.windows.headers.WinBase$HMODULE dlhandle
        end local 7 // org.graalvm.nativeimage.c.type.CCharPointer dllPathPtr
        end local 6 // org.graalvm.nativeimage.c.type.CTypeConversion$CCharPointerHolder dllpathPin
        end local 5 // java.lang.String dllPath
        end local 4 // int flags
        end local 3 // java.lang.String name
        end local 1 // long nativeContext
        end local 0 // com.oracle.svm.truffle.nfi.windows.WindowsTruffleNFISupport this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    8     0           this  Lcom/oracle/svm/truffle/nfi/windows/WindowsTruffleNFISupport;
            0    8     1  nativeContext  J
            0    8     3           name  Ljava/lang/String;
            0    8     4          flags  I
            1    8     5        dllPath  Ljava/lang/String;
            2    8     6     dllpathPin  Lorg/graalvm/nativeimage/c/type/CTypeConversion$CCharPointerHolder;
            3    8     7     dllPathPtr  Lorg/graalvm/nativeimage/c/type/CCharPointer;
            4    8     8       dlhandle  Lcom/oracle/svm/core/windows/headers/WinBase$HMODULE;
    MethodParameters:
               Name  Flags
      nativeContext  
      name           
      flags          

  protected void freeLibraryImpl(long);
    descriptor: (J)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.oracle.svm.truffle.nfi.windows.WindowsTruffleNFISupport this
        start local 1 // long library
         0: .line 90
            lload 1 /* library */
            invokestatic org.graalvm.word.WordFactory.pointer:(J)Lorg/graalvm/word/PointerBase;
            invokestatic com.oracle.svm.core.windows.headers.WinBase.FreeLibrary:(Lorg/graalvm/word/PointerBase;)V
         1: .line 91
            return
        end local 1 // long library
        end local 0 // com.oracle.svm.truffle.nfi.windows.WindowsTruffleNFISupport this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lcom/oracle/svm/truffle/nfi/windows/WindowsTruffleNFISupport;
            0    2     1  library  J
    MethodParameters:
         Name  Flags
      library  

  protected long lookupImpl(long, long, java.lang.String);
    descriptor: (JJLjava/lang/String;)J
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=11, args_size=4
        start local 0 // com.oracle.svm.truffle.nfi.windows.WindowsTruffleNFISupport this
        start local 1 // long nativeContext
        start local 3 // long library
        start local 5 // java.lang.String name
         0: .line 97
            invokestatic com.oracle.svm.core.jdk.PlatformNativeLibrarySupport.singleton:()Lcom/oracle/svm/core/jdk/PlatformNativeLibrarySupport;
            astore 6 /* nativeLibrarySupport */
        start local 6 // com.oracle.svm.core.jdk.PlatformNativeLibrarySupport nativeLibrarySupport
         1: .line 100
            lload 3 /* library */
            lconst_0
            lcmp
            ifne 4
         2: .line 101
            aload 6 /* nativeLibrarySupport */
            aload 5 /* name */
            invokevirtual com.oracle.svm.core.jdk.PlatformNativeLibrarySupport.findBuiltinSymbol:(Ljava/lang/String;)Lorg/graalvm/word/PointerBase;
            astore 7 /* ret */
        start local 7 // org.graalvm.word.PointerBase ret
         3: .line 102
            goto 13
        end local 7 // org.graalvm.word.PointerBase ret
         4: .line 103
      StackMap locals: com.oracle.svm.core.jdk.PlatformNativeLibrarySupport
      StackMap stack:
            aconst_null
            astore 8
            aconst_null
            astore 9
         5: aload 5 /* name */
            invokestatic org.graalvm.nativeimage.c.type.CTypeConversion.toCString:(Ljava/lang/CharSequence;)Lorg/graalvm/nativeimage/c/type/CTypeConversion$CCharPointerHolder;
            astore 10 /* symbol */
        start local 10 // org.graalvm.nativeimage.c.type.CTypeConversion$CCharPointerHolder symbol
         6: .line 104
            lload 3 /* library */
            invokestatic org.graalvm.word.WordFactory.pointer:(J)Lorg/graalvm/word/PointerBase;
            checkcast com.oracle.svm.core.windows.headers.WinBase$HMODULE
            aload 10 /* symbol */
            invokeinterface org.graalvm.nativeimage.c.type.CTypeConversion$CCharPointerHolder.get:()Lorg/graalvm/nativeimage/c/type/CCharPointer;
            invokestatic com.oracle.svm.core.windows.headers.WinBase.GetProcAddress:(Lcom/oracle/svm/core/windows/headers/WinBase$HMODULE;Lorg/graalvm/word/PointerBase;)Lorg/graalvm/word/PointerBase;
            astore 7 /* ret */
        start local 7 // org.graalvm.word.PointerBase ret
         7: .line 105
            aload 10 /* symbol */
            ifnull 13
            aload 10 /* symbol */
            invokeinterface org.graalvm.nativeimage.c.type.CTypeConversion$CCharPointerHolder.close:()V
            goto 13
        end local 7 // org.graalvm.word.PointerBase ret
      StackMap locals: com.oracle.svm.truffle.nfi.windows.WindowsTruffleNFISupport long long java.lang.String com.oracle.svm.core.jdk.PlatformNativeLibrarySupport top java.lang.Throwable java.lang.Throwable org.graalvm.nativeimage.c.type.CTypeConversion$CCharPointerHolder
      StackMap stack: java.lang.Throwable
         8: astore 8
            aload 10 /* symbol */
            ifnull 9
            aload 10 /* symbol */
            invokeinterface org.graalvm.nativeimage.c.type.CTypeConversion$CCharPointerHolder.close:()V
        end local 10 // org.graalvm.nativeimage.c.type.CTypeConversion$CCharPointerHolder symbol
      StackMap locals:
      StackMap stack:
         9: aload 8
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        10: astore 9
            aload 8
            ifnonnull 11
            aload 9
            astore 8
            goto 12
      StackMap locals:
      StackMap stack:
        11: aload 8
            aload 9
            if_acmpeq 12
            aload 8
            aload 9
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        12: aload 8
            athrow
        start local 7 // org.graalvm.word.PointerBase ret
        13: .line 108
      StackMap locals: com.oracle.svm.truffle.nfi.windows.WindowsTruffleNFISupport long long java.lang.String com.oracle.svm.core.jdk.PlatformNativeLibrarySupport org.graalvm.word.PointerBase
      StackMap stack:
            aload 7 /* ret */
            invokeinterface org.graalvm.word.PointerBase.isNull:()Z
            ifeq 16
        14: .line 109
            invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreter:()V
        15: .line 110
            new com.oracle.svm.truffle.nfi.Target_com_oracle_truffle_nfi_impl_NFIUnsatisfiedLinkError
            dup
            aload 5 /* name */
            invokestatic com.oracle.svm.core.windows.WindowsUtils.lastErrorString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial com.oracle.svm.truffle.nfi.Target_com_oracle_truffle_nfi_impl_NFIUnsatisfiedLinkError.<init>:(Ljava/lang/String;)V
            ldc Ljava/lang/RuntimeException;
            invokestatic com.oracle.svm.core.snippets.KnownIntrinsics.convertUnknownValue:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
            checkcast java.lang.RuntimeException
            athrow
        16: .line 112
      StackMap locals:
      StackMap stack:
            aload 7 /* ret */
            invokeinterface org.graalvm.word.PointerBase.rawValue:()J
            lreturn
        end local 7 // org.graalvm.word.PointerBase ret
        end local 6 // com.oracle.svm.core.jdk.PlatformNativeLibrarySupport nativeLibrarySupport
        end local 5 // java.lang.String name
        end local 3 // long library
        end local 1 // long nativeContext
        end local 0 // com.oracle.svm.truffle.nfi.windows.WindowsTruffleNFISupport this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   17     0                  this  Lcom/oracle/svm/truffle/nfi/windows/WindowsTruffleNFISupport;
            0   17     1         nativeContext  J
            0   17     3               library  J
            0   17     5                  name  Ljava/lang/String;
            1   17     6  nativeLibrarySupport  Lcom/oracle/svm/core/jdk/PlatformNativeLibrarySupport;
            3    4     7                   ret  Lorg/graalvm/word/PointerBase;
            7    8     7                   ret  Lorg/graalvm/word/PointerBase;
           13   17     7                   ret  Lorg/graalvm/word/PointerBase;
            6    9    10                symbol  Lorg/graalvm/nativeimage/c/type/CTypeConversion$CCharPointerHolder;
      Exception table:
        from    to  target  type
           6     7       8  any
           5    10      10  any
    MethodParameters:
               Name  Flags
      nativeContext  
      library        
      name           
}
SourceFile: "WindowsTruffleNFIFeature.java"
InnerClasses:
  public abstract HMODULE = com.oracle.svm.core.windows.headers.WinBase$HMODULE of com.oracle.svm.core.windows.headers.WinBase
  public abstract CCharPointerHolder = org.graalvm.nativeimage.c.type.CTypeConversion$CCharPointerHolder of org.graalvm.nativeimage.c.type.CTypeConversion