public final class com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension extends com.oracle.truffle.llvm.runtime.NativeContextExtension
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension
super_class: com.oracle.truffle.llvm.runtime.NativeContextExtension
{
private static final java.lang.String SIGNATURE_SOURCE_NAME;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "llvm-nfi-signature"
private static final int WELL_KNOWN_CACHE_INITIAL_SIZE;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 8
private static final com.oracle.truffle.api.interop.InteropLibrary INTEROP;
descriptor: Lcom/oracle/truffle/api/interop/InteropLibrary;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private java.lang.Object defaultLibraryHandle;
descriptor: Ljava/lang/Object;
flags: (0x0002) ACC_PRIVATE
private boolean internalLibrariesAdded;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private final java.util.List<java.lang.Object> libraryHandles;
descriptor: Ljava/util/List;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/List<Ljava/lang/Object;>;
private final org.graalvm.collections.EconomicMap<java.lang.String, com.oracle.truffle.api.CallTarget> visited;
descriptor: Lorg/graalvm/collections/EconomicMap;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Lorg/graalvm/collections/EconomicMap<Ljava/lang/String;Lcom/oracle/truffle/api/CallTarget;>;
private final com.oracle.truffle.api.TruffleLanguage$Env env;
descriptor: Lcom/oracle/truffle/api/TruffleLanguage$Env;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension$SignatureSourceCache signatureSourceCache;
descriptor: Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension$SignatureSourceCache;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final org.graalvm.collections.EconomicMap<com.oracle.truffle.api.source.Source, java.lang.Object> signatureCache;
descriptor: Lorg/graalvm/collections/EconomicMap;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Lorg/graalvm/collections/EconomicMap<Lcom/oracle/truffle/api/source/Source;Ljava/lang/Object;>;
private java.lang.Object[] wellKnownFunctionCache;
descriptor: [Ljava/lang/Object;
flags: (0x0002) ACC_PRIVATE
static final boolean $assertionsDisabled;
descriptor: Z
flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC
private static volatile int[] $SWITCH_TABLE$com$oracle$truffle$llvm$runtime$types$PrimitiveType$PrimitiveKind;
descriptor: [I
flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension;
invokevirtual java.lang.Class.desiredAssertionStatus:()Z
ifne 1
iconst_1
goto 2
StackMap locals:
StackMap stack:
1: iconst_0
StackMap locals:
StackMap stack: int
2: putstatic com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.$assertionsDisabled:Z
3: invokestatic com.oracle.truffle.api.interop.InteropLibrary.getFactory:()Lcom/oracle/truffle/api/library/LibraryFactory;
invokevirtual com.oracle.truffle.api.library.LibraryFactory.getUncached:()Lcom/oracle/truffle/api/library/Library;
checkcast com.oracle.truffle.api.interop.InteropLibrary
putstatic com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.INTEROP:Lcom/oracle/truffle/api/interop/InteropLibrary;
return
LocalVariableTable:
Start End Slot Name Signature
private void <init>(com.oracle.truffle.api.TruffleLanguage$Env, com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension$SignatureSourceCache);
descriptor: (Lcom/oracle/truffle/api/TruffleLanguage$Env;Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension$SignatureSourceCache;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial com.oracle.truffle.llvm.runtime.NativeContextExtension.<init>:()V
1: aload 0
iconst_0
putfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.internalLibrariesAdded:Z
2: aload 0
new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
putfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.libraryHandles:Ljava/util/List;
3: aload 0
invokestatic org.graalvm.collections.EconomicMap.create:()Lorg/graalvm/collections/EconomicMap;
putfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.visited:Lorg/graalvm/collections/EconomicMap;
4: aload 0
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.truffle.llvm.nativemode.runtime.NFIContextExtension.signatureCache:Lorg/graalvm/collections/EconomicMap;
5: getstatic com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.$assertionsDisabled:Z
ifne 6
aload 1
invokevirtual com.oracle.truffle.api.TruffleLanguage$Env.getOptions:()Lorg/graalvm/options/OptionValues;
getstatic com.oracle.truffle.llvm.runtime.options.SulongEngineOption.ENABLE_NFI:Lorg/graalvm/options/OptionKey;
invokeinterface org.graalvm.options.OptionValues.get:(Lorg/graalvm/options/OptionKey;)Ljava/lang/Object;
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.booleanValue:()Z
ifne 6
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
6: StackMap locals: com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension com.oracle.truffle.api.TruffleLanguage$Env com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension$SignatureSourceCache
StackMap stack:
aload 0
aload 1
putfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.env:Lcom/oracle/truffle/api/TruffleLanguage$Env;
7: aload 0
aload 2
putfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.signatureSourceCache:Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension$SignatureSourceCache;
8: aload 0
bipush 8
anewarray java.lang.Object
putfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.wellKnownFunctionCache:[Ljava/lang/Object;
9: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension;
0 10 1 env Lcom/oracle/truffle/api/TruffleLanguage$Env;
0 10 2 signatureSourceCache Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension$SignatureSourceCache;
MethodParameters:
Name Flags
env
signatureSourceCache
public void initialize(com.oracle.truffle.llvm.runtime.LLVMContext);
descriptor: (Lcom/oracle/truffle/llvm/runtime/LLVMContext;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=5, args_size=2
start local 0 start local 1 0: getstatic com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.$assertionsDisabled:Z
ifne 1
aload 0
invokevirtual com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.isInitialized:()Z
ifeq 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.internalLibrariesAdded:Z
ifne 10
2: aload 0
aload 1
new java.lang.StringBuilder
dup
ldc "libsulong-native."
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
invokestatic com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.getNativeLibrarySuffix:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
ldc "<default nfi library>"
invokevirtual com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.locateInternalLibrary:(Lcom/oracle/truffle/llvm/runtime/LLVMContext;Ljava/lang/String;Ljava/lang/Object;)Lcom/oracle/truffle/api/TruffleFile;
astore 2
start local 2 3: aload 0
aload 2
invokevirtual com.oracle.truffle.api.TruffleFile.getPath:()Ljava/lang/String;
aload 1
invokevirtual com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.loadLibrary:(Ljava/lang/String;Lcom/oracle/truffle/llvm/runtime/LLVMContext;)Ljava/lang/Object;
astore 3
start local 3 4: aload 3
instanceof com.oracle.truffle.api.CallTarget
ifeq 6
5: aload 0
getfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.libraryHandles:Ljava/util/List;
aload 3
checkcast com.oracle.truffle.api.CallTarget
iconst_0
anewarray java.lang.Object
invokeinterface com.oracle.truffle.api.CallTarget.call:([Ljava/lang/Object;)Ljava/lang/Object;
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
6: StackMap locals: com.oracle.truffle.api.TruffleFile java.lang.Object
StackMap stack:
aload 0
invokevirtual com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.loadDefaultLibrary:()Ljava/lang/Object;
astore 4
start local 4 7: aload 4
instanceof com.oracle.truffle.api.CallTarget
ifeq 9
8: aload 0
aload 4
checkcast com.oracle.truffle.api.CallTarget
iconst_0
anewarray java.lang.Object
invokeinterface com.oracle.truffle.api.CallTarget.call:([Ljava/lang/Object;)Ljava/lang/Object;
putfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.defaultLibraryHandle:Ljava/lang/Object;
9: StackMap locals: java.lang.Object
StackMap stack:
aload 0
iconst_1
putfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.internalLibrariesAdded:Z
end local 4 end local 3 end local 2 10: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension;
0 11 1 context Lcom/oracle/truffle/llvm/runtime/LLVMContext;
3 10 2 file Lcom/oracle/truffle/api/TruffleFile;
4 10 3 lib Ljava/lang/Object;
7 10 4 defaultLib Ljava/lang/Object;
MethodParameters:
Name Flags
context
public boolean isInitialized();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.defaultLibraryHandle:Ljava/lang/Object;
ifnull 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension;
public com.oracle.truffle.llvm.runtime.NativeContextExtension$NativePointerIntoLibrary getNativeHandle(java.lang.String);
descriptor: (Ljava/lang/String;)Lcom/oracle/truffle/llvm/runtime/NativeContextExtension$NativePointerIntoLibrary;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=5, args_size=2
start local 0 start local 1 0: invokestatic com.oracle.truffle.api.CompilerAsserts.neverPartOfCompilation:()V
1: aload 0
aload 1
invokevirtual com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.getNativeDataObjectOrNull:(Ljava/lang/String;)Lcom/oracle/truffle/llvm/runtime/NativeContextExtension$NativeLookupResult;
astore 2
start local 2 2: aload 2
ifnull 6
3: getstatic com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.INTEROP:Lcom/oracle/truffle/api/interop/InteropLibrary;
aload 2
invokevirtual com.oracle.truffle.llvm.runtime.NativeContextExtension$NativeLookupResult.getObject:()Ljava/lang/Object;
invokevirtual com.oracle.truffle.api.interop.InteropLibrary.asPointer:(Ljava/lang/Object;)J
lstore 3
start local 3 4: new com.oracle.truffle.llvm.runtime.NativeContextExtension$NativePointerIntoLibrary
dup
lload 3
invokespecial com.oracle.truffle.llvm.runtime.NativeContextExtension$NativePointerIntoLibrary.<init>:(J)V
5: areturn
end local 3 6: StackMap locals: com.oracle.truffle.llvm.runtime.NativeContextExtension$NativeLookupResult
StackMap stack:
aconst_null
areturn
end local 2 7: StackMap locals: com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension java.lang.String
StackMap stack: com.oracle.truffle.api.interop.UnsupportedMessageException
astore 2
start local 2 8: new java.lang.IllegalStateException
dup
aload 2
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/Throwable;)V
athrow
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension;
0 9 1 name Ljava/lang/String;
2 7 2 result Lcom/oracle/truffle/llvm/runtime/NativeContextExtension$NativeLookupResult;
4 6 3 pointer J
8 9 2 e Lcom/oracle/truffle/api/interop/UnsupportedMessageException;
Exception table:
from to target type
1 5 7 Class com.oracle.truffle.api.interop.UnsupportedMessageException
MethodParameters:
Name Flags
name
public java.lang.Object createNativeWrapper(com.oracle.truffle.llvm.runtime.LLVMFunction, com.oracle.truffle.llvm.runtime.LLVMFunctionCode);
descriptor: (Lcom/oracle/truffle/llvm/runtime/LLVMFunction;Lcom/oracle/truffle/llvm/runtime/LLVMFunctionCode;)Ljava/lang/Object;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=6, args_size=3
start local 0 start local 1 start local 2 0: aconst_null
astore 3
start local 3 1: aload 0
getfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.signatureSourceCache:Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension$SignatureSourceCache;
aload 1
invokevirtual com.oracle.truffle.llvm.runtime.LLVMFunction.getType:()Lcom/oracle/truffle/llvm/runtime/types/FunctionType;
invokevirtual com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension$SignatureSourceCache.getSignatureSource:(Lcom/oracle/truffle/llvm/runtime/types/FunctionType;)Lcom/oracle/truffle/api/source/Source;
astore 4
start local 4 2: aload 0
aload 4
invokevirtual com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.getCachedSignature:(Lcom/oracle/truffle/api/source/Source;)Ljava/lang/Object;
astore 5
start local 5 3: invokestatic com.oracle.truffle.nfi.api.SignatureLibrary.getUncached:()Lcom/oracle/truffle/nfi/api/SignatureLibrary;
aload 5
new com.oracle.truffle.llvm.runtime.interop.nfi.LLVMNativeWrapper
dup
aload 1
aload 2
invokespecial com.oracle.truffle.llvm.runtime.interop.nfi.LLVMNativeWrapper.<init>:(Lcom/oracle/truffle/llvm/runtime/LLVMFunction;Lcom/oracle/truffle/llvm/runtime/LLVMFunctionCode;)V
invokevirtual com.oracle.truffle.nfi.api.SignatureLibrary.createClosure:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
astore 3
end local 5 end local 4 4: goto 6
StackMap locals: com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension com.oracle.truffle.llvm.runtime.LLVMFunction com.oracle.truffle.llvm.runtime.LLVMFunctionCode java.lang.Object
StackMap stack: com.oracle.truffle.llvm.runtime.NativeContextExtension$UnsupportedNativeTypeException
5: pop
6: StackMap locals:
StackMap stack:
aload 3
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension;
0 7 1 function Lcom/oracle/truffle/llvm/runtime/LLVMFunction;
0 7 2 code Lcom/oracle/truffle/llvm/runtime/LLVMFunctionCode;
1 7 3 wrapper Ljava/lang/Object;
2 4 4 signatureSource Lcom/oracle/truffle/api/source/Source;
3 4 5 signature Ljava/lang/Object;
Exception table:
from to target type
1 4 5 Class com.oracle.truffle.llvm.runtime.NativeContextExtension$UnsupportedNativeTypeException
RuntimeVisibleAnnotations:
com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
MethodParameters:
Name Flags
function
code
public synchronized void addLibraryHandles(java.lang.Object);
descriptor: (Ljava/lang/Object;)V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: invokestatic com.oracle.truffle.api.CompilerAsserts.neverPartOfCompilation:()V
1: aload 0
getfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.libraryHandles:Ljava/util/List;
aload 1
invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
ifne 3
2: aload 0
getfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.libraryHandles:Ljava/util/List;
aload 1
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
3: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension;
0 4 1 library Ljava/lang/Object;
MethodParameters:
Name Flags
library
public synchronized com.oracle.truffle.api.CallTarget parseNativeLibrary(java.lang.String, com.oracle.truffle.llvm.runtime.LLVMContext);
descriptor: (Ljava/lang/String;Lcom/oracle/truffle/llvm/runtime/LLVMContext;)Lcom/oracle/truffle/api/CallTarget;
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=3, locals=4, args_size=3
start local 0 start local 1 start local 2 0: invokestatic com.oracle.truffle.api.CompilerAsserts.neverPartOfCompilation:()V
1: aload 0
getfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.visited:Lorg/graalvm/collections/EconomicMap;
aload 1
invokeinterface org.graalvm.collections.EconomicMap.containsKey:(Ljava/lang/Object;)Z
ifne 7
2: aload 0
aload 1
aload 2
invokevirtual com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.loadLibrary:(Ljava/lang/String;Lcom/oracle/truffle/llvm/runtime/LLVMContext;)Ljava/lang/Object;
astore 3
start local 3 3: aload 3
ifnull 6
4: aload 0
getfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.visited:Lorg/graalvm/collections/EconomicMap;
aload 1
aload 3
checkcast com.oracle.truffle.api.CallTarget
invokeinterface org.graalvm.collections.EconomicMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
5: aload 3
checkcast com.oracle.truffle.api.CallTarget
areturn
6: StackMap locals: java.lang.Object
StackMap stack:
new java.lang.IllegalStateException
dup
ldc "Native library call target is null."
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
end local 3 7: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.visited:Lorg/graalvm/collections/EconomicMap;
aload 1
invokeinterface org.graalvm.collections.EconomicMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast com.oracle.truffle.api.CallTarget
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension;
0 8 1 path Ljava/lang/String;
0 8 2 context Lcom/oracle/truffle/llvm/runtime/LLVMContext;
3 7 3 callTarget Ljava/lang/Object;
Exceptions:
throws java.lang.UnsatisfiedLinkError
MethodParameters:
Name Flags
path
context
public static java.lang.String getNativeLibrarySuffix();
descriptor: ()Ljava/lang/String;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: ldc "os.name"
invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
ldc "mac"
invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
ifeq 2
1: ldc "dylib"
areturn
2: StackMap locals:
StackMap stack:
ldc "so"
areturn
LocalVariableTable:
Start End Slot Name Signature
public static java.lang.String getNativeLibrarySuffixVersioned(int);
descriptor: (I)Ljava/lang/String;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: ldc "os.name"
invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
ldc "mac"
invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
ifeq 2
1: new java.lang.StringBuilder
dup
iload 0
invokestatic java.lang.String.valueOf:(I)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc ".dylib"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
2: StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
ldc "so."
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 0
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 version I
MethodParameters:
Name Flags
version
private java.lang.Object loadLibrary(java.lang.String, com.oracle.truffle.llvm.runtime.LLVMContext);
descriptor: (Ljava/lang/String;Lcom/oracle/truffle/llvm/runtime/LLVMContext;)Ljava/lang/Object;
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=3, args_size=3
start local 0 start local 1 start local 2 0: invokestatic com.oracle.truffle.api.CompilerAsserts.neverPartOfCompilation:()V
1: aload 0
aload 1
iconst_0
aconst_null
aload 2
invokevirtual com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.loadLibrary:(Ljava/lang/String;ZLjava/lang/String;Lcom/oracle/truffle/llvm/runtime/LLVMContext;)Ljava/lang/Object;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension;
0 2 1 path Ljava/lang/String;
0 2 2 context Lcom/oracle/truffle/llvm/runtime/LLVMContext;
MethodParameters:
Name Flags
path
context
private java.lang.Object loadLibrary(java.lang.String, boolean, java.lang.String, com.oracle.truffle.llvm.runtime.LLVMContext);
descriptor: (Ljava/lang/String;ZLjava/lang/String;Lcom/oracle/truffle/llvm/runtime/LLVMContext;)Ljava/lang/Object;
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=8, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 4
aload 1
invokestatic com.oracle.truffle.llvm.runtime.LibraryLocator.traceLoadNative:(Lcom/oracle/truffle/llvm/runtime/LLVMContext;Ljava/lang/Object;)V
1: aload 3
ifnonnull 4
2: ldc "load \"%s\""
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 1
aastore
invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
astore 5
start local 5 3: goto 5
end local 5 4: StackMap locals:
StackMap stack:
ldc "load(%s) \"%s\""
iconst_2
anewarray java.lang.Object
dup
iconst_0
aload 3
aastore
dup
iconst_1
aload 1
aastore
invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
astore 5
start local 5 5: StackMap locals: java.lang.String
StackMap stack:
ldc "nfi"
aload 5
new java.lang.StringBuilder
dup
ldc "(load "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc ")"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic com.oracle.truffle.api.source.Source.newBuilder:(Ljava/lang/String;Ljava/lang/CharSequence;Ljava/lang/String;)Lcom/oracle/truffle/api/source/Source$LiteralBuilder;
iconst_1
invokevirtual com.oracle.truffle.api.source.Source$LiteralBuilder.internal:(Z)Lcom/oracle/truffle/api/source/Source$LiteralBuilder;
invokevirtual com.oracle.truffle.api.source.Source$LiteralBuilder.build:()Lcom/oracle/truffle/api/source/Source;
astore 6
start local 6 6: aload 0
getfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.env:Lcom/oracle/truffle/api/TruffleLanguage$Env;
aload 6
iconst_0
anewarray java.lang.String
invokevirtual com.oracle.truffle.api.TruffleLanguage$Env.parseInternal:(Lcom/oracle/truffle/api/source/Source;[Ljava/lang/String;)Lcom/oracle/truffle/api/CallTarget;
7: areturn
8: StackMap locals: com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension java.lang.String int java.lang.String com.oracle.truffle.llvm.runtime.LLVMContext java.lang.String com.oracle.truffle.api.source.Source
StackMap stack: java.lang.UnsatisfiedLinkError
astore 7
start local 7 9: iload 2
ifeq 11
10: aconst_null
areturn
11: StackMap locals: java.lang.UnsatisfiedLinkError
StackMap stack:
aload 7
athrow
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 12 0 this Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension;
0 12 1 path Ljava/lang/String;
0 12 2 optional Z
0 12 3 flags Ljava/lang/String;
0 12 4 context Lcom/oracle/truffle/llvm/runtime/LLVMContext;
3 4 5 loadExpression Ljava/lang/String;
5 12 5 loadExpression Ljava/lang/String;
6 12 6 source Lcom/oracle/truffle/api/source/Source;
9 12 7 ex Ljava/lang/UnsatisfiedLinkError;
Exception table:
from to target type
6 7 8 Class java.lang.UnsatisfiedLinkError
MethodParameters:
Name Flags
path
optional
flags
context
private java.lang.Object loadDefaultLibrary();
descriptor: ()Ljava/lang/Object;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=1
start local 0 0: invokestatic com.oracle.truffle.api.CompilerAsserts.neverPartOfCompilation:()V
1: ldc "nfi"
ldc "default"
ldc "default"
invokestatic com.oracle.truffle.api.source.Source.newBuilder:(Ljava/lang/String;Ljava/lang/CharSequence;Ljava/lang/String;)Lcom/oracle/truffle/api/source/Source$LiteralBuilder;
iconst_1
invokevirtual com.oracle.truffle.api.source.Source$LiteralBuilder.internal:(Z)Lcom/oracle/truffle/api/source/Source$LiteralBuilder;
invokevirtual com.oracle.truffle.api.source.Source$LiteralBuilder.build:()Lcom/oracle/truffle/api/source/Source;
astore 1
start local 1 2: aload 0
getfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.env:Lcom/oracle/truffle/api/TruffleLanguage$Env;
aload 1
iconst_0
anewarray java.lang.String
invokevirtual com.oracle.truffle.api.TruffleLanguage$Env.parseInternal:(Lcom/oracle/truffle/api/source/Source;[Ljava/lang/String;)Lcom/oracle/truffle/api/CallTarget;
3: areturn
4: StackMap locals: com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension com.oracle.truffle.api.source.Source
StackMap stack: java.lang.Exception
astore 2
start local 2 5: new java.lang.IllegalArgumentException
dup
aload 2
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/Throwable;)V
athrow
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension;
2 6 1 source Lcom/oracle/truffle/api/source/Source;
5 6 2 ex Ljava/lang/Exception;
Exception table:
from to target type
2 3 4 Class java.lang.Exception
private static java.lang.Object getNativeFunctionOrNull(java.lang.Object, java.lang.String);
descriptor: (Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: invokestatic com.oracle.truffle.api.CompilerAsserts.neverPartOfCompilation:()V
1: getstatic com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.INTEROP:Lcom/oracle/truffle/api/interop/InteropLibrary;
aload 0
aload 1
invokevirtual com.oracle.truffle.api.interop.InteropLibrary.isMemberReadable:(Ljava/lang/Object;Ljava/lang/String;)Z
ifne 3
2: aconst_null
areturn
3: StackMap locals:
StackMap stack:
getstatic com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.INTEROP:Lcom/oracle/truffle/api/interop/InteropLibrary;
aload 0
aload 1
invokevirtual com.oracle.truffle.api.interop.InteropLibrary.readMember:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
4: areturn
5: StackMap locals:
StackMap stack: com.oracle.truffle.api.interop.UnknownIdentifierException
pop
6: aconst_null
areturn
7: StackMap locals:
StackMap stack: com.oracle.truffle.api.interop.InteropException
astore 2
start local 2 8: new java.lang.IllegalStateException
dup
aload 2
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/Throwable;)V
athrow
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 library Ljava/lang/Object;
0 9 1 name Ljava/lang/String;
8 9 2 ex Lcom/oracle/truffle/api/interop/InteropException;
Exception table:
from to target type
3 4 5 Class com.oracle.truffle.api.interop.UnknownIdentifierException
3 4 7 Class com.oracle.truffle.api.interop.InteropException
MethodParameters:
Name Flags
library
name
private static java.lang.String getNativeType(com.oracle.truffle.llvm.runtime.types.Type);
descriptor: (Lcom/oracle/truffle/llvm/runtime/types/Type;)Ljava/lang/String;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=3, args_size=1
start local 0 0: aload 0
instanceof com.oracle.truffle.llvm.runtime.types.FunctionType
ifeq 2
1: aload 0
checkcast com.oracle.truffle.llvm.runtime.types.FunctionType
iconst_0
invokestatic com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.getNativeSignature:(Lcom/oracle/truffle/llvm/runtime/types/FunctionType;I)Ljava/lang/String;
areturn
2: StackMap locals:
StackMap stack:
aload 0
instanceof com.oracle.truffle.llvm.runtime.types.PointerType
ifeq 5
aload 0
checkcast com.oracle.truffle.llvm.runtime.types.PointerType
invokevirtual com.oracle.truffle.llvm.runtime.types.PointerType.getPointeeType:()Lcom/oracle/truffle/llvm/runtime/types/Type;
instanceof com.oracle.truffle.llvm.runtime.types.FunctionType
ifeq 5
3: aload 0
checkcast com.oracle.truffle.llvm.runtime.types.PointerType
invokevirtual com.oracle.truffle.llvm.runtime.types.PointerType.getPointeeType:()Lcom/oracle/truffle/llvm/runtime/types/Type;
checkcast com.oracle.truffle.llvm.runtime.types.FunctionType
astore 1
start local 1 4: aload 1
iconst_0
invokestatic com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.getNativeSignature:(Lcom/oracle/truffle/llvm/runtime/types/FunctionType;I)Ljava/lang/String;
areturn
end local 1 5: StackMap locals:
StackMap stack:
aload 0
instanceof com.oracle.truffle.llvm.runtime.types.PointerType
ifeq 7
6: ldc "POINTER"
areturn
7: StackMap locals:
StackMap stack:
aload 0
instanceof com.oracle.truffle.llvm.runtime.types.PrimitiveType
ifeq 18
8: aload 0
checkcast com.oracle.truffle.llvm.runtime.types.PrimitiveType
astore 1
start local 1 9: aload 1
invokevirtual com.oracle.truffle.llvm.runtime.types.PrimitiveType.getPrimitiveKind:()Lcom/oracle/truffle/llvm/runtime/types/PrimitiveType$PrimitiveKind;
astore 2
start local 2 10: invokestatic com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.$SWITCH_TABLE$com$oracle$truffle$llvm$runtime$types$PrimitiveType$PrimitiveKind:()[I
aload 2
invokevirtual com.oracle.truffle.llvm.runtime.types.PrimitiveType$PrimitiveKind.ordinal:()I
iaload
tableswitch { // 1 - 8
1: 11
2: 11
3: 12
4: 13
5: 14
6: 17
7: 15
8: 16
default: 17
}
11: StackMap locals: com.oracle.truffle.llvm.runtime.types.PrimitiveType com.oracle.truffle.llvm.runtime.types.PrimitiveType$PrimitiveKind
StackMap stack:
ldc "SINT8"
areturn
12: StackMap locals:
StackMap stack:
ldc "SINT16"
areturn
13: StackMap locals:
StackMap stack:
ldc "SINT32"
areturn
14: StackMap locals:
StackMap stack:
ldc "SINT64"
areturn
15: StackMap locals:
StackMap stack:
ldc "FLOAT"
areturn
16: StackMap locals:
StackMap stack:
ldc "DOUBLE"
areturn
17: StackMap locals:
StackMap stack:
new com.oracle.truffle.llvm.runtime.NativeContextExtension$UnsupportedNativeTypeException
dup
aload 1
invokespecial com.oracle.truffle.llvm.runtime.NativeContextExtension$UnsupportedNativeTypeException.<init>:(Lcom/oracle/truffle/llvm/runtime/types/Type;)V
athrow
end local 2 end local 1 18: StackMap locals:
StackMap stack:
aload 0
instanceof com.oracle.truffle.llvm.runtime.types.VoidType
ifeq 20
19: ldc "VOID"
areturn
20: StackMap locals:
StackMap stack:
new com.oracle.truffle.llvm.runtime.NativeContextExtension$UnsupportedNativeTypeException
dup
aload 0
invokespecial com.oracle.truffle.llvm.runtime.NativeContextExtension$UnsupportedNativeTypeException.<init>:(Lcom/oracle/truffle/llvm/runtime/types/Type;)V
athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 21 0 type Lcom/oracle/truffle/llvm/runtime/types/Type;
4 5 1 functionType Lcom/oracle/truffle/llvm/runtime/types/FunctionType;
9 18 1 primitiveType Lcom/oracle/truffle/llvm/runtime/types/PrimitiveType;
10 18 2 kind Lcom/oracle/truffle/llvm/runtime/types/PrimitiveType$PrimitiveKind;
Exceptions:
throws com.oracle.truffle.llvm.runtime.NativeContextExtension$UnsupportedNativeTypeException
MethodParameters:
Name Flags
type
private static java.lang.String[] getNativeArgumentTypes(com.oracle.truffle.llvm.runtime.types.FunctionType, int);
descriptor: (Lcom/oracle/truffle/llvm/runtime/types/FunctionType;I)[Ljava/lang/String;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=4, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual com.oracle.truffle.llvm.runtime.types.FunctionType.getNumberOfArguments:()I
iload 1
isub
anewarray java.lang.String
astore 2
start local 2 1: iload 1
istore 3
start local 3 2: goto 5
3: StackMap locals: java.lang.String[] int
StackMap stack:
aload 2
iload 3
iload 1
isub
aload 0
iload 3
invokevirtual com.oracle.truffle.llvm.runtime.types.FunctionType.getArgumentType:(I)Lcom/oracle/truffle/llvm/runtime/types/Type;
invokestatic com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.getNativeType:(Lcom/oracle/truffle/llvm/runtime/types/Type;)Ljava/lang/String;
aastore
4: iinc 3 1
StackMap locals:
StackMap stack:
5: iload 3
aload 0
invokevirtual com.oracle.truffle.llvm.runtime.types.FunctionType.getNumberOfArguments:()I
if_icmplt 3
end local 3 6: aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 functionType Lcom/oracle/truffle/llvm/runtime/types/FunctionType;
0 7 1 skipArguments I
1 7 2 types [Ljava/lang/String;
2 6 3 i I
Exceptions:
throws com.oracle.truffle.llvm.runtime.NativeContextExtension$UnsupportedNativeTypeException
MethodParameters:
Name Flags
functionType
skipArguments
public synchronized com.oracle.truffle.llvm.runtime.NativeContextExtension$NativeLookupResult getNativeFunctionOrNull(java.lang.String);
descriptor: (Ljava/lang/String;)Lcom/oracle/truffle/llvm/runtime/NativeContextExtension$NativeLookupResult;
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=3, locals=5, args_size=2
start local 0 start local 1 0: invokestatic com.oracle.truffle.api.CompilerAsserts.neverPartOfCompilation:()V
1: aload 0
getfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.libraryHandles:Ljava/util/List;
invokeinterface java.util.List.toArray:()[Ljava/lang/Object;
astore 2
start local 2 2: iconst_0
istore 3
start local 3 3: goto 8
4: StackMap locals: java.lang.Object[] int
StackMap stack:
aload 2
iload 3
aaload
aload 1
invokestatic com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.getNativeFunctionOrNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
astore 4
start local 4 5: aload 4
ifnull 7
6: new com.oracle.truffle.llvm.runtime.NativeContextExtension$NativeLookupResult
dup
aload 4
invokespecial com.oracle.truffle.llvm.runtime.NativeContextExtension$NativeLookupResult.<init>:(Ljava/lang/Object;)V
areturn
end local 4 7: StackMap locals:
StackMap stack:
iinc 3 1
StackMap locals:
StackMap stack:
8: iload 3
aload 2
arraylength
if_icmplt 4
end local 3 9: aload 0
getfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.defaultLibraryHandle:Ljava/lang/Object;
aload 1
invokestatic com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.getNativeFunctionOrNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
astore 3
start local 3 10: aload 3
ifnull 13
11: getstatic com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.$assertionsDisabled:Z
ifne 12
aload 0
invokevirtual com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.isInitialized:()Z
ifne 12
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
12: StackMap locals: com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension java.lang.String java.lang.Object[] java.lang.Object
StackMap stack:
new com.oracle.truffle.llvm.runtime.NativeContextExtension$NativeLookupResult
dup
aload 3
invokespecial com.oracle.truffle.llvm.runtime.NativeContextExtension$NativeLookupResult.<init>:(Ljava/lang/Object;)V
areturn
13: StackMap locals:
StackMap stack:
aconst_null
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension;
0 14 1 name Ljava/lang/String;
2 14 2 cursor [Ljava/lang/Object;
3 9 3 i I
5 7 4 symbol Ljava/lang/Object;
10 14 3 symbol Ljava/lang/Object;
MethodParameters:
Name Flags
name
private synchronized com.oracle.truffle.llvm.runtime.NativeContextExtension$NativeLookupResult getNativeDataObjectOrNull(java.lang.String);
descriptor: (Ljava/lang/String;)Lcom/oracle/truffle/llvm/runtime/NativeContextExtension$NativeLookupResult;
flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
Code:
stack=3, locals=5, args_size=2
start local 0 start local 1 0: invokestatic com.oracle.truffle.api.CompilerAsserts.neverPartOfCompilation:()V
1: aload 0
getfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.libraryHandles:Ljava/util/List;
invokeinterface java.util.List.toArray:()[Ljava/lang/Object;
astore 2
start local 2 2: iconst_0
istore 3
start local 3 3: goto 8
4: StackMap locals: java.lang.Object[] int
StackMap stack:
aload 2
iload 3
aaload
aload 1
invokestatic com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.getNativeFunctionOrNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
astore 4
start local 4 5: aload 4
ifnull 7
6: new com.oracle.truffle.llvm.runtime.NativeContextExtension$NativeLookupResult
dup
aload 4
invokespecial com.oracle.truffle.llvm.runtime.NativeContextExtension$NativeLookupResult.<init>:(Ljava/lang/Object;)V
areturn
end local 4 7: StackMap locals:
StackMap stack:
iinc 3 1
StackMap locals:
StackMap stack:
8: iload 3
aload 2
arraylength
if_icmplt 4
end local 3 9: aload 0
getfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.defaultLibraryHandle:Ljava/lang/Object;
aload 1
invokestatic com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.getNativeDataObjectOrNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
astore 3
start local 3 10: aload 3
ifnull 13
11: getstatic com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.$assertionsDisabled:Z
ifne 12
aload 0
invokevirtual com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.isInitialized:()Z
ifne 12
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
12: StackMap locals: com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension java.lang.String java.lang.Object[] java.lang.Object
StackMap stack:
new com.oracle.truffle.llvm.runtime.NativeContextExtension$NativeLookupResult
dup
aload 3
invokespecial com.oracle.truffle.llvm.runtime.NativeContextExtension$NativeLookupResult.<init>:(Ljava/lang/Object;)V
areturn
13: StackMap locals:
StackMap stack:
aconst_null
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension;
0 14 1 name Ljava/lang/String;
2 14 2 cursor [Ljava/lang/Object;
3 9 3 i I
5 7 4 symbol Ljava/lang/Object;
10 14 3 symbol Ljava/lang/Object;
MethodParameters:
Name Flags
name
private static java.lang.Object getNativeDataObjectOrNull(java.lang.Object, java.lang.String);
descriptor: (Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: getstatic com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.INTEROP:Lcom/oracle/truffle/api/interop/InteropLibrary;
aload 0
aload 1
invokevirtual com.oracle.truffle.api.interop.InteropLibrary.readMember:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
astore 2
start local 2 1: aload 2
ifnull 4
lconst_0
getstatic com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.INTEROP:Lcom/oracle/truffle/api/interop/InteropLibrary;
aload 2
invokevirtual com.oracle.truffle.api.interop.InteropLibrary.asPointer:(Ljava/lang/Object;)J
lcmp
ifeq 4
2: aload 2
3: areturn
4: StackMap locals: java.lang.Object
StackMap stack:
aconst_null
areturn
end local 2 5: StackMap locals: java.lang.Object java.lang.String
StackMap stack: com.oracle.truffle.api.interop.UnknownIdentifierException
pop
6: aconst_null
areturn
7: StackMap locals:
StackMap stack: com.oracle.truffle.api.interop.InteropException
astore 2
start local 2 8: new java.lang.IllegalStateException
dup
aload 2
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/Throwable;)V
athrow
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 libraryHandle Ljava/lang/Object;
0 9 1 name Ljava/lang/String;
1 5 2 symbol Ljava/lang/Object;
8 9 2 ex Lcom/oracle/truffle/api/interop/InteropException;
Exception table:
from to target type
0 3 5 Class com.oracle.truffle.api.interop.UnknownIdentifierException
0 3 7 Class com.oracle.truffle.api.interop.InteropException
MethodParameters:
Name Flags
libraryHandle
name
private static java.lang.Object bindNativeFunction(java.lang.Object, java.lang.String);
descriptor: (Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=7, locals=3, args_size=2
start local 0 start local 1 0: invokestatic com.oracle.truffle.api.CompilerAsserts.neverPartOfCompilation:()V
1: getstatic com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.INTEROP:Lcom/oracle/truffle/api/interop/InteropLibrary;
aload 0
ldc "bind"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 1
aastore
invokevirtual com.oracle.truffle.api.interop.InteropLibrary.invokeMember:(Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object;
2: areturn
3: StackMap locals:
StackMap stack: com.oracle.truffle.api.interop.InteropException
astore 2
start local 2 4: new java.lang.IllegalStateException
dup
aload 2
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/Throwable;)V
athrow
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 symbol Ljava/lang/Object;
0 5 1 signature Ljava/lang/String;
4 5 2 ex Lcom/oracle/truffle/api/interop/InteropException;
Exception table:
from to target type
1 2 3 Class com.oracle.truffle.api.interop.InteropException
MethodParameters:
Name Flags
symbol
signature
public java.lang.Object getNativeFunction(java.lang.String, java.lang.String);
descriptor: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=4, args_size=3
start local 0 start local 1 start local 2 0: invokestatic com.oracle.truffle.api.CompilerAsserts.neverPartOfCompilation:()V
1: aload 0
aload 1
invokevirtual com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.getNativeFunctionOrNull:(Ljava/lang/String;)Lcom/oracle/truffle/llvm/runtime/NativeContextExtension$NativeLookupResult;
astore 3
start local 3 2: aload 3
ifnull 4
3: aload 3
invokevirtual com.oracle.truffle.llvm.runtime.NativeContextExtension$NativeLookupResult.getObject:()Ljava/lang/Object;
aload 2
invokestatic com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.bindNativeFunction:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
areturn
4: StackMap locals: com.oracle.truffle.llvm.runtime.NativeContextExtension$NativeLookupResult
StackMap stack:
new com.oracle.truffle.llvm.runtime.except.LLVMLinkerException
dup
ldc "External function %s cannot be found."
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 1
aastore
invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
invokespecial com.oracle.truffle.llvm.runtime.except.LLVMLinkerException.<init>:(Ljava/lang/String;)V
athrow
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension;
0 5 1 name Ljava/lang/String;
0 5 2 signature Ljava/lang/String;
2 5 3 result Lcom/oracle/truffle/llvm/runtime/NativeContextExtension$NativeLookupResult;
MethodParameters:
Name Flags
name
signature
public com.oracle.truffle.llvm.runtime.NativeContextExtension$WellKnownNativeFunctionNode getWellKnownNativeFunction(java.lang.String, java.lang.String);
descriptor: (Ljava/lang/String;Ljava/lang/String;)Lcom/oracle/truffle/llvm/runtime/NativeContextExtension$WellKnownNativeFunctionNode;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=3
start local 0 0: new java.lang.Error
dup
ldc "Unresolved compilation problem: \n\tWellKnownNFIFunctionNodeGen cannot be resolved\n"
invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension;
MethodParameters:
Name Flags
name
signature
private java.lang.Object createWellKnownFunction(com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension$WellKnownFunction);
descriptor: (Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension$WellKnownFunction;)Ljava/lang/Object;
flags: (0x0002) ACC_PRIVATE
Code:
stack=7, locals=5, args_size=2
start local 0 start local 1 0: invokestatic com.oracle.truffle.api.CompilerAsserts.neverPartOfCompilation:()V
1: aload 0
aload 1
getfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension$WellKnownFunction.name:Ljava/lang/String;
invokevirtual com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.getNativeFunctionOrNull:(Ljava/lang/String;)Lcom/oracle/truffle/llvm/runtime/NativeContextExtension$NativeLookupResult;
astore 2
start local 2 2: aload 2
ifnull 6
3: aload 0
getfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.env:Lcom/oracle/truffle/api/TruffleLanguage$Env;
aload 1
getfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension$WellKnownFunction.signatureSource:Lcom/oracle/truffle/api/source/Source;
iconst_0
anewarray java.lang.String
invokevirtual com.oracle.truffle.api.TruffleLanguage$Env.parseInternal:(Lcom/oracle/truffle/api/source/Source;[Ljava/lang/String;)Lcom/oracle/truffle/api/CallTarget;
astore 3
start local 3 4: aload 3
iconst_0
anewarray java.lang.Object
invokeinterface com.oracle.truffle.api.CallTarget.call:([Ljava/lang/Object;)Ljava/lang/Object;
astore 4
start local 4 5: invokestatic com.oracle.truffle.nfi.api.SignatureLibrary.getUncached:()Lcom/oracle/truffle/nfi/api/SignatureLibrary;
aload 4
aload 2
invokevirtual com.oracle.truffle.llvm.runtime.NativeContextExtension$NativeLookupResult.getObject:()Ljava/lang/Object;
invokevirtual com.oracle.truffle.nfi.api.SignatureLibrary.bind:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
areturn
end local 4 end local 3 6: StackMap locals: com.oracle.truffle.llvm.runtime.NativeContextExtension$NativeLookupResult
StackMap stack:
new com.oracle.truffle.llvm.runtime.except.LLVMLinkerException
dup
ldc "External function %s cannot be found."
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 1
getfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension$WellKnownFunction.name:Ljava/lang/String;
aastore
invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
invokespecial com.oracle.truffle.llvm.runtime.except.LLVMLinkerException.<init>:(Ljava/lang/String;)V
athrow
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension;
0 7 1 fn Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension$WellKnownFunction;
2 7 2 result Lcom/oracle/truffle/llvm/runtime/NativeContextExtension$NativeLookupResult;
4 6 3 parsedSignature Lcom/oracle/truffle/api/CallTarget;
5 6 4 signature Ljava/lang/Object;
MethodParameters:
Name Flags
fn
private java.lang.Object getWellKnownFuctionSlowPath(com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension$WellKnownFunction);
descriptor: (Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension$WellKnownFunction;)Ljava/lang/Object;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=4, args_size=2
start local 0 start local 1 0: aload 0
dup
astore 2
monitorenter
1: aload 0
getfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.wellKnownFunctionCache:[Ljava/lang/Object;
arraylength
aload 1
getfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension$WellKnownFunction.index:I
if_icmpgt 7
2: aload 0
getfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.wellKnownFunctionCache:[Ljava/lang/Object;
arraylength
iconst_2
imul
istore 3
start local 3 3: getstatic com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.$assertionsDisabled:Z
ifne 5
aload 1
getfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension$WellKnownFunction.index:I
aload 0
getfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.signatureSourceCache:Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension$SignatureSourceCache;
getfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension$SignatureSourceCache.nextIndex:I
if_icmplt 5
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
4: StackMap locals: com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension int
StackMap stack:
iload 3
iconst_2
imul
istore 3
5: StackMap locals:
StackMap stack:
iload 3
aload 0
getfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.signatureSourceCache:Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension$SignatureSourceCache;
getfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension$SignatureSourceCache.nextIndex:I
if_icmplt 4
6: aload 0
aload 0
getfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.wellKnownFunctionCache:[Ljava/lang/Object;
iload 3
invokestatic java.util.Arrays.copyOf:([Ljava/lang/Object;I)[Ljava/lang/Object;
putfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.wellKnownFunctionCache:[Ljava/lang/Object;
end local 3 7: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.wellKnownFunctionCache:[Ljava/lang/Object;
aload 1
getfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension$WellKnownFunction.index:I
aaload
astore 3
start local 3 8: aload 3
ifnonnull 11
9: aload 0
aload 1
invokevirtual com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.createWellKnownFunction:(Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension$WellKnownFunction;)Ljava/lang/Object;
astore 3
10: aload 0
getfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.wellKnownFunctionCache:[Ljava/lang/Object;
aload 1
getfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension$WellKnownFunction.index:I
aload 3
aastore
11: StackMap locals: java.lang.Object
StackMap stack:
aload 3
aload 2
monitorexit
12: areturn
end local 3 13: StackMap locals: com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension$WellKnownFunction com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension
StackMap stack: java.lang.Throwable
aload 2
monitorexit
14: athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension;
0 15 1 fn Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension$WellKnownFunction;
3 7 3 newLength I
8 13 3 ret Ljava/lang/Object;
Exception table:
from to target type
1 12 13 any
13 14 13 any
RuntimeVisibleAnnotations:
com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
MethodParameters:
Name Flags
fn
java.lang.Object getCachedWellKnownFunction(com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension$WellKnownFunction);
descriptor: (Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension$WellKnownFunction;)Ljava/lang/Object;
flags: (0x0000)
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 1
getfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension$WellKnownFunction.index:I
aload 0
getfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.wellKnownFunctionCache:[Ljava/lang/Object;
arraylength
if_icmpge 4
1: aload 0
getfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.wellKnownFunctionCache:[Ljava/lang/Object;
aload 1
getfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension$WellKnownFunction.index:I
aaload
astore 2
start local 2 2: aload 2
ifnull 4
3: aload 2
areturn
end local 2 4: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.getWellKnownFuctionSlowPath:(Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension$WellKnownFunction;)Ljava/lang/Object;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension;
0 5 1 fn Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension$WellKnownFunction;
2 4 2 ret Ljava/lang/Object;
MethodParameters:
Name Flags
fn
public com.oracle.truffle.api.source.Source getNativeSignatureSourceSkipStackArg(com.oracle.truffle.llvm.runtime.types.FunctionType);
descriptor: (Lcom/oracle/truffle/llvm/runtime/types/FunctionType;)Lcom/oracle/truffle/api/source/Source;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: invokestatic com.oracle.truffle.api.CompilerAsserts.neverPartOfCompilation:()V
1: aload 0
getfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.signatureSourceCache:Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension$SignatureSourceCache;
aload 1
invokevirtual com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension$SignatureSourceCache.getSignatureSourceSkipStackArg:(Lcom/oracle/truffle/llvm/runtime/types/FunctionType;)Lcom/oracle/truffle/api/source/Source;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension;
0 2 1 type Lcom/oracle/truffle/llvm/runtime/types/FunctionType;
Exceptions:
throws com.oracle.truffle.llvm.runtime.NativeContextExtension$UnsupportedNativeTypeException
MethodParameters:
Name Flags
type
private java.lang.Object createSignature(com.oracle.truffle.api.source.Source);
descriptor: (Lcom/oracle/truffle/api/source/Source;)Ljava/lang/Object;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=5, args_size=2
start local 0 start local 1 0: aload 0
getfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.signatureCache:Lorg/graalvm/collections/EconomicMap;
dup
astore 2
monitorenter
1: aload 0
getfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.signatureCache:Lorg/graalvm/collections/EconomicMap;
aload 1
invokeinterface org.graalvm.collections.EconomicMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
astore 3
start local 3 2: aload 3
ifnonnull 6
3: aload 0
getfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.env:Lcom/oracle/truffle/api/TruffleLanguage$Env;
aload 1
iconst_0
anewarray java.lang.String
invokevirtual com.oracle.truffle.api.TruffleLanguage$Env.parseInternal:(Lcom/oracle/truffle/api/source/Source;[Ljava/lang/String;)Lcom/oracle/truffle/api/CallTarget;
astore 4
start local 4 4: aload 4
iconst_0
anewarray java.lang.Object
invokeinterface com.oracle.truffle.api.CallTarget.call:([Ljava/lang/Object;)Ljava/lang/Object;
astore 3
5: aload 0
getfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.signatureCache:Lorg/graalvm/collections/EconomicMap;
aload 1
aload 3
invokeinterface org.graalvm.collections.EconomicMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 4 6: StackMap locals: org.graalvm.collections.EconomicMap java.lang.Object
StackMap stack:
aload 3
aload 2
monitorexit
7: areturn
end local 3 8: StackMap locals: com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension com.oracle.truffle.api.source.Source org.graalvm.collections.EconomicMap
StackMap stack: java.lang.Throwable
aload 2
monitorexit
9: athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension;
0 10 1 signatureSource Lcom/oracle/truffle/api/source/Source;
2 8 3 ret Ljava/lang/Object;
4 6 4 createSignature Lcom/oracle/truffle/api/CallTarget;
Exception table:
from to target type
1 7 8 any
8 9 8 any
RuntimeVisibleAnnotations:
com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
MethodParameters:
Name Flags
signatureSource
private java.lang.Object getCachedSignature(com.oracle.truffle.api.source.Source);
descriptor: (Lcom/oracle/truffle/api/source/Source;)Ljava/lang/Object;
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.signatureCache:Lorg/graalvm/collections/EconomicMap;
aload 1
invokeinterface org.graalvm.collections.EconomicMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
astore 2
start local 2 1: aload 2
ifnonnull 3
2: aload 0
aload 1
invokevirtual com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.createSignature:(Lcom/oracle/truffle/api/source/Source;)Ljava/lang/Object;
astore 2
3: StackMap locals: java.lang.Object
StackMap stack:
aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension;
0 4 1 signatureSource Lcom/oracle/truffle/api/source/Source;
1 4 2 ret Ljava/lang/Object;
MethodParameters:
Name Flags
signatureSource
public java.lang.Object bindSignature(com.oracle.truffle.llvm.runtime.LLVMFunctionCode, com.oracle.truffle.api.source.Source);
descriptor: (Lcom/oracle/truffle/llvm/runtime/LLVMFunctionCode;Lcom/oracle/truffle/api/source/Source;)Ljava/lang/Object;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=5, args_size=3
start local 0 start local 1 start local 2 0: invokestatic com.oracle.truffle.api.CompilerAsserts.neverPartOfCompilation:()V
1: aload 1
invokevirtual com.oracle.truffle.llvm.runtime.LLVMFunctionCode.getNativeFunctionSlowPath:()Ljava/lang/Object;
astore 3
start local 3 2: aload 0
aload 2
invokevirtual com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.getCachedSignature:(Lcom/oracle/truffle/api/source/Source;)Ljava/lang/Object;
astore 4
start local 4 3: invokestatic com.oracle.truffle.nfi.api.SignatureLibrary.getUncached:()Lcom/oracle/truffle/nfi/api/SignatureLibrary;
aload 4
aload 3
invokevirtual com.oracle.truffle.nfi.api.SignatureLibrary.bind:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension;
0 4 1 function Lcom/oracle/truffle/llvm/runtime/LLVMFunctionCode;
0 4 2 signatureSource Lcom/oracle/truffle/api/source/Source;
2 4 3 nativeFunction Ljava/lang/Object;
3 4 4 signature Ljava/lang/Object;
MethodParameters:
Name Flags
function
signatureSource
public java.lang.Object bindSignature(long, com.oracle.truffle.api.source.Source);
descriptor: (JLcom/oracle/truffle/api/source/Source;)Ljava/lang/Object;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=5, args_size=3
start local 0 start local 1 start local 3 0: invokestatic com.oracle.truffle.api.CompilerAsserts.neverPartOfCompilation:()V
1: aload 0
aload 3
invokevirtual com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.getCachedSignature:(Lcom/oracle/truffle/api/source/Source;)Ljava/lang/Object;
astore 4
start local 4 2: invokestatic com.oracle.truffle.nfi.api.SignatureLibrary.getUncached:()Lcom/oracle/truffle/nfi/api/SignatureLibrary;
aload 4
lload 1
invokestatic com.oracle.truffle.llvm.runtime.pointer.LLVMNativePointer.create:(J)Lcom/oracle/truffle/llvm/runtime/pointer/LLVMNativePointer;
invokevirtual com.oracle.truffle.nfi.api.SignatureLibrary.bind:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
areturn
end local 4 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension;
0 3 1 fnPtr J
0 3 3 signatureSource Lcom/oracle/truffle/api/source/Source;
2 3 4 signature Ljava/lang/Object;
MethodParameters:
Name Flags
fnPtr
signatureSource
private static java.lang.String getNativeSignature(com.oracle.truffle.llvm.runtime.types.FunctionType, int);
descriptor: (Lcom/oracle/truffle/llvm/runtime/types/FunctionType;I)Ljava/lang/String;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=9, args_size=2
start local 0 start local 1 0: invokestatic com.oracle.truffle.api.CompilerAsserts.neverPartOfCompilation:()V
1: aload 0
invokevirtual com.oracle.truffle.llvm.runtime.types.FunctionType.getReturnType:()Lcom/oracle/truffle/llvm/runtime/types/Type;
invokestatic com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.getNativeType:(Lcom/oracle/truffle/llvm/runtime/types/Type;)Ljava/lang/String;
astore 2
start local 2 2: aload 0
iload 1
invokestatic com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.getNativeArgumentTypes:(Lcom/oracle/truffle/llvm/runtime/types/FunctionType;I)[Ljava/lang/String;
astore 3
start local 3 3: new java.lang.StringBuilder
dup
invokespecial java.lang.StringBuilder.<init>:()V
astore 4
start local 4 4: aload 4
ldc "("
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
5: aload 3
dup
astore 8
arraylength
istore 7
iconst_0
istore 6
goto 10
StackMap locals: com.oracle.truffle.llvm.runtime.types.FunctionType int java.lang.String java.lang.String[] java.lang.StringBuilder top int int java.lang.String[]
StackMap stack:
6: aload 8
iload 6
aaload
astore 5
start local 5 7: aload 4
aload 5
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
8: aload 4
ldc ","
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
end local 5 9: iinc 6 1
StackMap locals:
StackMap stack:
10: iload 6
iload 7
if_icmplt 6
11: aload 3
arraylength
ifle 14
12: aload 4
aload 4
invokevirtual java.lang.StringBuilder.length:()I
iconst_1
isub
bipush 41
invokevirtual java.lang.StringBuilder.setCharAt:(IC)V
13: goto 15
14: StackMap locals: com.oracle.truffle.llvm.runtime.types.FunctionType int java.lang.String java.lang.String[] java.lang.StringBuilder
StackMap stack:
aload 4
bipush 41
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
pop
15: StackMap locals:
StackMap stack:
aload 4
ldc ":"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
16: aload 4
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
17: aload 4
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 type Lcom/oracle/truffle/llvm/runtime/types/FunctionType;
0 18 1 skipArguments I
2 18 2 nativeRet Ljava/lang/String;
3 18 3 argTypes [Ljava/lang/String;
4 18 4 sb Ljava/lang/StringBuilder;
7 9 5 a Ljava/lang/String;
Exceptions:
throws com.oracle.truffle.llvm.runtime.NativeContextExtension$UnsupportedNativeTypeException
MethodParameters:
Name Flags
type
skipArguments
static int[] $SWITCH_TABLE$com$oracle$truffle$llvm$runtime$types$PrimitiveType$PrimitiveKind();
descriptor: ()[I
flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
Code:
stack=3, locals=1, args_size=0
0: getstatic com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.$SWITCH_TABLE$com$oracle$truffle$llvm$runtime$types$PrimitiveType$PrimitiveKind:[I
dup
ifnull 1
areturn
StackMap locals:
StackMap stack: int[]
1: pop
invokestatic com.oracle.truffle.llvm.runtime.types.PrimitiveType$PrimitiveKind.values:()[Lcom/oracle/truffle/llvm/runtime/types/PrimitiveType$PrimitiveKind;
arraylength
newarray 10
astore 0
2: aload 0
getstatic com.oracle.truffle.llvm.runtime.types.PrimitiveType$PrimitiveKind.DOUBLE:Lcom/oracle/truffle/llvm/runtime/types/PrimitiveType$PrimitiveKind;
invokevirtual com.oracle.truffle.llvm.runtime.types.PrimitiveType$PrimitiveKind.ordinal:()I
bipush 8
iastore
3: goto 5
StackMap locals: int[]
StackMap stack: java.lang.NoSuchFieldError
4: pop
StackMap locals:
StackMap stack:
5: aload 0
getstatic com.oracle.truffle.llvm.runtime.types.PrimitiveType$PrimitiveKind.F128:Lcom/oracle/truffle/llvm/runtime/types/PrimitiveType$PrimitiveKind;
invokevirtual com.oracle.truffle.llvm.runtime.types.PrimitiveType$PrimitiveKind.ordinal:()I
bipush 9
iastore
6: goto 8
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
7: pop
StackMap locals:
StackMap stack:
8: aload 0
getstatic com.oracle.truffle.llvm.runtime.types.PrimitiveType$PrimitiveKind.FLOAT:Lcom/oracle/truffle/llvm/runtime/types/PrimitiveType$PrimitiveKind;
invokevirtual com.oracle.truffle.llvm.runtime.types.PrimitiveType$PrimitiveKind.ordinal:()I
bipush 7
iastore
9: goto 11
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
10: pop
StackMap locals:
StackMap stack:
11: aload 0
getstatic com.oracle.truffle.llvm.runtime.types.PrimitiveType$PrimitiveKind.HALF:Lcom/oracle/truffle/llvm/runtime/types/PrimitiveType$PrimitiveKind;
invokevirtual com.oracle.truffle.llvm.runtime.types.PrimitiveType$PrimitiveKind.ordinal:()I
bipush 6
iastore
12: goto 14
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
13: pop
StackMap locals:
StackMap stack:
14: aload 0
getstatic com.oracle.truffle.llvm.runtime.types.PrimitiveType$PrimitiveKind.I1:Lcom/oracle/truffle/llvm/runtime/types/PrimitiveType$PrimitiveKind;
invokevirtual com.oracle.truffle.llvm.runtime.types.PrimitiveType$PrimitiveKind.ordinal:()I
iconst_1
iastore
15: goto 17
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
16: pop
StackMap locals:
StackMap stack:
17: aload 0
getstatic com.oracle.truffle.llvm.runtime.types.PrimitiveType$PrimitiveKind.I16:Lcom/oracle/truffle/llvm/runtime/types/PrimitiveType$PrimitiveKind;
invokevirtual com.oracle.truffle.llvm.runtime.types.PrimitiveType$PrimitiveKind.ordinal:()I
iconst_3
iastore
18: goto 20
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
19: pop
StackMap locals:
StackMap stack:
20: aload 0
getstatic com.oracle.truffle.llvm.runtime.types.PrimitiveType$PrimitiveKind.I32:Lcom/oracle/truffle/llvm/runtime/types/PrimitiveType$PrimitiveKind;
invokevirtual com.oracle.truffle.llvm.runtime.types.PrimitiveType$PrimitiveKind.ordinal:()I
iconst_4
iastore
21: goto 23
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
22: pop
StackMap locals:
StackMap stack:
23: aload 0
getstatic com.oracle.truffle.llvm.runtime.types.PrimitiveType$PrimitiveKind.I64:Lcom/oracle/truffle/llvm/runtime/types/PrimitiveType$PrimitiveKind;
invokevirtual com.oracle.truffle.llvm.runtime.types.PrimitiveType$PrimitiveKind.ordinal:()I
iconst_5
iastore
24: goto 26
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
25: pop
StackMap locals:
StackMap stack:
26: aload 0
getstatic com.oracle.truffle.llvm.runtime.types.PrimitiveType$PrimitiveKind.I8:Lcom/oracle/truffle/llvm/runtime/types/PrimitiveType$PrimitiveKind;
invokevirtual com.oracle.truffle.llvm.runtime.types.PrimitiveType$PrimitiveKind.ordinal:()I
iconst_2
iastore
27: goto 29
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
28: pop
StackMap locals:
StackMap stack:
29: aload 0
getstatic com.oracle.truffle.llvm.runtime.types.PrimitiveType$PrimitiveKind.PPC_FP128:Lcom/oracle/truffle/llvm/runtime/types/PrimitiveType$PrimitiveKind;
invokevirtual com.oracle.truffle.llvm.runtime.types.PrimitiveType$PrimitiveKind.ordinal:()I
bipush 11
iastore
30: goto 32
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
31: pop
StackMap locals:
StackMap stack:
32: aload 0
getstatic com.oracle.truffle.llvm.runtime.types.PrimitiveType$PrimitiveKind.X86_FP80:Lcom/oracle/truffle/llvm/runtime/types/PrimitiveType$PrimitiveKind;
invokevirtual com.oracle.truffle.llvm.runtime.types.PrimitiveType$PrimitiveKind.ordinal:()I
bipush 10
iastore
33: goto 35
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
34: pop
StackMap locals:
StackMap stack:
35: aload 0
dup
putstatic com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.$SWITCH_TABLE$com$oracle$truffle$llvm$runtime$types$PrimitiveType$PrimitiveKind:[I
areturn
LocalVariableTable:
Start End Slot Name Signature
Exception table:
from to target type
2 3 4 Class java.lang.NoSuchFieldError
5 6 7 Class java.lang.NoSuchFieldError
8 9 10 Class java.lang.NoSuchFieldError
11 12 13 Class java.lang.NoSuchFieldError
14 15 16 Class java.lang.NoSuchFieldError
17 18 19 Class java.lang.NoSuchFieldError
20 21 22 Class java.lang.NoSuchFieldError
23 24 25 Class java.lang.NoSuchFieldError
26 27 28 Class java.lang.NoSuchFieldError
29 30 31 Class java.lang.NoSuchFieldError
32 33 34 Class java.lang.NoSuchFieldError
}
SourceFile: "NFIContextExtension.java"
NestMembers:
com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension$Factory com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension$SignatureSourceCache com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension$WellKnownFunction
InnerClasses:
public abstract TruffleBoundary = com.oracle.truffle.api.CompilerDirectives$TruffleBoundary of com.oracle.truffle.api.CompilerDirectives
public final Env = com.oracle.truffle.api.TruffleLanguage$Env of com.oracle.truffle.api.TruffleLanguage
public final LiteralBuilder = com.oracle.truffle.api.source.Source$LiteralBuilder of com.oracle.truffle.api.source.Source
public final Factory = com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension$Factory of com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension
private final SignatureSourceCache = com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension$SignatureSourceCache of com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension
final WellKnownFunction = com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension$WellKnownFunction of com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension
public final NativeLookupResult = com.oracle.truffle.llvm.runtime.NativeContextExtension$NativeLookupResult of com.oracle.truffle.llvm.runtime.NativeContextExtension
public final NativePointerIntoLibrary = com.oracle.truffle.llvm.runtime.NativeContextExtension$NativePointerIntoLibrary of com.oracle.truffle.llvm.runtime.NativeContextExtension
public UnsupportedNativeTypeException = com.oracle.truffle.llvm.runtime.NativeContextExtension$UnsupportedNativeTypeException of com.oracle.truffle.llvm.runtime.NativeContextExtension
public abstract WellKnownNativeFunctionNode = com.oracle.truffle.llvm.runtime.NativeContextExtension$WellKnownNativeFunctionNode of com.oracle.truffle.llvm.runtime.NativeContextExtension
public final PrimitiveKind = com.oracle.truffle.llvm.runtime.types.PrimitiveType$PrimitiveKind of com.oracle.truffle.llvm.runtime.types.PrimitiveType