final class com.oracle.svm.truffle.nfi.NativeClosure
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: com.oracle.svm.truffle.nfi.NativeClosure
super_class: java.lang.Object
{
private final com.oracle.truffle.api.CallTarget callTarget;
descriptor: Lcom/oracle/truffle/api/CallTarget;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final com.oracle.svm.truffle.nfi.Target_com_oracle_truffle_nfi_impl_LibFFISignature signature;
descriptor: Lcom/oracle/svm/truffle/nfi/Target_com_oracle_truffle_nfi_impl_LibFFISignature;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
static final com.oracle.svm.core.threadlocal.FastThreadLocalObject<java.lang.Throwable> pendingException;
descriptor: Lcom/oracle/svm/core/threadlocal/FastThreadLocalObject;
flags: (0x0018) ACC_STATIC, ACC_FINAL
Signature: Lcom/oracle/svm/core/threadlocal/FastThreadLocalObject<Ljava/lang/Throwable;>;
static final org.graalvm.nativeimage.c.function.CEntryPointLiteral<com.oracle.svm.truffle.nfi.libffi.LibFFI$ffi_closure_callback> INVOKE_CLOSURE_BUFFER_RET;
descriptor: Lorg/graalvm/nativeimage/c/function/CEntryPointLiteral;
flags: (0x0018) ACC_STATIC, ACC_FINAL
Signature: Lorg/graalvm/nativeimage/c/function/CEntryPointLiteral<Lcom/oracle/svm/truffle/nfi/libffi/LibFFI$ffi_closure_callback;>;
static final org.graalvm.nativeimage.c.function.CEntryPointLiteral<com.oracle.svm.truffle.nfi.libffi.LibFFI$ffi_closure_callback> INVOKE_CLOSURE_VOID_RET;
descriptor: Lorg/graalvm/nativeimage/c/function/CEntryPointLiteral;
flags: (0x0018) ACC_STATIC, ACC_FINAL
Signature: Lorg/graalvm/nativeimage/c/function/CEntryPointLiteral<Lcom/oracle/svm/truffle/nfi/libffi/LibFFI$ffi_closure_callback;>;
static final org.graalvm.nativeimage.c.function.CEntryPointLiteral<com.oracle.svm.truffle.nfi.libffi.LibFFI$ffi_closure_callback> INVOKE_CLOSURE_STRING_RET;
descriptor: Lorg/graalvm/nativeimage/c/function/CEntryPointLiteral;
flags: (0x0018) ACC_STATIC, ACC_FINAL
Signature: Lorg/graalvm/nativeimage/c/function/CEntryPointLiteral<Lcom/oracle/svm/truffle/nfi/libffi/LibFFI$ffi_closure_callback;>;
static final org.graalvm.nativeimage.c.function.CEntryPointLiteral<com.oracle.svm.truffle.nfi.libffi.LibFFI$ffi_closure_callback> INVOKE_CLOSURE_OBJECT_RET;
descriptor: Lorg/graalvm/nativeimage/c/function/CEntryPointLiteral;
flags: (0x0018) ACC_STATIC, ACC_FINAL
Signature: Lorg/graalvm/nativeimage/c/function/CEntryPointLiteral<Lcom/oracle/svm/truffle/nfi/libffi/LibFFI$ffi_closure_callback;>;
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=6, locals=0, args_size=0
0: ldc Ljava/lang/Throwable;
invokestatic com.oracle.svm.core.threadlocal.FastThreadLocalFactory.createObject:(Ljava/lang/Class;)Lcom/oracle/svm/core/threadlocal/FastThreadLocalObject;
putstatic com.oracle.svm.truffle.nfi.NativeClosure.pendingException:Lcom/oracle/svm/core/threadlocal/FastThreadLocalObject;
1: ldc Lcom/oracle/svm/truffle/nfi/NativeClosure;
ldc "invokeClosureBufferRet"
iconst_4
anewarray java.lang.Class
dup
iconst_0
2: ldc Lcom/oracle/svm/truffle/nfi/libffi/LibFFI$ffi_cif;
aastore
dup
iconst_1
ldc Lorg/graalvm/word/Pointer;
aastore
dup
iconst_2
ldc Lorg/graalvm/nativeimage/c/type/WordPointer;
aastore
dup
iconst_3
ldc Lcom/oracle/svm/truffle/nfi/LibFFI$ClosureData;
aastore
3: invokestatic org.graalvm.nativeimage.c.function.CEntryPointLiteral.create:(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Lorg/graalvm/nativeimage/c/function/CEntryPointLiteral;
putstatic com.oracle.svm.truffle.nfi.NativeClosure.INVOKE_CLOSURE_BUFFER_RET:Lorg/graalvm/nativeimage/c/function/CEntryPointLiteral;
4: ldc Lcom/oracle/svm/truffle/nfi/NativeClosure;
ldc "invokeClosureVoidRet"
iconst_4
anewarray java.lang.Class
dup
iconst_0
5: ldc Lcom/oracle/svm/truffle/nfi/libffi/LibFFI$ffi_cif;
aastore
dup
iconst_1
ldc Lorg/graalvm/nativeimage/c/type/WordPointer;
aastore
dup
iconst_2
ldc Lorg/graalvm/nativeimage/c/type/WordPointer;
aastore
dup
iconst_3
ldc Lcom/oracle/svm/truffle/nfi/LibFFI$ClosureData;
aastore
6: invokestatic org.graalvm.nativeimage.c.function.CEntryPointLiteral.create:(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Lorg/graalvm/nativeimage/c/function/CEntryPointLiteral;
putstatic com.oracle.svm.truffle.nfi.NativeClosure.INVOKE_CLOSURE_VOID_RET:Lorg/graalvm/nativeimage/c/function/CEntryPointLiteral;
7: ldc Lcom/oracle/svm/truffle/nfi/NativeClosure;
ldc "invokeClosureStringRet"
iconst_4
anewarray java.lang.Class
dup
iconst_0
8: ldc Lcom/oracle/svm/truffle/nfi/libffi/LibFFI$ffi_cif;
aastore
dup
iconst_1
ldc Lorg/graalvm/nativeimage/c/type/WordPointer;
aastore
dup
iconst_2
ldc Lorg/graalvm/nativeimage/c/type/WordPointer;
aastore
dup
iconst_3
ldc Lcom/oracle/svm/truffle/nfi/LibFFI$ClosureData;
aastore
9: invokestatic org.graalvm.nativeimage.c.function.CEntryPointLiteral.create:(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Lorg/graalvm/nativeimage/c/function/CEntryPointLiteral;
putstatic com.oracle.svm.truffle.nfi.NativeClosure.INVOKE_CLOSURE_STRING_RET:Lorg/graalvm/nativeimage/c/function/CEntryPointLiteral;
10: ldc Lcom/oracle/svm/truffle/nfi/NativeClosure;
ldc "invokeClosureObjectRet"
iconst_4
anewarray java.lang.Class
dup
iconst_0
11: ldc Lcom/oracle/svm/truffle/nfi/libffi/LibFFI$ffi_cif;
aastore
dup
iconst_1
ldc Lorg/graalvm/nativeimage/c/type/WordPointer;
aastore
dup
iconst_2
ldc Lorg/graalvm/nativeimage/c/type/WordPointer;
aastore
dup
iconst_3
ldc Lcom/oracle/svm/truffle/nfi/LibFFI$ClosureData;
aastore
12: invokestatic org.graalvm.nativeimage.c.function.CEntryPointLiteral.create:(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Lorg/graalvm/nativeimage/c/function/CEntryPointLiteral;
putstatic com.oracle.svm.truffle.nfi.NativeClosure.INVOKE_CLOSURE_OBJECT_RET:Lorg/graalvm/nativeimage/c/function/CEntryPointLiteral;
13: return
LocalVariableTable:
Start End Slot Name Signature
private void <init>(com.oracle.truffle.api.CallTarget, com.oracle.svm.truffle.nfi.Target_com_oracle_truffle_nfi_impl_LibFFISignature);
descriptor: (Lcom/oracle/truffle/api/CallTarget;Lcom/oracle/svm/truffle/nfi/Target_com_oracle_truffle_nfi_impl_LibFFISignature;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 1
putfield com.oracle.svm.truffle.nfi.NativeClosure.callTarget:Lcom/oracle/truffle/api/CallTarget;
2: aload 0
aload 2
putfield com.oracle.svm.truffle.nfi.NativeClosure.signature:Lcom/oracle/svm/truffle/nfi/Target_com_oracle_truffle_nfi_impl_LibFFISignature;
3: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/oracle/svm/truffle/nfi/NativeClosure;
0 4 1 callTarget Lcom/oracle/truffle/api/CallTarget;
0 4 2 signature Lcom/oracle/svm/truffle/nfi/Target_com_oracle_truffle_nfi_impl_LibFFISignature;
MethodParameters:
Name Flags
callTarget
signature
private java.nio.ByteBuffer createRetBuffer(org.graalvm.word.PointerBase);
descriptor: (Lorg/graalvm/word/PointerBase;)Ljava/nio/ByteBuffer;
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=4, args_size=2
start local 0 start local 1 0: aload 0
getfield com.oracle.svm.truffle.nfi.NativeClosure.signature:Lcom/oracle/svm/truffle/nfi/Target_com_oracle_truffle_nfi_impl_LibFFISignature;
getfield com.oracle.svm.truffle.nfi.Target_com_oracle_truffle_nfi_impl_LibFFISignature.signatureInfo:Lcom/oracle/svm/truffle/nfi/Target_com_oracle_truffle_nfi_impl_LibFFISignature_CachedSignatureInfo;
invokevirtual com.oracle.svm.truffle.nfi.Target_com_oracle_truffle_nfi_impl_LibFFISignature_CachedSignatureInfo.getRetType:()Lcom/oracle/svm/truffle/nfi/Target_com_oracle_truffle_nfi_impl_LibFFIType_CachedTypeInfo;
astore 2
start local 2 1: aload 2
getfield com.oracle.svm.truffle.nfi.Target_com_oracle_truffle_nfi_impl_LibFFIType_CachedTypeInfo.size:I
istore 3
start local 3 2: iload 3
ldc Lcom/oracle/svm/truffle/nfi/libffi/LibFFI$ffi_arg;
invokestatic org.graalvm.nativeimage.c.struct.SizeOf.get:(Ljava/lang/Class;)I
if_icmpge 4
3: ldc Lcom/oracle/svm/truffle/nfi/libffi/LibFFI$ffi_arg;
invokestatic org.graalvm.nativeimage.c.struct.SizeOf.get:(Ljava/lang/Class;)I
istore 3
4: StackMap locals: com.oracle.svm.truffle.nfi.Target_com_oracle_truffle_nfi_impl_LibFFIType_CachedTypeInfo int
StackMap stack:
aload 1
iload 3
invokestatic org.graalvm.nativeimage.c.type.CTypeConversion.asByteBuffer:(Lorg/graalvm/word/PointerBase;I)Ljava/nio/ByteBuffer;
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/oracle/svm/truffle/nfi/NativeClosure;
0 5 1 buffer Lorg/graalvm/word/PointerBase;
1 5 2 retType Lcom/oracle/svm/truffle/nfi/Target_com_oracle_truffle_nfi_impl_LibFFIType_CachedTypeInfo;
2 5 3 size I
MethodParameters:
Name Flags
buffer
static com.oracle.svm.truffle.nfi.Target_com_oracle_truffle_nfi_impl_ClosureNativePointer prepareClosure(com.oracle.svm.truffle.nfi.Target_com_oracle_truffle_nfi_impl_NFIContext, com.oracle.svm.truffle.nfi.Target_com_oracle_truffle_nfi_impl_LibFFISignature, com.oracle.truffle.api.CallTarget, com.oracle.svm.truffle.nfi.libffi.LibFFI$ffi_closure_callback);
descriptor: (Lcom/oracle/svm/truffle/nfi/Target_com_oracle_truffle_nfi_impl_NFIContext;Lcom/oracle/svm/truffle/nfi/Target_com_oracle_truffle_nfi_impl_LibFFISignature;Lcom/oracle/truffle/api/CallTarget;Lcom/oracle/svm/truffle/nfi/libffi/LibFFI$ffi_closure_callback;)Lcom/oracle/svm/truffle/nfi/Target_com_oracle_truffle_nfi_impl_ClosureNativePointer;
flags: (0x0008) ACC_STATIC
Code:
stack=7, locals=9, args_size=4
start local 0 start local 1 start local 2 start local 3 0: new com.oracle.svm.truffle.nfi.NativeClosure
dup
aload 2
aload 1
invokespecial com.oracle.svm.truffle.nfi.NativeClosure.<init>:(Lcom/oracle/truffle/api/CallTarget;Lcom/oracle/svm/truffle/nfi/Target_com_oracle_truffle_nfi_impl_LibFFISignature;)V
astore 4
start local 4 1: ldc Lcom/oracle/svm/truffle/nfi/TruffleNFISupport;
invokestatic org.graalvm.nativeimage.ImageSingletons.lookup:(Ljava/lang/Class;)Ljava/lang/Object;
checkcast com.oracle.svm.truffle.nfi.TruffleNFISupport
aload 4
invokevirtual com.oracle.svm.truffle.nfi.TruffleNFISupport.createClosureHandle:(Lcom/oracle/svm/truffle/nfi/NativeClosure;)Lcom/oracle/svm/truffle/nfi/LibFFI$NativeClosureHandle;
astore 5
start local 5 2: ldc Lorg/graalvm/nativeimage/c/type/WordPointer;
invokestatic org.graalvm.nativeimage.StackValue.get:(Ljava/lang/Class;)Lorg/graalvm/word/PointerBase;
checkcast org.graalvm.nativeimage.c.type.WordPointer
astore 6
start local 6 3: ldc Lcom/oracle/svm/truffle/nfi/LibFFI$ClosureData;
invokestatic org.graalvm.nativeimage.c.struct.SizeOf.unsigned:(Ljava/lang/Class;)Lorg/graalvm/word/UnsignedWord;
aload 6
invokestatic com.oracle.svm.truffle.nfi.libffi.LibFFI.ffi_closure_alloc:(Lorg/graalvm/word/UnsignedWord;Lorg/graalvm/nativeimage/c/type/WordPointer;)Lorg/graalvm/word/WordBase;
checkcast com.oracle.svm.truffle.nfi.LibFFI$ClosureData
astore 7
start local 7 4: aload 7
aload 5
invokeinterface com.oracle.svm.truffle.nfi.LibFFI$ClosureData.setNativeClosureHandle:(Lcom/oracle/svm/truffle/nfi/LibFFI$NativeClosureHandle;)V
5: aload 7
invokestatic org.graalvm.nativeimage.CurrentIsolate.getIsolate:()Lorg/graalvm/nativeimage/Isolate;
invokeinterface com.oracle.svm.truffle.nfi.LibFFI$ClosureData.setIsolate:(Lorg/graalvm/nativeimage/Isolate;)V
6: aload 6
invokeinterface org.graalvm.nativeimage.c.type.WordPointer.read:()Lorg/graalvm/word/WordBase;
checkcast org.graalvm.word.PointerBase
astore 8
start local 8 7: aload 7
invokeinterface com.oracle.svm.truffle.nfi.LibFFI$ClosureData.ffiClosure:()Lcom/oracle/svm/truffle/nfi/libffi/LibFFI$ffi_closure;
aload 1
getfield com.oracle.svm.truffle.nfi.Target_com_oracle_truffle_nfi_impl_LibFFISignature.cif:J
invokestatic org.graalvm.word.WordFactory.pointer:(J)Lorg/graalvm/word/PointerBase;
checkcast com.oracle.svm.truffle.nfi.libffi.LibFFI$ffi_cif
aload 3
aload 7
aload 8
invokestatic com.oracle.svm.truffle.nfi.libffi.LibFFI.ffi_prep_closure_loc:(Lcom/oracle/svm/truffle/nfi/libffi/LibFFI$ffi_closure;Lcom/oracle/svm/truffle/nfi/libffi/LibFFI$ffi_cif;Lcom/oracle/svm/truffle/nfi/libffi/LibFFI$ffi_closure_callback;Lorg/graalvm/word/WordBase;Lorg/graalvm/word/PointerBase;)I
pop
8: aload 0
aload 7
invokeinterface com.oracle.svm.truffle.nfi.LibFFI$ClosureData.rawValue:()J
aload 8
invokeinterface org.graalvm.word.PointerBase.rawValue:()J
aload 2
aload 1
invokevirtual com.oracle.svm.truffle.nfi.Target_com_oracle_truffle_nfi_impl_NFIContext.createClosureNativePointer:(JJLcom/oracle/truffle/api/CallTarget;Lcom/oracle/svm/truffle/nfi/Target_com_oracle_truffle_nfi_impl_LibFFISignature;)Lcom/oracle/svm/truffle/nfi/Target_com_oracle_truffle_nfi_impl_ClosureNativePointer;
areturn
end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 ctx Lcom/oracle/svm/truffle/nfi/Target_com_oracle_truffle_nfi_impl_NFIContext;
0 9 1 signature Lcom/oracle/svm/truffle/nfi/Target_com_oracle_truffle_nfi_impl_LibFFISignature;
0 9 2 callTarget Lcom/oracle/truffle/api/CallTarget;
0 9 3 callback Lcom/oracle/svm/truffle/nfi/libffi/LibFFI$ffi_closure_callback;
1 9 4 closure Lcom/oracle/svm/truffle/nfi/NativeClosure;
2 9 5 handle Lcom/oracle/svm/truffle/nfi/LibFFI$NativeClosureHandle;
3 9 6 codePtr Lorg/graalvm/nativeimage/c/type/WordPointer;
4 9 7 data Lcom/oracle/svm/truffle/nfi/LibFFI$ClosureData;
7 9 8 code Lorg/graalvm/word/PointerBase;
MethodParameters:
Name Flags
ctx
signature
callTarget
callback
private java.lang.Object call(org.graalvm.nativeimage.c.type.WordPointer, java.nio.ByteBuffer);
descriptor: (Lorg/graalvm/nativeimage/c/type/WordPointer;Ljava/nio/ByteBuffer;)Ljava/lang/Object;
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=9, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield com.oracle.svm.truffle.nfi.NativeClosure.signature:Lcom/oracle/svm/truffle/nfi/Target_com_oracle_truffle_nfi_impl_LibFFISignature;
getfield com.oracle.svm.truffle.nfi.Target_com_oracle_truffle_nfi_impl_LibFFISignature.signatureInfo:Lcom/oracle/svm/truffle/nfi/Target_com_oracle_truffle_nfi_impl_LibFFISignature_CachedSignatureInfo;
invokevirtual com.oracle.svm.truffle.nfi.Target_com_oracle_truffle_nfi_impl_LibFFISignature_CachedSignatureInfo.getArgTypes:()[Lcom/oracle/svm/truffle/nfi/Target_com_oracle_truffle_nfi_impl_LibFFIType_CachedTypeInfo;
astore 3
start local 3 1: aload 3
arraylength
istore 4
start local 4 2: aload 2
ifnull 4
3: iinc 4 1
4: StackMap locals: com.oracle.svm.truffle.nfi.Target_com_oracle_truffle_nfi_impl_LibFFIType_CachedTypeInfo[] int
StackMap stack:
iload 4
anewarray java.lang.Object
astore 5
start local 5 5: iconst_0
istore 6
start local 6 6: goto 24
7: StackMap locals: java.lang.Object[] int
StackMap stack:
aload 3
iload 6
aaload
astore 7
start local 7 8: ldc Lcom/oracle/svm/truffle/nfi/Target_com_oracle_truffle_nfi_impl_LibFFIType_StringType;
aload 7
invokevirtual java.lang.Class.isInstance:(Ljava/lang/Object;)Z
ifeq 12
9: aload 1
iload 6
invokeinterface org.graalvm.nativeimage.c.type.WordPointer.read:(I)Lorg/graalvm/word/WordBase;
checkcast org.graalvm.nativeimage.c.type.CCharPointerPointer
astore 8
start local 8 10: aload 5
iload 6
aload 8
invokeinterface org.graalvm.nativeimage.c.type.CCharPointerPointer.read:()Lorg/graalvm/nativeimage/c/type/CCharPointer;
invokestatic com.oracle.svm.truffle.nfi.TruffleNFISupport.utf8ToJavaString:(Lorg/graalvm/nativeimage/c/type/CCharPointer;)Ljava/lang/String;
aastore
end local 8 11: goto 23
StackMap locals: java.lang.Object
StackMap stack:
12: ldc Lcom/oracle/svm/truffle/nfi/Target_com_oracle_truffle_nfi_impl_LibFFIType_ObjectType;
aload 7
invokevirtual java.lang.Class.isInstance:(Ljava/lang/Object;)Z
ifeq 16
13: aload 1
iload 6
invokeinterface org.graalvm.nativeimage.c.type.WordPointer.read:(I)Lorg/graalvm/word/WordBase;
checkcast org.graalvm.nativeimage.c.type.WordPointer
astore 8
start local 8 14: aload 5
iload 6
ldc Lcom/oracle/svm/truffle/nfi/TruffleNFISupport;
invokestatic org.graalvm.nativeimage.ImageSingletons.lookup:(Ljava/lang/Class;)Ljava/lang/Object;
checkcast com.oracle.svm.truffle.nfi.TruffleNFISupport
aload 8
invokeinterface org.graalvm.nativeimage.c.type.WordPointer.read:()Lorg/graalvm/word/WordBase;
checkcast com.oracle.svm.truffle.nfi.TruffleObjectHandle
invokevirtual com.oracle.svm.truffle.nfi.TruffleNFISupport.resolveHandle:(Lcom/oracle/svm/truffle/nfi/TruffleObjectHandle;)Ljava/lang/Object;
aastore
end local 8 15: goto 23
StackMap locals:
StackMap stack:
16: ldc Lcom/oracle/svm/truffle/nfi/Target_com_oracle_truffle_nfi_impl_LibFFIType_NullableType;
aload 7
invokevirtual java.lang.Class.isInstance:(Ljava/lang/Object;)Z
ifeq 20
17: aload 1
iload 6
invokeinterface org.graalvm.nativeimage.c.type.WordPointer.read:(I)Lorg/graalvm/word/WordBase;
checkcast org.graalvm.nativeimage.c.type.WordPointer
astore 8
start local 8 18: aload 5
iload 6
ldc Lcom/oracle/svm/truffle/nfi/TruffleNFISupport;
invokestatic org.graalvm.nativeimage.ImageSingletons.lookup:(Ljava/lang/Class;)Ljava/lang/Object;
checkcast com.oracle.svm.truffle.nfi.TruffleNFISupport
aload 8
invokeinterface org.graalvm.nativeimage.c.type.WordPointer.read:()Lorg/graalvm/word/WordBase;
checkcast com.oracle.svm.truffle.nfi.TruffleObjectHandle
invokevirtual com.oracle.svm.truffle.nfi.TruffleNFISupport.resolveHandle:(Lcom/oracle/svm/truffle/nfi/TruffleObjectHandle;)Ljava/lang/Object;
aastore
end local 8 19: goto 23
StackMap locals:
StackMap stack:
20: ldc Lcom/oracle/svm/truffle/nfi/Target_com_oracle_truffle_nfi_impl_LibFFIType_EnvType;
aload 7
invokevirtual java.lang.Class.isInstance:(Ljava/lang/Object;)Z
ifne 23
21: aload 1
iload 6
invokeinterface org.graalvm.nativeimage.c.type.WordPointer.read:(I)Lorg/graalvm/word/WordBase;
checkcast org.graalvm.nativeimage.c.type.WordPointer
astore 8
start local 8 22: aload 5
iload 6
aload 8
aload 3
iload 6
aaload
getfield com.oracle.svm.truffle.nfi.Target_com_oracle_truffle_nfi_impl_LibFFIType_CachedTypeInfo.size:I
invokestatic org.graalvm.nativeimage.c.type.CTypeConversion.asByteBuffer:(Lorg/graalvm/word/PointerBase;I)Ljava/nio/ByteBuffer;
aastore
end local 8 end local 7 23: StackMap locals:
StackMap stack:
iinc 6 1
StackMap locals:
StackMap stack:
24: iload 6
aload 3
arraylength
if_icmplt 7
end local 6 25: aload 2
ifnull 27
26: aload 5
aload 3
arraylength
aload 2
aastore
27: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.svm.truffle.nfi.NativeClosure.callTarget:Lcom/oracle/truffle/api/CallTarget;
aload 5
invokeinterface com.oracle.truffle.api.CallTarget.call:([Ljava/lang/Object;)Ljava/lang/Object;
areturn
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 28 0 this Lcom/oracle/svm/truffle/nfi/NativeClosure;
0 28 1 argPointers Lorg/graalvm/nativeimage/c/type/WordPointer;
0 28 2 retBuffer Ljava/nio/ByteBuffer;
1 28 3 argTypes [Lcom/oracle/svm/truffle/nfi/Target_com_oracle_truffle_nfi_impl_LibFFIType_CachedTypeInfo;
2 28 4 length I
5 28 5 args [Ljava/lang/Object;
6 25 6 i I
8 23 7 type Ljava/lang/Object;
10 11 8 argPtr Lorg/graalvm/nativeimage/c/type/CCharPointerPointer;
14 15 8 argPtr Lorg/graalvm/nativeimage/c/type/WordPointer;
18 19 8 argPtr Lorg/graalvm/nativeimage/c/type/WordPointer;
22 23 8 argPtr Lorg/graalvm/nativeimage/c/type/WordPointer;
MethodParameters:
Name Flags
argPointers
retBuffer
private static com.oracle.svm.truffle.nfi.NativeClosure lookup(com.oracle.svm.truffle.nfi.LibFFI$ClosureData);
descriptor: (Lcom/oracle/svm/truffle/nfi/LibFFI$ClosureData;)Lcom/oracle/svm/truffle/nfi/NativeClosure;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: ldc Lcom/oracle/svm/truffle/nfi/TruffleNFISupport;
invokestatic org.graalvm.nativeimage.ImageSingletons.lookup:(Ljava/lang/Class;)Ljava/lang/Object;
checkcast com.oracle.svm.truffle.nfi.TruffleNFISupport
aload 0
invokeinterface com.oracle.svm.truffle.nfi.LibFFI$ClosureData.nativeClosureHandle:()Lcom/oracle/svm/truffle/nfi/LibFFI$NativeClosureHandle;
invokevirtual com.oracle.svm.truffle.nfi.TruffleNFISupport.resolveClosureHandle:(Lcom/oracle/svm/truffle/nfi/LibFFI$NativeClosureHandle;)Lcom/oracle/svm/truffle/nfi/NativeClosure;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 data Lcom/oracle/svm/truffle/nfi/LibFFI$ClosureData;
MethodParameters:
Name Flags
data
private static org.graalvm.word.PointerBase serializeStringRet(java.lang.Object);
descriptor: (Ljava/lang/Object;)Lorg/graalvm/word/PointerBase;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=6, args_size=1
start local 0 0: aload 0
ifnonnull 2
1: invokestatic org.graalvm.word.WordFactory.zero:()Lorg/graalvm/word/WordBase;
checkcast org.graalvm.word.PointerBase
areturn
2: StackMap locals:
StackMap stack:
aload 0
instanceof com.oracle.svm.truffle.nfi.Target_com_oracle_truffle_nfi_impl_NativeString
ifeq 5
3: aload 0
checkcast com.oracle.svm.truffle.nfi.Target_com_oracle_truffle_nfi_impl_NativeString
astore 1
start local 1 4: aload 1
getfield com.oracle.svm.truffle.nfi.Target_com_oracle_truffle_nfi_impl_NativeString.nativePointer:J
invokestatic org.graalvm.word.WordFactory.pointer:(J)Lorg/graalvm/word/PointerBase;
areturn
end local 1 5: StackMap locals:
StackMap stack:
aload 0
instanceof java.lang.String
ifeq 19
6: aload 0
checkcast java.lang.String
invokestatic com.oracle.svm.truffle.nfi.TruffleNFISupport.javaStringToUtf8:(Ljava/lang/String;)[B
astore 1
start local 1 7: aconst_null
astore 2
aconst_null
astore 3
8: aload 1
invokestatic org.graalvm.nativeimage.PinnedObject.create:(Ljava/lang/Object;)Lorg/graalvm/nativeimage/PinnedObject;
astore 4
start local 4 9: aload 4
iconst_0
invokeinterface org.graalvm.nativeimage.PinnedObject.addressOfArrayElement:(I)Lorg/graalvm/word/PointerBase;
checkcast org.graalvm.nativeimage.c.type.CCharPointer
astore 5
start local 5 10: aload 5
invokestatic com.oracle.svm.truffle.nfi.TruffleNFISupport.strdup:(Lorg/graalvm/nativeimage/c/type/CCharPointer;)Lorg/graalvm/nativeimage/c/type/CCharPointer;
11: aload 4
ifnull 12
aload 4
invokeinterface org.graalvm.nativeimage.PinnedObject.close:()V
12: StackMap locals: java.lang.Object byte[] java.lang.Throwable java.lang.Throwable org.graalvm.nativeimage.PinnedObject org.graalvm.nativeimage.c.type.CCharPointer
StackMap stack: org.graalvm.nativeimage.c.type.CCharPointer
areturn
end local 5 StackMap locals: java.lang.Object byte[] java.lang.Throwable java.lang.Throwable org.graalvm.nativeimage.PinnedObject
StackMap stack: java.lang.Throwable
13: astore 2
14: aload 4
ifnull 15
aload 4
invokeinterface org.graalvm.nativeimage.PinnedObject.close:()V
end local 4 StackMap locals:
StackMap stack:
15: aload 2
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
16: astore 3
aload 2
ifnonnull 17
aload 3
astore 2
goto 18
StackMap locals:
StackMap stack:
17: aload 2
aload 3
if_acmpeq 18
aload 2
aload 3
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
18: aload 2
athrow
end local 1 19: StackMap locals:
StackMap stack:
invokestatic org.graalvm.word.WordFactory.zero:()Lorg/graalvm/word/WordBase;
checkcast org.graalvm.word.PointerBase
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 20 0 retValue Ljava/lang/Object;
4 5 1 nativeString Lcom/oracle/svm/truffle/nfi/Target_com_oracle_truffle_nfi_impl_NativeString;
7 19 1 utf8 [B
9 15 4 pinned Lorg/graalvm/nativeimage/PinnedObject;
10 13 5 source Lorg/graalvm/nativeimage/c/type/CCharPointer;
Exception table:
from to target type
9 11 13 any
8 12 16 any
13 16 16 any
MethodParameters:
Name Flags
retValue
static void invokeClosureBufferRet(com.oracle.svm.truffle.nfi.libffi.LibFFI$ffi_cif, org.graalvm.word.Pointer, org.graalvm.nativeimage.c.type.WordPointer, com.oracle.svm.truffle.nfi.LibFFI$ClosureData);
descriptor: (Lcom/oracle/svm/truffle/nfi/libffi/LibFFI$ffi_cif;Lorg/graalvm/word/Pointer;Lorg/graalvm/nativeimage/c/type/WordPointer;Lcom/oracle/svm/truffle/nfi/LibFFI$ClosureData;)V
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=6, args_size=4
start local 0 start local 1 start local 2 start local 3 0: invokestatic com.oracle.svm.core.CErrorNumber.getCErrorNumber:()I
istore 4
start local 4 1: aload 3
invokeinterface com.oracle.svm.truffle.nfi.LibFFI$ClosureData.isolate:()Lorg/graalvm/nativeimage/Isolate;
invokestatic com.oracle.svm.core.c.function.CEntryPointActions.enterIsolate:(Lorg/graalvm/nativeimage/Isolate;)I
pop
2: 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
iload 4
invokeinterface org.graalvm.nativeimage.c.type.CIntPointer.write:(I)V
3: aload 1
aload 2
aload 3
invokestatic com.oracle.svm.truffle.nfi.NativeClosure.doInvokeClosureBufferRet:(Lorg/graalvm/word/Pointer;Lorg/graalvm/nativeimage/c/type/WordPointer;Lcom/oracle/svm/truffle/nfi/LibFFI$ClosureData;)V
4: goto 7
StackMap locals: com.oracle.svm.truffle.nfi.libffi.LibFFI$ffi_cif org.graalvm.word.Pointer org.graalvm.nativeimage.c.type.WordPointer com.oracle.svm.truffle.nfi.LibFFI$ClosureData int
StackMap stack: java.lang.Throwable
5: astore 5
start local 5 6: getstatic com.oracle.svm.truffle.nfi.NativeClosure.pendingException:Lcom/oracle/svm/core/threadlocal/FastThreadLocalObject;
aload 5
invokevirtual com.oracle.svm.core.threadlocal.FastThreadLocalObject.set:(Ljava/lang/Object;)V
end local 5 7: StackMap locals:
StackMap stack:
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
invokeinterface org.graalvm.nativeimage.c.type.CIntPointer.read:()I
istore 4
8: invokestatic com.oracle.svm.core.c.function.CEntryPointActions.leave:()I
pop
9: iload 4
invokestatic com.oracle.svm.core.CErrorNumber.setCErrorNumber:(I)V
10: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 cif Lcom/oracle/svm/truffle/nfi/libffi/LibFFI$ffi_cif;
0 11 1 ret Lorg/graalvm/word/Pointer;
0 11 2 args Lorg/graalvm/nativeimage/c/type/WordPointer;
0 11 3 user Lcom/oracle/svm/truffle/nfi/LibFFI$ClosureData;
1 11 4 errno I
6 7 5 t Ljava/lang/Throwable;
Exception table:
from to target type
3 4 5 Class java.lang.Throwable
RuntimeVisibleAnnotations:
org.graalvm.nativeimage.c.function.CEntryPoint()
com.oracle.svm.core.c.function.CEntryPointOptions(prologue = Lcom/oracle/svm/core/c/function/CEntryPointOptions$NoPrologue;, epilogue = Lcom/oracle/svm/core/c/function/CEntryPointOptions$NoEpilogue;, publishAs = com.oracle.svm.core.c.function.CEntryPointOptions$Publish.NotPublished:Lcom/oracle/svm/core/c/function/CEntryPointOptions$Publish;, include = Lcom/oracle/svm/core/c/function/CEntryPointOptions$NotIncludedAutomatically;)
com.oracle.svm.core.annotate.Uninterruptible(reason = "contains prologue and epilogue for thread state transition", calleeMustBe = false)
MethodParameters:
Name Flags
cif
ret
args
user
private static void doInvokeClosureBufferRet(org.graalvm.word.Pointer, org.graalvm.nativeimage.c.type.WordPointer, com.oracle.svm.truffle.nfi.LibFFI$ClosureData);
descriptor: (Lorg/graalvm/word/Pointer;Lorg/graalvm/nativeimage/c/type/WordPointer;Lcom/oracle/svm/truffle/nfi/LibFFI$ClosureData;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=11, args_size=3
start local 0 start local 1 start local 2 0: aload 2
invokestatic com.oracle.svm.truffle.nfi.NativeClosure.lookup:(Lcom/oracle/svm/truffle/nfi/LibFFI$ClosureData;)Lcom/oracle/svm/truffle/nfi/NativeClosure;
astore 3
start local 3 1: aload 3
aload 0
invokevirtual com.oracle.svm.truffle.nfi.NativeClosure.createRetBuffer:(Lorg/graalvm/word/PointerBase;)Ljava/nio/ByteBuffer;
astore 4
start local 4 2: aload 3
aload 1
aload 4
invokevirtual com.oracle.svm.truffle.nfi.NativeClosure.call:(Lorg/graalvm/nativeimage/c/type/WordPointer;Ljava/nio/ByteBuffer;)Ljava/lang/Object;
checkcast com.oracle.svm.truffle.nfi.Target_com_oracle_truffle_nfi_impl_LibFFIClosure_RetPatches
astore 5
start local 5 3: aload 5
ifnull 17
4: iconst_0
istore 6
start local 6 5: goto 16
6: StackMap locals: org.graalvm.word.Pointer org.graalvm.nativeimage.c.type.WordPointer com.oracle.svm.truffle.nfi.LibFFI$ClosureData com.oracle.svm.truffle.nfi.NativeClosure java.nio.ByteBuffer com.oracle.svm.truffle.nfi.Target_com_oracle_truffle_nfi_impl_LibFFIClosure_RetPatches int
StackMap stack:
aload 5
getfield com.oracle.svm.truffle.nfi.Target_com_oracle_truffle_nfi_impl_LibFFIClosure_RetPatches.patches:[I
iload 6
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 7
start local 7 7: aload 5
getfield com.oracle.svm.truffle.nfi.Target_com_oracle_truffle_nfi_impl_LibFFIClosure_RetPatches.patches:[I
iload 6
iaload
invokestatic com.oracle.svm.truffle.nfi.Target_com_oracle_truffle_nfi_impl_NativeArgumentBuffer_TypeTag.getOffset:(I)I
istore 8
start local 8 8: aload 5
getfield com.oracle.svm.truffle.nfi.Target_com_oracle_truffle_nfi_impl_LibFFIClosure_RetPatches.objects:[Ljava/lang/Object;
iload 6
aaload
astore 9
start local 9 9: aload 7
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 13
10: ldc Lcom/oracle/svm/truffle/nfi/TruffleNFISupport;
invokestatic org.graalvm.nativeimage.ImageSingletons.lookup:(Ljava/lang/Class;)Ljava/lang/Object;
checkcast com.oracle.svm.truffle.nfi.TruffleNFISupport
aload 9
invokevirtual com.oracle.svm.truffle.nfi.TruffleNFISupport.createGlobalHandle:(Ljava/lang/Object;)Lcom/oracle/svm/truffle/nfi/TruffleObjectHandle;
astore 10
start local 10 11: aload 0
iload 8
aload 10
invokeinterface org.graalvm.word.Pointer.writeWord:(ILorg/graalvm/word/WordBase;)V
end local 10 12: goto 15
StackMap locals: com.oracle.svm.truffle.nfi.Target_com_oracle_truffle_nfi_impl_NativeArgumentBuffer_TypeTag int java.lang.Object
StackMap stack:
13: aload 7
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 15
14: aload 0
iload 8
aload 9
invokestatic com.oracle.svm.truffle.nfi.NativeClosure.serializeStringRet:(Ljava/lang/Object;)Lorg/graalvm/word/PointerBase;
invokeinterface org.graalvm.word.Pointer.writeWord:(ILorg/graalvm/word/WordBase;)V
end local 9 end local 8 end local 7 15: StackMap locals:
StackMap stack:
iinc 6 1
StackMap locals:
StackMap stack:
16: iload 6
aload 5
getfield com.oracle.svm.truffle.nfi.Target_com_oracle_truffle_nfi_impl_LibFFIClosure_RetPatches.count:I
if_icmplt 6
end local 6 17: StackMap locals:
StackMap stack:
return
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 ret Lorg/graalvm/word/Pointer;
0 18 1 args Lorg/graalvm/nativeimage/c/type/WordPointer;
0 18 2 user Lcom/oracle/svm/truffle/nfi/LibFFI$ClosureData;
1 18 3 closure Lcom/oracle/svm/truffle/nfi/NativeClosure;
2 18 4 retBuffer Ljava/nio/ByteBuffer;
3 18 5 patches Lcom/oracle/svm/truffle/nfi/Target_com_oracle_truffle_nfi_impl_LibFFIClosure_RetPatches;
5 17 6 i I
7 15 7 tag Lcom/oracle/svm/truffle/nfi/Target_com_oracle_truffle_nfi_impl_NativeArgumentBuffer_TypeTag;
8 15 8 offset I
9 15 9 obj Ljava/lang/Object;
11 12 10 handle Lorg/graalvm/word/WordBase;
MethodParameters:
Name Flags
ret
args
user
static void invokeClosureVoidRet(com.oracle.svm.truffle.nfi.libffi.LibFFI$ffi_cif, org.graalvm.nativeimage.c.type.WordPointer, org.graalvm.nativeimage.c.type.WordPointer, com.oracle.svm.truffle.nfi.LibFFI$ClosureData);
descriptor: (Lcom/oracle/svm/truffle/nfi/libffi/LibFFI$ffi_cif;Lorg/graalvm/nativeimage/c/type/WordPointer;Lorg/graalvm/nativeimage/c/type/WordPointer;Lcom/oracle/svm/truffle/nfi/LibFFI$ClosureData;)V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=6, args_size=4
start local 0 start local 1 start local 2 start local 3 0: invokestatic com.oracle.svm.core.CErrorNumber.getCErrorNumber:()I
istore 4
start local 4 1: aload 3
invokeinterface com.oracle.svm.truffle.nfi.LibFFI$ClosureData.isolate:()Lorg/graalvm/nativeimage/Isolate;
invokestatic com.oracle.svm.core.c.function.CEntryPointActions.enterIsolate:(Lorg/graalvm/nativeimage/Isolate;)I
pop
2: 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
iload 4
invokeinterface org.graalvm.nativeimage.c.type.CIntPointer.write:(I)V
3: aload 2
aload 3
invokestatic com.oracle.svm.truffle.nfi.NativeClosure.doInvokeClosureVoidRet:(Lorg/graalvm/nativeimage/c/type/WordPointer;Lcom/oracle/svm/truffle/nfi/LibFFI$ClosureData;)V
4: goto 7
StackMap locals: com.oracle.svm.truffle.nfi.libffi.LibFFI$ffi_cif org.graalvm.nativeimage.c.type.WordPointer org.graalvm.nativeimage.c.type.WordPointer com.oracle.svm.truffle.nfi.LibFFI$ClosureData int
StackMap stack: java.lang.Throwable
5: astore 5
start local 5 6: getstatic com.oracle.svm.truffle.nfi.NativeClosure.pendingException:Lcom/oracle/svm/core/threadlocal/FastThreadLocalObject;
aload 5
invokevirtual com.oracle.svm.core.threadlocal.FastThreadLocalObject.set:(Ljava/lang/Object;)V
end local 5 7: StackMap locals:
StackMap stack:
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
invokeinterface org.graalvm.nativeimage.c.type.CIntPointer.read:()I
istore 4
8: invokestatic com.oracle.svm.core.c.function.CEntryPointActions.leave:()I
pop
9: iload 4
invokestatic com.oracle.svm.core.CErrorNumber.setCErrorNumber:(I)V
10: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 cif Lcom/oracle/svm/truffle/nfi/libffi/LibFFI$ffi_cif;
0 11 1 ret Lorg/graalvm/nativeimage/c/type/WordPointer;
0 11 2 args Lorg/graalvm/nativeimage/c/type/WordPointer;
0 11 3 user Lcom/oracle/svm/truffle/nfi/LibFFI$ClosureData;
1 11 4 errno I
6 7 5 t Ljava/lang/Throwable;
Exception table:
from to target type
3 4 5 Class java.lang.Throwable
RuntimeVisibleAnnotations:
org.graalvm.nativeimage.c.function.CEntryPoint()
com.oracle.svm.core.c.function.CEntryPointOptions(prologue = Lcom/oracle/svm/core/c/function/CEntryPointOptions$NoPrologue;, epilogue = Lcom/oracle/svm/core/c/function/CEntryPointOptions$NoEpilogue;, publishAs = com.oracle.svm.core.c.function.CEntryPointOptions$Publish.NotPublished:Lcom/oracle/svm/core/c/function/CEntryPointOptions$Publish;, include = Lcom/oracle/svm/core/c/function/CEntryPointOptions$NotIncludedAutomatically;)
com.oracle.svm.core.annotate.Uninterruptible(reason = "contains prologue and epilogue for thread state transition", calleeMustBe = false)
MethodParameters:
Name Flags
cif
ret
args
user
private static void doInvokeClosureVoidRet(org.graalvm.nativeimage.c.type.WordPointer, com.oracle.svm.truffle.nfi.LibFFI$ClosureData);
descriptor: (Lorg/graalvm/nativeimage/c/type/WordPointer;Lcom/oracle/svm/truffle/nfi/LibFFI$ClosureData;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 1
invokestatic com.oracle.svm.truffle.nfi.NativeClosure.lookup:(Lcom/oracle/svm/truffle/nfi/LibFFI$ClosureData;)Lcom/oracle/svm/truffle/nfi/NativeClosure;
aload 0
aconst_null
invokevirtual com.oracle.svm.truffle.nfi.NativeClosure.call:(Lorg/graalvm/nativeimage/c/type/WordPointer;Ljava/nio/ByteBuffer;)Ljava/lang/Object;
pop
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 args Lorg/graalvm/nativeimage/c/type/WordPointer;
0 2 1 user Lcom/oracle/svm/truffle/nfi/LibFFI$ClosureData;
MethodParameters:
Name Flags
args
user
static void invokeClosureStringRet(com.oracle.svm.truffle.nfi.libffi.LibFFI$ffi_cif, org.graalvm.nativeimage.c.type.WordPointer, org.graalvm.nativeimage.c.type.WordPointer, com.oracle.svm.truffle.nfi.LibFFI$ClosureData);
descriptor: (Lcom/oracle/svm/truffle/nfi/libffi/LibFFI$ffi_cif;Lorg/graalvm/nativeimage/c/type/WordPointer;Lorg/graalvm/nativeimage/c/type/WordPointer;Lcom/oracle/svm/truffle/nfi/LibFFI$ClosureData;)V
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=6, args_size=4
start local 0 start local 1 start local 2 start local 3 0: invokestatic com.oracle.svm.core.CErrorNumber.getCErrorNumber:()I
istore 4
start local 4 1: aload 3
invokeinterface com.oracle.svm.truffle.nfi.LibFFI$ClosureData.isolate:()Lorg/graalvm/nativeimage/Isolate;
invokestatic com.oracle.svm.core.c.function.CEntryPointActions.enterIsolate:(Lorg/graalvm/nativeimage/Isolate;)I
pop
2: 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
iload 4
invokeinterface org.graalvm.nativeimage.c.type.CIntPointer.write:(I)V
3: aload 1
aload 2
aload 3
invokestatic com.oracle.svm.truffle.nfi.NativeClosure.doInvokeClosureStringRet:(Lorg/graalvm/nativeimage/c/type/WordPointer;Lorg/graalvm/nativeimage/c/type/WordPointer;Lcom/oracle/svm/truffle/nfi/LibFFI$ClosureData;)V
4: goto 7
StackMap locals: com.oracle.svm.truffle.nfi.libffi.LibFFI$ffi_cif org.graalvm.nativeimage.c.type.WordPointer org.graalvm.nativeimage.c.type.WordPointer com.oracle.svm.truffle.nfi.LibFFI$ClosureData int
StackMap stack: java.lang.Throwable
5: astore 5
start local 5 6: getstatic com.oracle.svm.truffle.nfi.NativeClosure.pendingException:Lcom/oracle/svm/core/threadlocal/FastThreadLocalObject;
aload 5
invokevirtual com.oracle.svm.core.threadlocal.FastThreadLocalObject.set:(Ljava/lang/Object;)V
end local 5 7: StackMap locals:
StackMap stack:
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
invokeinterface org.graalvm.nativeimage.c.type.CIntPointer.read:()I
istore 4
8: invokestatic com.oracle.svm.core.c.function.CEntryPointActions.leave:()I
pop
9: iload 4
invokestatic com.oracle.svm.core.CErrorNumber.setCErrorNumber:(I)V
10: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 cif Lcom/oracle/svm/truffle/nfi/libffi/LibFFI$ffi_cif;
0 11 1 ret Lorg/graalvm/nativeimage/c/type/WordPointer;
0 11 2 args Lorg/graalvm/nativeimage/c/type/WordPointer;
0 11 3 user Lcom/oracle/svm/truffle/nfi/LibFFI$ClosureData;
1 11 4 errno I
6 7 5 t Ljava/lang/Throwable;
Exception table:
from to target type
3 4 5 Class java.lang.Throwable
RuntimeVisibleAnnotations:
org.graalvm.nativeimage.c.function.CEntryPoint()
com.oracle.svm.core.c.function.CEntryPointOptions(prologue = Lcom/oracle/svm/core/c/function/CEntryPointOptions$NoPrologue;, epilogue = Lcom/oracle/svm/core/c/function/CEntryPointOptions$NoEpilogue;, publishAs = com.oracle.svm.core.c.function.CEntryPointOptions$Publish.NotPublished:Lcom/oracle/svm/core/c/function/CEntryPointOptions$Publish;, include = Lcom/oracle/svm/core/c/function/CEntryPointOptions$NotIncludedAutomatically;)
com.oracle.svm.core.annotate.Uninterruptible(reason = "contains prologue and epilogue for thread state transition", calleeMustBe = false)
MethodParameters:
Name Flags
cif
ret
args
user
private static void doInvokeClosureStringRet(org.graalvm.nativeimage.c.type.WordPointer, org.graalvm.nativeimage.c.type.WordPointer, com.oracle.svm.truffle.nfi.LibFFI$ClosureData);
descriptor: (Lorg/graalvm/nativeimage/c/type/WordPointer;Lorg/graalvm/nativeimage/c/type/WordPointer;Lcom/oracle/svm/truffle/nfi/LibFFI$ClosureData;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 2
invokestatic com.oracle.svm.truffle.nfi.NativeClosure.lookup:(Lcom/oracle/svm/truffle/nfi/LibFFI$ClosureData;)Lcom/oracle/svm/truffle/nfi/NativeClosure;
aload 1
aconst_null
invokevirtual com.oracle.svm.truffle.nfi.NativeClosure.call:(Lorg/graalvm/nativeimage/c/type/WordPointer;Ljava/nio/ByteBuffer;)Ljava/lang/Object;
astore 3
start local 3 1: aload 0
aload 3
invokestatic com.oracle.svm.truffle.nfi.NativeClosure.serializeStringRet:(Ljava/lang/Object;)Lorg/graalvm/word/PointerBase;
invokeinterface org.graalvm.nativeimage.c.type.WordPointer.write:(Lorg/graalvm/word/WordBase;)V
2: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 ret Lorg/graalvm/nativeimage/c/type/WordPointer;
0 3 1 args Lorg/graalvm/nativeimage/c/type/WordPointer;
0 3 2 user Lcom/oracle/svm/truffle/nfi/LibFFI$ClosureData;
1 3 3 retValue Ljava/lang/Object;
MethodParameters:
Name Flags
ret
args
user
static void invokeClosureObjectRet(com.oracle.svm.truffle.nfi.libffi.LibFFI$ffi_cif, org.graalvm.nativeimage.c.type.WordPointer, org.graalvm.nativeimage.c.type.WordPointer, com.oracle.svm.truffle.nfi.LibFFI$ClosureData);
descriptor: (Lcom/oracle/svm/truffle/nfi/libffi/LibFFI$ffi_cif;Lorg/graalvm/nativeimage/c/type/WordPointer;Lorg/graalvm/nativeimage/c/type/WordPointer;Lcom/oracle/svm/truffle/nfi/LibFFI$ClosureData;)V
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=6, args_size=4
start local 0 start local 1 start local 2 start local 3 0: invokestatic com.oracle.svm.core.CErrorNumber.getCErrorNumber:()I
istore 4
start local 4 1: aload 3
invokeinterface com.oracle.svm.truffle.nfi.LibFFI$ClosureData.isolate:()Lorg/graalvm/nativeimage/Isolate;
invokestatic com.oracle.svm.core.c.function.CEntryPointActions.enterIsolate:(Lorg/graalvm/nativeimage/Isolate;)I
pop
2: 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
iload 4
invokeinterface org.graalvm.nativeimage.c.type.CIntPointer.write:(I)V
3: aload 1
aload 2
aload 3
invokestatic com.oracle.svm.truffle.nfi.NativeClosure.doInvokeClosureObjectRet:(Lorg/graalvm/nativeimage/c/type/WordPointer;Lorg/graalvm/nativeimage/c/type/WordPointer;Lcom/oracle/svm/truffle/nfi/LibFFI$ClosureData;)V
4: goto 7
StackMap locals: com.oracle.svm.truffle.nfi.libffi.LibFFI$ffi_cif org.graalvm.nativeimage.c.type.WordPointer org.graalvm.nativeimage.c.type.WordPointer com.oracle.svm.truffle.nfi.LibFFI$ClosureData int
StackMap stack: java.lang.Throwable
5: astore 5
start local 5 6: getstatic com.oracle.svm.truffle.nfi.NativeClosure.pendingException:Lcom/oracle/svm/core/threadlocal/FastThreadLocalObject;
aload 5
invokevirtual com.oracle.svm.core.threadlocal.FastThreadLocalObject.set:(Ljava/lang/Object;)V
end local 5 7: StackMap locals:
StackMap stack:
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
invokeinterface org.graalvm.nativeimage.c.type.CIntPointer.read:()I
istore 4
8: invokestatic com.oracle.svm.core.c.function.CEntryPointActions.leave:()I
pop
9: iload 4
invokestatic com.oracle.svm.core.CErrorNumber.setCErrorNumber:(I)V
10: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 cif Lcom/oracle/svm/truffle/nfi/libffi/LibFFI$ffi_cif;
0 11 1 ret Lorg/graalvm/nativeimage/c/type/WordPointer;
0 11 2 args Lorg/graalvm/nativeimage/c/type/WordPointer;
0 11 3 user Lcom/oracle/svm/truffle/nfi/LibFFI$ClosureData;
1 11 4 errno I
6 7 5 t Ljava/lang/Throwable;
Exception table:
from to target type
3 4 5 Class java.lang.Throwable
RuntimeVisibleAnnotations:
org.graalvm.nativeimage.c.function.CEntryPoint()
com.oracle.svm.core.c.function.CEntryPointOptions(prologue = Lcom/oracle/svm/core/c/function/CEntryPointOptions$NoPrologue;, epilogue = Lcom/oracle/svm/core/c/function/CEntryPointOptions$NoEpilogue;, publishAs = com.oracle.svm.core.c.function.CEntryPointOptions$Publish.NotPublished:Lcom/oracle/svm/core/c/function/CEntryPointOptions$Publish;, include = Lcom/oracle/svm/core/c/function/CEntryPointOptions$NotIncludedAutomatically;)
com.oracle.svm.core.annotate.Uninterruptible(reason = "contains prologue and epilogue for thread state transition", calleeMustBe = false)
MethodParameters:
Name Flags
cif
ret
args
user
private static void doInvokeClosureObjectRet(org.graalvm.nativeimage.c.type.WordPointer, org.graalvm.nativeimage.c.type.WordPointer, com.oracle.svm.truffle.nfi.LibFFI$ClosureData);
descriptor: (Lorg/graalvm/nativeimage/c/type/WordPointer;Lorg/graalvm/nativeimage/c/type/WordPointer;Lcom/oracle/svm/truffle/nfi/LibFFI$ClosureData;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 2
invokestatic com.oracle.svm.truffle.nfi.NativeClosure.lookup:(Lcom/oracle/svm/truffle/nfi/LibFFI$ClosureData;)Lcom/oracle/svm/truffle/nfi/NativeClosure;
aload 1
aconst_null
invokevirtual com.oracle.svm.truffle.nfi.NativeClosure.call:(Lorg/graalvm/nativeimage/c/type/WordPointer;Ljava/nio/ByteBuffer;)Ljava/lang/Object;
astore 3
start local 3 1: aload 3
ifnonnull 4
2: aload 0
invokestatic org.graalvm.word.WordFactory.zero:()Lorg/graalvm/word/WordBase;
invokeinterface org.graalvm.nativeimage.c.type.WordPointer.write:(Lorg/graalvm/word/WordBase;)V
3: goto 6
4: StackMap locals: java.lang.Object
StackMap stack:
ldc Lcom/oracle/svm/truffle/nfi/TruffleNFISupport;
invokestatic org.graalvm.nativeimage.ImageSingletons.lookup:(Ljava/lang/Class;)Ljava/lang/Object;
checkcast com.oracle.svm.truffle.nfi.TruffleNFISupport
aload 3
invokevirtual com.oracle.svm.truffle.nfi.TruffleNFISupport.createGlobalHandle:(Ljava/lang/Object;)Lcom/oracle/svm/truffle/nfi/TruffleObjectHandle;
astore 4
start local 4 5: aload 0
aload 4
invokeinterface org.graalvm.nativeimage.c.type.WordPointer.write:(Lorg/graalvm/word/WordBase;)V
end local 4 6: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 ret Lorg/graalvm/nativeimage/c/type/WordPointer;
0 7 1 args Lorg/graalvm/nativeimage/c/type/WordPointer;
0 7 2 user Lcom/oracle/svm/truffle/nfi/LibFFI$ClosureData;
1 7 3 obj Ljava/lang/Object;
5 6 4 handle Lcom/oracle/svm/truffle/nfi/TruffleObjectHandle;
MethodParameters:
Name Flags
ret
args
user
}
SourceFile: "NativeClosure.java"
InnerClasses:
public final Publish = com.oracle.svm.core.c.function.CEntryPointOptions$Publish of com.oracle.svm.core.c.function.CEntryPointOptions
public abstract ClosureData = com.oracle.svm.truffle.nfi.LibFFI$ClosureData of com.oracle.svm.truffle.nfi.LibFFI
abstract NativeClosureHandle = com.oracle.svm.truffle.nfi.LibFFI$NativeClosureHandle of com.oracle.svm.truffle.nfi.LibFFI
public abstract ffi_arg = com.oracle.svm.truffle.nfi.libffi.LibFFI$ffi_arg 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_closure = com.oracle.svm.truffle.nfi.libffi.LibFFI$ffi_closure of com.oracle.svm.truffle.nfi.libffi.LibFFI
public abstract ffi_closure_callback = com.oracle.svm.truffle.nfi.libffi.LibFFI$ffi_closure_callback of com.oracle.svm.truffle.nfi.libffi.LibFFI