final class com.oracle.truffle.nfi.impl.NFIBackendImpl implements com.oracle.truffle.nfi.spi.NFIBackend
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: com.oracle.truffle.nfi.impl.NFIBackendImpl
super_class: java.lang.Object
{
private final com.oracle.truffle.nfi.impl.NFILanguageImpl language;
descriptor: Lcom/oracle/truffle/nfi/impl/NFILanguageImpl;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
final com.oracle.truffle.nfi.spi.NFIBackendTools tools;
descriptor: Lcom/oracle/truffle/nfi/spi/NFIBackendTools;
flags: (0x0010) ACC_FINAL
void <init>(com.oracle.truffle.nfi.impl.NFILanguageImpl, com.oracle.truffle.nfi.spi.NFIBackendTools);
descriptor: (Lcom/oracle/truffle/nfi/impl/NFILanguageImpl;Lcom/oracle/truffle/nfi/spi/NFIBackendTools;)V
flags: (0x0000)
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.truffle.nfi.impl.NFIBackendImpl.language:Lcom/oracle/truffle/nfi/impl/NFILanguageImpl;
2: aload 0
aload 2
putfield com.oracle.truffle.nfi.impl.NFIBackendImpl.tools:Lcom/oracle/truffle/nfi/spi/NFIBackendTools;
3: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/oracle/truffle/nfi/impl/NFIBackendImpl;
0 4 1 language Lcom/oracle/truffle/nfi/impl/NFILanguageImpl;
0 4 2 tools Lcom/oracle/truffle/nfi/spi/NFIBackendTools;
MethodParameters:
Name Flags
language
tools
public com.oracle.truffle.api.CallTarget parse(com.oracle.truffle.nfi.spi.types.NativeLibraryDescriptor);
descriptor: (Lcom/oracle/truffle/nfi/spi/types/NativeLibraryDescriptor;)Lcom/oracle/truffle/api/CallTarget;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=9, args_size=2
start local 0 start local 1 0: invokestatic com.oracle.truffle.nfi.impl.NFILanguageImpl.getCurrentContext:()Lcom/oracle/truffle/nfi/impl/NFIContext;
astore 3
start local 3 1: aload 1
invokevirtual com.oracle.truffle.nfi.spi.types.NativeLibraryDescriptor.isDefaultLibrary:()Z
ifeq 4
2: new com.oracle.truffle.nfi.impl.NFIBackendImpl$GetDefaultLibraryNode
dup
aload 0
getfield com.oracle.truffle.nfi.impl.NFIBackendImpl.language:Lcom/oracle/truffle/nfi/impl/NFILanguageImpl;
invokespecial com.oracle.truffle.nfi.impl.NFIBackendImpl$GetDefaultLibraryNode.<init>:(Lcom/oracle/truffle/nfi/impl/NFILanguageImpl;)V
astore 2
start local 2 3: goto 32
end local 2 4: StackMap locals: com.oracle.truffle.nfi.impl.NFIBackendImpl com.oracle.truffle.nfi.spi.types.NativeLibraryDescriptor top com.oracle.truffle.nfi.impl.NFIContext
StackMap stack:
iconst_0
istore 4
start local 4 5: iconst_0
istore 5
start local 5 6: aload 1
invokevirtual com.oracle.truffle.nfi.spi.types.NativeLibraryDescriptor.getFlags:()Ljava/util/List;
ifnull 29
7: aload 1
invokevirtual com.oracle.truffle.nfi.spi.types.NativeLibraryDescriptor.getFlags:()Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 7
goto 28
StackMap locals: com.oracle.truffle.nfi.impl.NFIBackendImpl com.oracle.truffle.nfi.spi.types.NativeLibraryDescriptor top com.oracle.truffle.nfi.impl.NFIContext int int top java.util.Iterator
StackMap stack:
8: aload 7
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.String
astore 6
start local 6 9: aload 6
dup
astore 8
invokevirtual java.lang.String.hashCode:()I
lookupswitch { // 5
-1805175736: 10
-1047548583: 11
658947121: 12
1371486613: 13
1886126598: 14
default: 28
}
StackMap locals: com.oracle.truffle.nfi.impl.NFIBackendImpl com.oracle.truffle.nfi.spi.types.NativeLibraryDescriptor top com.oracle.truffle.nfi.impl.NFIContext int int java.lang.String java.util.Iterator java.lang.String
StackMap stack:
10: aload 8
ldc "RTLD_GLOBAL"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 15
goto 28
StackMap locals:
StackMap stack:
11: aload 8
ldc "RTLD_LAZY"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 19
goto 28
StackMap locals:
StackMap stack:
12: aload 8
ldc "RTLD_NOW"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 22
goto 28
StackMap locals:
StackMap stack:
13: aload 8
ldc "ISOLATED_NAMESPACE"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 25
goto 28
StackMap locals:
StackMap stack:
14: aload 8
ldc "RTLD_LOCAL"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 17
goto 28
15: StackMap locals:
StackMap stack:
iload 4
aload 3
getfield com.oracle.truffle.nfi.impl.NFIContext.RTLD_GLOBAL:I
ior
istore 4
16: goto 28
17: StackMap locals:
StackMap stack:
iload 4
aload 3
getfield com.oracle.truffle.nfi.impl.NFIContext.RTLD_LOCAL:I
ior
istore 4
18: goto 28
19: StackMap locals:
StackMap stack:
iload 4
aload 3
getfield com.oracle.truffle.nfi.impl.NFIContext.RTLD_LAZY:I
ior
istore 4
20: iconst_1
istore 5
21: goto 28
22: StackMap locals:
StackMap stack:
iload 4
aload 3
getfield com.oracle.truffle.nfi.impl.NFIContext.RTLD_NOW:I
ior
istore 4
23: iconst_1
istore 5
24: goto 28
25: StackMap locals:
StackMap stack:
aload 3
getfield com.oracle.truffle.nfi.impl.NFIContext.ISOLATED_NAMESPACE:I
ifne 27
26: new java.lang.IllegalArgumentException
dup
ldc "isolated namespace not supported"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
27: StackMap locals:
StackMap stack:
iload 4
aload 3
getfield com.oracle.truffle.nfi.impl.NFIContext.ISOLATED_NAMESPACE:I
ior
istore 4
end local 6 28: StackMap locals: com.oracle.truffle.nfi.impl.NFIBackendImpl com.oracle.truffle.nfi.spi.types.NativeLibraryDescriptor top com.oracle.truffle.nfi.impl.NFIContext int int top java.util.Iterator
StackMap stack:
aload 7
invokeinterface java.util.Iterator.hasNext:()Z
ifne 8
29: StackMap locals: com.oracle.truffle.nfi.impl.NFIBackendImpl com.oracle.truffle.nfi.spi.types.NativeLibraryDescriptor top com.oracle.truffle.nfi.impl.NFIContext int int
StackMap stack:
iload 5
ifne 31
30: iload 4
aload 3
getfield com.oracle.truffle.nfi.impl.NFIContext.RTLD_NOW:I
ior
istore 4
31: StackMap locals:
StackMap stack:
new com.oracle.truffle.nfi.impl.NFIBackendImpl$LoadLibraryNode
dup
aload 0
getfield com.oracle.truffle.nfi.impl.NFIBackendImpl.language:Lcom/oracle/truffle/nfi/impl/NFILanguageImpl;
aload 1
invokevirtual com.oracle.truffle.nfi.spi.types.NativeLibraryDescriptor.getFilename:()Ljava/lang/String;
iload 4
invokespecial com.oracle.truffle.nfi.impl.NFIBackendImpl$LoadLibraryNode.<init>:(Lcom/oracle/truffle/nfi/impl/NFILanguageImpl;Ljava/lang/String;I)V
astore 2
end local 5 end local 4 start local 2 32: StackMap locals: com.oracle.truffle.nfi.impl.NFIBackendImpl com.oracle.truffle.nfi.spi.types.NativeLibraryDescriptor com.oracle.truffle.api.nodes.RootNode com.oracle.truffle.nfi.impl.NFIContext
StackMap stack:
invokestatic com.oracle.truffle.api.Truffle.getRuntime:()Lcom/oracle/truffle/api/TruffleRuntime;
aload 2
invokeinterface com.oracle.truffle.api.TruffleRuntime.createCallTarget:(Lcom/oracle/truffle/api/nodes/RootNode;)Lcom/oracle/truffle/api/RootCallTarget;
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 33 0 this Lcom/oracle/truffle/nfi/impl/NFIBackendImpl;
0 33 1 descriptor Lcom/oracle/truffle/nfi/spi/types/NativeLibraryDescriptor;
3 4 2 root Lcom/oracle/truffle/api/nodes/RootNode;
32 33 2 root Lcom/oracle/truffle/api/nodes/RootNode;
1 33 3 ctx Lcom/oracle/truffle/nfi/impl/NFIContext;
5 32 4 flags I
6 32 5 lazyOrNow Z
9 28 6 flag Ljava/lang/String;
MethodParameters:
Name Flags
descriptor
java.lang.Object getSimpleType(com.oracle.truffle.nfi.spi.types.NativeSimpleType, com.oracle.truffle.nfi.impl.NFIContext);
descriptor: (Lcom/oracle/truffle/nfi/spi/types/NativeSimpleType;Lcom/oracle/truffle/nfi/impl/NFIContext;)Ljava/lang/Object;
flags: (0x0000)
Code:
stack=2, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 2
aload 1
invokevirtual com.oracle.truffle.nfi.impl.NFIContext.lookupSimpleType:(Lcom/oracle/truffle/nfi/spi/types/NativeSimpleType;)Lcom/oracle/truffle/nfi/impl/LibFFIType;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/truffle/nfi/impl/NFIBackendImpl;
0 1 1 type Lcom/oracle/truffle/nfi/spi/types/NativeSimpleType;
0 1 2 ctx Lcom/oracle/truffle/nfi/impl/NFIContext;
RuntimeVisibleAnnotations:
com.oracle.truffle.api.library.ExportMessage()
RuntimeInvisibleParameterAnnotations:
0:
1:
com.oracle.truffle.api.dsl.CachedContext(value = Lcom/oracle/truffle/nfi/impl/NFILanguageImpl;)
MethodParameters:
Name Flags
type
ctx
java.lang.Object getArrayType(com.oracle.truffle.nfi.spi.types.NativeSimpleType, com.oracle.truffle.nfi.impl.NFIContext);
descriptor: (Lcom/oracle/truffle/nfi/spi/types/NativeSimpleType;Lcom/oracle/truffle/nfi/impl/NFIContext;)Ljava/lang/Object;
flags: (0x0000)
Code:
stack=2, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 2
aload 1
invokevirtual com.oracle.truffle.nfi.impl.NFIContext.lookupArrayType:(Lcom/oracle/truffle/nfi/spi/types/NativeSimpleType;)Lcom/oracle/truffle/nfi/impl/LibFFIType;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/truffle/nfi/impl/NFIBackendImpl;
0 1 1 type Lcom/oracle/truffle/nfi/spi/types/NativeSimpleType;
0 1 2 ctx Lcom/oracle/truffle/nfi/impl/NFIContext;
RuntimeVisibleAnnotations:
com.oracle.truffle.api.library.ExportMessage()
RuntimeInvisibleParameterAnnotations:
0:
1:
com.oracle.truffle.api.dsl.CachedContext(value = Lcom/oracle/truffle/nfi/impl/NFILanguageImpl;)
MethodParameters:
Name Flags
type
ctx
java.lang.Object getEnvType(com.oracle.truffle.nfi.impl.NFIContext);
descriptor: (Lcom/oracle/truffle/nfi/impl/NFIContext;)Ljava/lang/Object;
flags: (0x0000)
Code:
stack=1, locals=2, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual com.oracle.truffle.nfi.impl.NFIContext.lookupEnvType:()Lcom/oracle/truffle/nfi/impl/LibFFIType;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/truffle/nfi/impl/NFIBackendImpl;
0 1 1 ctx Lcom/oracle/truffle/nfi/impl/NFIContext;
RuntimeVisibleAnnotations:
com.oracle.truffle.api.library.ExportMessage()
RuntimeInvisibleParameterAnnotations:
0:
com.oracle.truffle.api.dsl.CachedContext(value = Lcom/oracle/truffle/nfi/impl/NFILanguageImpl;)
MethodParameters:
Name Flags
ctx
java.lang.Object createSignatureBuilder(com.oracle.truffle.nfi.spi.NFIBackendLibrary, com.oracle.truffle.nfi.impl.NFIContext, com.oracle.truffle.nfi.util.ProfiledArrayBuilder$ArrayBuilderFactory);
descriptor: (Lcom/oracle/truffle/nfi/spi/NFIBackendLibrary;Lcom/oracle/truffle/nfi/impl/NFIContext;Lcom/oracle/truffle/nfi/util/ProfiledArrayBuilder$ArrayBuilderFactory;)Ljava/lang/Object;
flags: (0x0000)
Code:
stack=4, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 2
getfield com.oracle.truffle.nfi.impl.NFIContext.env:Lcom/oracle/truffle/api/TruffleLanguage$Env;
invokevirtual com.oracle.truffle.api.TruffleLanguage$Env.isNativeAccessAllowed:()Z
ifne 3
1: invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreter:()V
2: new com.oracle.truffle.nfi.impl.NFIUnsatisfiedLinkError
dup
ldc "Access to native code is not allowed by the host environment."
aload 1
invokespecial com.oracle.truffle.nfi.impl.NFIUnsatisfiedLinkError.<init>:(Ljava/lang/String;Lcom/oracle/truffle/api/nodes/Node;)V
athrow
3: StackMap locals:
StackMap stack:
new com.oracle.truffle.nfi.impl.LibFFISignature$SignatureBuilder
dup
aload 3
invokespecial com.oracle.truffle.nfi.impl.LibFFISignature$SignatureBuilder.<init>:(Lcom/oracle/truffle/nfi/util/ProfiledArrayBuilder$ArrayBuilderFactory;)V
areturn
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/nfi/impl/NFIBackendImpl;
0 4 1 self Lcom/oracle/truffle/nfi/spi/NFIBackendLibrary;
0 4 2 ctx Lcom/oracle/truffle/nfi/impl/NFIContext;
0 4 3 builderFactory Lcom/oracle/truffle/nfi/util/ProfiledArrayBuilder$ArrayBuilderFactory;
RuntimeVisibleAnnotations:
com.oracle.truffle.api.library.ExportMessage()
RuntimeInvisibleParameterAnnotations:
0:
com.oracle.truffle.api.library.CachedLibrary(value = "this")
1:
com.oracle.truffle.api.dsl.CachedContext(value = Lcom/oracle/truffle/nfi/impl/NFILanguageImpl;)
2:
com.oracle.truffle.api.dsl.Cached()
MethodParameters:
Name Flags
self
ctx
builderFactory
}
SourceFile: "NFIBackendImpl.java"
NestMembers:
com.oracle.truffle.nfi.impl.NFIBackendImpl$GetDefaultLibraryNode com.oracle.truffle.nfi.impl.NFIBackendImpl$LoadLibraryNode
InnerClasses:
public final Env = com.oracle.truffle.api.TruffleLanguage$Env of com.oracle.truffle.api.TruffleLanguage
final SignatureBuilder = com.oracle.truffle.nfi.impl.LibFFISignature$SignatureBuilder of com.oracle.truffle.nfi.impl.LibFFISignature
private GetDefaultLibraryNode = com.oracle.truffle.nfi.impl.NFIBackendImpl$GetDefaultLibraryNode of com.oracle.truffle.nfi.impl.NFIBackendImpl
private LoadLibraryNode = com.oracle.truffle.nfi.impl.NFIBackendImpl$LoadLibraryNode of com.oracle.truffle.nfi.impl.NFIBackendImpl
public abstract ArrayBuilderFactory = com.oracle.truffle.nfi.util.ProfiledArrayBuilder$ArrayBuilderFactory of com.oracle.truffle.nfi.util.ProfiledArrayBuilder
RuntimeVisibleAnnotations:
com.oracle.truffle.api.library.ExportLibrary(value = Lcom/oracle/truffle/nfi/spi/NFIBackendLibrary;)