class com.oracle.svm.truffle.nfi.NativeSignature$ExecuteHelper
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.oracle.svm.truffle.nfi.NativeSignature$ExecuteHelper
  super_class: java.lang.Object
{
  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.svm.truffle.nfi.NativeSignature$ExecuteHelper this
         0: .line 93
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // com.oracle.svm.truffle.nfi.NativeSignature$ExecuteHelper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/svm/truffle/nfi/NativeSignature$ExecuteHelper;

  static int alignUp(int, int);
    descriptor: (II)I
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // int index
        start local 1 // int alignment
         0: .line 96
            iload 0 /* index */
            istore 2 /* ret */
        start local 2 // int ret
         1: .line 97
            iload 2 /* ret */
            iload 1 /* alignment */
            irem
            ifeq 3
         2: .line 98
            iload 2 /* ret */
            iload 1 /* alignment */
            iload 2 /* ret */
            iload 1 /* alignment */
            irem
            isub
            iadd
            istore 2 /* ret */
         3: .line 100
      StackMap locals: int
      StackMap stack:
            iload 2 /* ret */
            ireturn
        end local 2 // int ret
        end local 1 // int alignment
        end local 0 // int index
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0      index  I
            0    4     1  alignment  I
            1    4     2        ret  I
    MethodParameters:
           Name  Flags
      index      
      alignment  

  static void execute(com.oracle.svm.truffle.nfi.NativeAPI$NativeTruffleContext, com.oracle.svm.truffle.nfi.libffi.LibFFI$ffi_cif, org.graalvm.word.PointerBase, long, byte[], int, int[], java.lang.Object[], com.oracle.svm.truffle.nfi.LocalNativeScope);
    descriptor: (Lcom/oracle/svm/truffle/nfi/NativeAPI$NativeTruffleContext;Lcom/oracle/svm/truffle/nfi/libffi/LibFFI$ffi_cif;Lorg/graalvm/word/PointerBase;J[BI[I[Ljava/lang/Object;Lcom/oracle/svm/truffle/nfi/LocalNativeScope;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=24, args_size=9
        start local 0 // com.oracle.svm.truffle.nfi.NativeAPI$NativeTruffleContext ctx
        start local 1 // com.oracle.svm.truffle.nfi.libffi.LibFFI$ffi_cif cif
        start local 2 // org.graalvm.word.PointerBase ret
        start local 3 // long functionPointer
        start local 5 // byte[] primArgs
        start local 6 // int patchCount
        start local 7 // int[] patchOffsets
        start local 8 // java.lang.Object[] objArgs
        start local 9 // com.oracle.svm.truffle.nfi.LocalNativeScope scope
         0: .line 106
            aload 1 /* cif */
            invokeinterface com.oracle.svm.truffle.nfi.libffi.LibFFI$ffi_cif.nargs:()I
            istore 10 /* nargs */
        start local 10 // int nargs
         1: .line 107
            iload 10 /* nargs */
            ldc Lorg/graalvm/nativeimage/c/type/WordPointer;
            invokestatic org.graalvm.nativeimage.c.struct.SizeOf.get:(Ljava/lang/Class;)I
            imul
            invokestatic org.graalvm.nativeimage.UnmanagedMemory.malloc:(I)Lorg/graalvm/word/PointerBase;
            checkcast org.graalvm.nativeimage.c.type.WordPointer
            astore 11 /* argPtrs */
        start local 11 // org.graalvm.nativeimage.c.type.WordPointer argPtrs
         2: .line 110
            ldc Lcom/oracle/svm/truffle/nfi/NativeAPI$NativeTruffleEnv;
            invokestatic org.graalvm.nativeimage.StackValue.get:(Ljava/lang/Class;)Lorg/graalvm/word/PointerBase;
            checkcast com.oracle.svm.truffle.nfi.NativeAPI$NativeTruffleEnv
            astore 12 /* env */
        start local 12 // com.oracle.svm.truffle.nfi.NativeAPI$NativeTruffleEnv env
         3: .line 111
            aload 12 /* env */
            aload 0 /* ctx */
            invokestatic com.oracle.svm.truffle.nfi.NFIInitialization.initializeEnv:(Lcom/oracle/svm/truffle/nfi/NativeAPI$NativeTruffleEnv;Lcom/oracle/svm/truffle/nfi/NativeAPI$NativeTruffleContext;)V
         4: .line 113
            aconst_null
            astore 13
            aconst_null
            astore 14
         5: aload 5 /* primArgs */
            invokestatic org.graalvm.nativeimage.PinnedObject.create:(Ljava/lang/Object;)Lorg/graalvm/nativeimage/PinnedObject;
            astore 15 /* primBuffer */
        start local 15 // org.graalvm.nativeimage.PinnedObject primBuffer
         6: .line 114
            aload 15 /* primBuffer */
            iconst_0
            invokeinterface org.graalvm.nativeimage.PinnedObject.addressOfArrayElement:(I)Lorg/graalvm/word/PointerBase;
            checkcast org.graalvm.word.Pointer
            astore 16 /* prim */
        start local 16 // org.graalvm.word.Pointer prim
         7: .line 116
            iconst_0
            istore 17 /* primIdx */
        start local 17 // int primIdx
         8: .line 117
            iconst_0
            istore 18 /* i */
        start local 18 // int i
         9: goto 15
        10: .line 118
      StackMap locals: com.oracle.svm.truffle.nfi.NativeAPI$NativeTruffleContext com.oracle.svm.truffle.nfi.libffi.LibFFI$ffi_cif org.graalvm.word.PointerBase long byte[] int int[] java.lang.Object[] com.oracle.svm.truffle.nfi.LocalNativeScope int org.graalvm.nativeimage.c.type.WordPointer com.oracle.svm.truffle.nfi.NativeAPI$NativeTruffleEnv java.lang.Throwable java.lang.Throwable org.graalvm.nativeimage.PinnedObject org.graalvm.word.Pointer int int
      StackMap stack:
            aload 1 /* cif */
            invokeinterface com.oracle.svm.truffle.nfi.libffi.LibFFI$ffi_cif.arg_types:()Lcom/oracle/svm/truffle/nfi/libffi/LibFFI$ffi_type_array;
            iload 18 /* i */
            invokeinterface com.oracle.svm.truffle.nfi.libffi.LibFFI$ffi_type_array.read:(I)Lcom/oracle/svm/truffle/nfi/libffi/LibFFI$ffi_type;
            astore 19 /* type */
        start local 19 // com.oracle.svm.truffle.nfi.libffi.LibFFI$ffi_type type
        11: .line 119
            iload 17 /* primIdx */
            aload 19 /* type */
            invokeinterface com.oracle.svm.truffle.nfi.libffi.LibFFI$ffi_type.alignment:()S
            invokestatic com.oracle.svm.truffle.nfi.NativeSignature$ExecuteHelper.alignUp:(II)I
            istore 17 /* primIdx */
        12: .line 120
            aload 11 /* argPtrs */
            iload 18 /* i */
            aload 16 /* prim */
            iload 17 /* primIdx */
            invokeinterface org.graalvm.word.Pointer.add:(I)Lorg/graalvm/word/Pointer;
            invokeinterface org.graalvm.nativeimage.c.type.WordPointer.write:(ILorg/graalvm/word/WordBase;)V
        13: .line 121
            iload 17 /* primIdx */
            i2l
            aload 19 /* type */
            invokeinterface com.oracle.svm.truffle.nfi.libffi.LibFFI$ffi_type.size:()Lorg/graalvm/word/UnsignedWord;
            invokeinterface org.graalvm.word.UnsignedWord.rawValue:()J
            ladd
            l2i
            istore 17 /* primIdx */
        end local 19 // com.oracle.svm.truffle.nfi.libffi.LibFFI$ffi_type type
        14: .line 117
            iinc 18 /* i */ 1
      StackMap locals:
      StackMap stack:
        15: iload 18 /* i */
            iload 10 /* nargs */
            if_icmplt 10
        end local 18 // int i
        16: .line 124
            iconst_0
            istore 18 /* i */
        start local 18 // int i
        17: goto 36
        18: .line 125
      StackMap locals:
      StackMap stack:
            aload 7 /* patchOffsets */
            iload 18 /* i */
            iaload
            invokestatic com.oracle.svm.truffle.nfi.Target_com_oracle_truffle_nfi_impl_NativeArgumentBuffer_TypeTag.getTag:(I)Lcom/oracle/svm/truffle/nfi/Target_com_oracle_truffle_nfi_impl_NativeArgumentBuffer_TypeTag;
            astore 19 /* tag */
        start local 19 // com.oracle.svm.truffle.nfi.Target_com_oracle_truffle_nfi_impl_NativeArgumentBuffer_TypeTag tag
        19: .line 126
            aload 7 /* patchOffsets */
            iload 18 /* i */
            iaload
            invokestatic com.oracle.svm.truffle.nfi.Target_com_oracle_truffle_nfi_impl_NativeArgumentBuffer_TypeTag.getOffset:(I)I
            istore 20 /* offset */
        start local 20 // int offset
        20: .line 127
            aload 8 /* objArgs */
            iload 18 /* i */
            aaload
            astore 21 /* obj */
        start local 21 // java.lang.Object obj
        21: .line 129
            aload 19 /* tag */
            getstatic com.oracle.svm.truffle.nfi.Target_com_oracle_truffle_nfi_impl_NativeArgumentBuffer_TypeTag.OBJECT:Lcom/oracle/svm/truffle/nfi/Target_com_oracle_truffle_nfi_impl_NativeArgumentBuffer_TypeTag;
            if_acmpne 25
        22: .line 130
            aload 9 /* scope */
            aload 21 /* obj */
            invokevirtual com.oracle.svm.truffle.nfi.LocalNativeScope.createLocalHandle:(Ljava/lang/Object;)Lcom/oracle/svm/truffle/nfi/TruffleObjectHandle;
            astore 22 /* handle */
        start local 22 // org.graalvm.word.WordBase handle
        23: .line 131
            aload 16 /* prim */
            iload 20 /* offset */
            aload 22 /* handle */
            invokeinterface org.graalvm.word.Pointer.writeWord:(ILorg/graalvm/word/WordBase;)V
        end local 22 // org.graalvm.word.WordBase handle
        24: .line 132
            goto 35
      StackMap locals: com.oracle.svm.truffle.nfi.Target_com_oracle_truffle_nfi_impl_NativeArgumentBuffer_TypeTag int java.lang.Object
      StackMap stack:
        25: aload 19 /* tag */
            getstatic com.oracle.svm.truffle.nfi.Target_com_oracle_truffle_nfi_impl_NativeArgumentBuffer_TypeTag.STRING:Lcom/oracle/svm/truffle/nfi/Target_com_oracle_truffle_nfi_impl_NativeArgumentBuffer_TypeTag;
            if_acmpne 29
        26: .line 133
            aload 9 /* scope */
            aload 21 /* obj */
            checkcast java.lang.String
            invokevirtual com.oracle.svm.truffle.nfi.LocalNativeScope.pinString:(Ljava/lang/String;)Lorg/graalvm/word/PointerBase;
            astore 22 /* strPtr */
        start local 22 // org.graalvm.word.PointerBase strPtr
        27: .line 134
            aload 16 /* prim */
            iload 20 /* offset */
            aload 22 /* strPtr */
            invokeinterface org.graalvm.word.Pointer.writeWord:(ILorg/graalvm/word/WordBase;)V
        end local 22 // org.graalvm.word.PointerBase strPtr
        28: .line 135
            goto 35
      StackMap locals:
      StackMap stack:
        29: aload 19 /* tag */
            getstatic com.oracle.svm.truffle.nfi.Target_com_oracle_truffle_nfi_impl_NativeArgumentBuffer_TypeTag.KEEPALIVE:Lcom/oracle/svm/truffle/nfi/Target_com_oracle_truffle_nfi_impl_NativeArgumentBuffer_TypeTag;
            if_acmpeq 35
        30: .line 137
            aload 19 /* tag */
            getstatic com.oracle.svm.truffle.nfi.Target_com_oracle_truffle_nfi_impl_NativeArgumentBuffer_TypeTag.ENV:Lcom/oracle/svm/truffle/nfi/Target_com_oracle_truffle_nfi_impl_NativeArgumentBuffer_TypeTag;
            if_acmpne 33
        31: .line 138
            aload 16 /* prim */
            iload 20 /* offset */
            aload 12 /* env */
            invokeinterface org.graalvm.word.Pointer.writeWord:(ILorg/graalvm/word/WordBase;)V
        32: .line 139
            goto 35
        33: .line 141
      StackMap locals:
      StackMap stack:
            aload 9 /* scope */
            aload 21 /* obj */
            invokevirtual com.oracle.svm.truffle.nfi.LocalNativeScope.pinArray:(Ljava/lang/Object;)Lorg/graalvm/word/PointerBase;
            astore 22 /* arrPtr */
        start local 22 // org.graalvm.word.PointerBase arrPtr
        34: .line 142
            aload 16 /* prim */
            iload 20 /* offset */
            aload 22 /* arrPtr */
            invokeinterface org.graalvm.word.Pointer.writeWord:(ILorg/graalvm/word/WordBase;)V
        end local 22 // org.graalvm.word.PointerBase arrPtr
        end local 21 // java.lang.Object obj
        end local 20 // int offset
        end local 19 // com.oracle.svm.truffle.nfi.Target_com_oracle_truffle_nfi_impl_NativeArgumentBuffer_TypeTag tag
        35: .line 124
      StackMap locals:
      StackMap stack:
            iinc 18 /* i */ 1
      StackMap locals:
      StackMap stack:
        36: iload 18 /* i */
            iload 6 /* patchCount */
            if_icmplt 18
        end local 18 // int i
        37: .line 146
            aload 1 /* cif */
            lload 3 /* functionPointer */
            invokestatic org.graalvm.word.WordFactory.pointer:(J)Lorg/graalvm/word/PointerBase;
            aload 2 /* ret */
            aload 11 /* argPtrs */
            getstatic com.oracle.svm.truffle.nfi.ErrnoMirror.errnoMirror:Lcom/oracle/svm/core/threadlocal/FastThreadLocalBytes;
            invokevirtual com.oracle.svm.core.threadlocal.FastThreadLocalBytes.getAddress:()Lorg/graalvm/word/PointerBase;
            checkcast org.graalvm.nativeimage.c.type.CIntPointer
            invokestatic com.oracle.svm.truffle.nfi.NativeSignature$ExecuteHelper.ffiCall:(Lcom/oracle/svm/truffle/nfi/libffi/LibFFI$ffi_cif;Lorg/graalvm/word/PointerBase;Lorg/graalvm/word/PointerBase;Lorg/graalvm/nativeimage/c/type/WordPointer;Lorg/graalvm/nativeimage/c/type/CIntPointer;)V
        38: .line 148
            getstatic com.oracle.svm.truffle.nfi.NativeClosure.pendingException:Lcom/oracle/svm/core/threadlocal/FastThreadLocalObject;
            invokevirtual com.oracle.svm.core.threadlocal.FastThreadLocalObject.get:()Ljava/lang/Object;
            checkcast java.lang.Throwable
            astore 18 /* pending */
        start local 18 // java.lang.Throwable pending
        39: .line 149
            aload 18 /* pending */
            ifnull 42
        40: .line 150
            getstatic com.oracle.svm.truffle.nfi.NativeClosure.pendingException:Lcom/oracle/svm/core/threadlocal/FastThreadLocalObject;
            aconst_null
            invokevirtual com.oracle.svm.core.threadlocal.FastThreadLocalObject.set:(Ljava/lang/Object;)V
        41: .line 151
            aload 18 /* pending */
            invokestatic com.oracle.svm.truffle.nfi.NativeSignature.rethrow:(Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
            athrow
        end local 18 // java.lang.Throwable pending
        end local 17 // int primIdx
        end local 16 // org.graalvm.word.Pointer prim
        42: .line 153
      StackMap locals:
      StackMap stack:
            aload 15 /* primBuffer */
            ifnull 51
            aload 15 /* primBuffer */
            invokeinterface org.graalvm.nativeimage.PinnedObject.close:()V
            goto 51
      StackMap locals:
      StackMap stack: java.lang.Throwable
        43: astore 13
            aload 15 /* primBuffer */
            ifnull 44
            aload 15 /* primBuffer */
            invokeinterface org.graalvm.nativeimage.PinnedObject.close:()V
        end local 15 // org.graalvm.nativeimage.PinnedObject primBuffer
      StackMap locals:
      StackMap stack:
        44: aload 13
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        45: astore 14
            aload 13
            ifnonnull 46
            aload 14
            astore 13
            goto 47
      StackMap locals:
      StackMap stack:
        46: aload 13
            aload 14
            if_acmpeq 47
            aload 13
            aload 14
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        47: aload 13
            athrow
      StackMap locals: com.oracle.svm.truffle.nfi.NativeAPI$NativeTruffleContext com.oracle.svm.truffle.nfi.libffi.LibFFI$ffi_cif org.graalvm.word.PointerBase long byte[] int int[] java.lang.Object[] com.oracle.svm.truffle.nfi.LocalNativeScope int org.graalvm.nativeimage.c.type.WordPointer com.oracle.svm.truffle.nfi.NativeAPI$NativeTruffleEnv
      StackMap stack: java.lang.Throwable
        48: astore 23
        49: .line 154
            aload 11 /* argPtrs */
            invokestatic org.graalvm.nativeimage.UnmanagedMemory.free:(Lorg/graalvm/word/PointerBase;)V
        50: .line 155
            aload 23
            athrow
        51: .line 154
      StackMap locals:
      StackMap stack:
            aload 11 /* argPtrs */
            invokestatic org.graalvm.nativeimage.UnmanagedMemory.free:(Lorg/graalvm/word/PointerBase;)V
        52: .line 156
            return
        end local 12 // com.oracle.svm.truffle.nfi.NativeAPI$NativeTruffleEnv env
        end local 11 // org.graalvm.nativeimage.c.type.WordPointer argPtrs
        end local 10 // int nargs
        end local 9 // com.oracle.svm.truffle.nfi.LocalNativeScope scope
        end local 8 // java.lang.Object[] objArgs
        end local 7 // int[] patchOffsets
        end local 6 // int patchCount
        end local 5 // byte[] primArgs
        end local 3 // long functionPointer
        end local 2 // org.graalvm.word.PointerBase ret
        end local 1 // com.oracle.svm.truffle.nfi.libffi.LibFFI$ffi_cif cif
        end local 0 // com.oracle.svm.truffle.nfi.NativeAPI$NativeTruffleContext ctx
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   53     0              ctx  Lcom/oracle/svm/truffle/nfi/NativeAPI$NativeTruffleContext;
            0   53     1              cif  Lcom/oracle/svm/truffle/nfi/libffi/LibFFI$ffi_cif;
            0   53     2              ret  Lorg/graalvm/word/PointerBase;
            0   53     3  functionPointer  J
            0   53     5         primArgs  [B
            0   53     6       patchCount  I
            0   53     7     patchOffsets  [I
            0   53     8          objArgs  [Ljava/lang/Object;
            0   53     9            scope  Lcom/oracle/svm/truffle/nfi/LocalNativeScope;
            1   53    10            nargs  I
            2   53    11          argPtrs  Lorg/graalvm/nativeimage/c/type/WordPointer;
            3   53    12              env  Lcom/oracle/svm/truffle/nfi/NativeAPI$NativeTruffleEnv;
            6   44    15       primBuffer  Lorg/graalvm/nativeimage/PinnedObject;
            7   42    16             prim  Lorg/graalvm/word/Pointer;
            8   42    17          primIdx  I
            9   16    18                i  I
           11   14    19             type  Lcom/oracle/svm/truffle/nfi/libffi/LibFFI$ffi_type;
           17   37    18                i  I
           19   35    19              tag  Lcom/oracle/svm/truffle/nfi/Target_com_oracle_truffle_nfi_impl_NativeArgumentBuffer_TypeTag;
           20   35    20           offset  I
           21   35    21              obj  Ljava/lang/Object;
           23   24    22           handle  Lorg/graalvm/word/WordBase;
           27   28    22           strPtr  Lorg/graalvm/word/PointerBase;
           34   35    22           arrPtr  Lorg/graalvm/word/PointerBase;
           39   42    18          pending  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           6    42      43  any
           5    45      45  any
           4    48      48  any
    MethodParameters:
                 Name  Flags
      ctx              
      cif              
      ret              
      functionPointer  
      primArgs         
      patchCount       
      patchOffsets     
      objArgs          
      scope            

  private static void ffiCall(com.oracle.svm.truffle.nfi.libffi.LibFFI$ffi_cif, org.graalvm.word.PointerBase, org.graalvm.word.PointerBase, org.graalvm.nativeimage.c.type.WordPointer, org.graalvm.nativeimage.c.type.CIntPointer);
    descriptor: (Lcom/oracle/svm/truffle/nfi/libffi/LibFFI$ffi_cif;Lorg/graalvm/word/PointerBase;Lorg/graalvm/word/PointerBase;Lorg/graalvm/nativeimage/c/type/WordPointer;Lorg/graalvm/nativeimage/c/type/CIntPointer;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=5
        start local 0 // com.oracle.svm.truffle.nfi.libffi.LibFFI$ffi_cif cif
        start local 1 // org.graalvm.word.PointerBase fn
        start local 2 // org.graalvm.word.PointerBase rvalue
        start local 3 // org.graalvm.nativeimage.c.type.WordPointer avalue
        start local 4 // org.graalvm.nativeimage.c.type.CIntPointer errnoMirror
         0: .line 164
            iconst_3
            invokestatic com.oracle.svm.core.nodes.CFunctionPrologueNode.cFunctionPrologue:(I)V
         1: .line 165
            aload 0 /* cif */
            aload 1 /* fn */
            aload 2 /* rvalue */
            aload 3 /* avalue */
            aload 4 /* errnoMirror */
            invokestatic com.oracle.svm.truffle.nfi.NativeSignature$ExecuteHelper.doFfiCall:(Lcom/oracle/svm/truffle/nfi/libffi/LibFFI$ffi_cif;Lorg/graalvm/word/PointerBase;Lorg/graalvm/word/PointerBase;Lorg/graalvm/nativeimage/c/type/WordPointer;Lorg/graalvm/nativeimage/c/type/CIntPointer;)V
         2: .line 166
            iconst_3
            invokestatic com.oracle.svm.core.nodes.CFunctionEpilogueNode.cFunctionEpilogue:(I)V
         3: .line 167
            return
        end local 4 // org.graalvm.nativeimage.c.type.CIntPointer errnoMirror
        end local 3 // org.graalvm.nativeimage.c.type.WordPointer avalue
        end local 2 // org.graalvm.word.PointerBase rvalue
        end local 1 // org.graalvm.word.PointerBase fn
        end local 0 // com.oracle.svm.truffle.nfi.libffi.LibFFI$ffi_cif cif
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    4     0          cif  Lcom/oracle/svm/truffle/nfi/libffi/LibFFI$ffi_cif;
            0    4     1           fn  Lorg/graalvm/word/PointerBase;
            0    4     2       rvalue  Lorg/graalvm/word/PointerBase;
            0    4     3       avalue  Lorg/graalvm/nativeimage/c/type/WordPointer;
            0    4     4  errnoMirror  Lorg/graalvm/nativeimage/c/type/CIntPointer;
    RuntimeVisibleAnnotations: 
      com.oracle.svm.core.annotate.NeverInline(value = "Must not be inlined in a caller that has an exception handler: We only support InvokeNode and not InvokeWithExceptionNode between a CFunctionPrologueNode and CFunctionEpilogueNode")
    MethodParameters:
             Name  Flags
      cif          
      fn           
      rvalue       
      avalue       
      errnoMirror  

  private static void doFfiCall(com.oracle.svm.truffle.nfi.libffi.LibFFI$ffi_cif, org.graalvm.word.PointerBase, org.graalvm.word.PointerBase, org.graalvm.nativeimage.c.type.WordPointer, org.graalvm.nativeimage.c.type.CIntPointer);
    descriptor: (Lcom/oracle/svm/truffle/nfi/libffi/LibFFI$ffi_cif;Lorg/graalvm/word/PointerBase;Lorg/graalvm/word/PointerBase;Lorg/graalvm/nativeimage/c/type/WordPointer;Lorg/graalvm/nativeimage/c/type/CIntPointer;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=5, args_size=5
        start local 0 // com.oracle.svm.truffle.nfi.libffi.LibFFI$ffi_cif cif
        start local 1 // org.graalvm.word.PointerBase fn
        start local 2 // org.graalvm.word.PointerBase rvalue
        start local 3 // org.graalvm.nativeimage.c.type.WordPointer avalue
        start local 4 // org.graalvm.nativeimage.c.type.CIntPointer errnoMirror
         0: .line 176
            aload 4 /* errnoMirror */
            invokeinterface org.graalvm.nativeimage.c.type.CIntPointer.read:()I
            invokestatic com.oracle.svm.core.CErrorNumber.setCErrorNumber:(I)V
         1: .line 177
            aload 0 /* cif */
            aload 1 /* fn */
            aload 2 /* rvalue */
            aload 3 /* avalue */
            invokestatic com.oracle.svm.truffle.nfi.libffi.LibFFI$NoTransitions.ffi_call:(Lcom/oracle/svm/truffle/nfi/libffi/LibFFI$ffi_cif;Lorg/graalvm/word/PointerBase;Lorg/graalvm/word/PointerBase;Lorg/graalvm/nativeimage/c/type/WordPointer;)V
         2: .line 178
            aload 4 /* errnoMirror */
            invokestatic com.oracle.svm.core.CErrorNumber.getCErrorNumber:()I
            invokeinterface org.graalvm.nativeimage.c.type.CIntPointer.write:(I)V
         3: .line 179
            return
        end local 4 // org.graalvm.nativeimage.c.type.CIntPointer errnoMirror
        end local 3 // org.graalvm.nativeimage.c.type.WordPointer avalue
        end local 2 // org.graalvm.word.PointerBase rvalue
        end local 1 // org.graalvm.word.PointerBase fn
        end local 0 // com.oracle.svm.truffle.nfi.libffi.LibFFI$ffi_cif cif
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    4     0          cif  Lcom/oracle/svm/truffle/nfi/libffi/LibFFI$ffi_cif;
            0    4     1           fn  Lorg/graalvm/word/PointerBase;
            0    4     2       rvalue  Lorg/graalvm/word/PointerBase;
            0    4     3       avalue  Lorg/graalvm/nativeimage/c/type/WordPointer;
            0    4     4  errnoMirror  Lorg/graalvm/nativeimage/c/type/CIntPointer;
    RuntimeVisibleAnnotations: 
      com.oracle.svm.core.annotate.Uninterruptible(reason = "In native.")
      com.oracle.svm.core.annotate.NeverInline(value = "Can have only a single invoke between CFunctionPrologueNode and CFunctionEpilogueNode.")
    MethodParameters:
             Name  Flags
      cif          
      fn           
      rvalue       
      avalue       
      errnoMirror  
}
SourceFile: "NativeSignature.java"
NestHost: com.oracle.svm.truffle.nfi.NativeSignature
InnerClasses:
  public abstract NativeTruffleContext = com.oracle.svm.truffle.nfi.NativeAPI$NativeTruffleContext of com.oracle.svm.truffle.nfi.NativeAPI
  public abstract NativeTruffleEnv = com.oracle.svm.truffle.nfi.NativeAPI$NativeTruffleEnv of com.oracle.svm.truffle.nfi.NativeAPI
  ExecuteHelper = com.oracle.svm.truffle.nfi.NativeSignature$ExecuteHelper of com.oracle.svm.truffle.nfi.NativeSignature
  public NoTransitions = com.oracle.svm.truffle.nfi.libffi.LibFFI$NoTransitions of com.oracle.svm.truffle.nfi.libffi.LibFFI
  public abstract ffi_cif = com.oracle.svm.truffle.nfi.libffi.LibFFI$ffi_cif of com.oracle.svm.truffle.nfi.libffi.LibFFI
  public abstract ffi_type = com.oracle.svm.truffle.nfi.libffi.LibFFI$ffi_type of com.oracle.svm.truffle.nfi.libffi.LibFFI
  public abstract ffi_type_array = com.oracle.svm.truffle.nfi.libffi.LibFFI$ffi_type_array of com.oracle.svm.truffle.nfi.libffi.LibFFI