public class com.oracle.truffle.nfi.test.StringAsInterfaceNFITest
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: com.oracle.truffle.nfi.test.StringAsInterfaceNFITest
super_class: java.lang.Object
{
private static com.oracle.truffle.nfi.test.StringAsInterfaceNFITest$StdLib stdlib;
descriptor: Lcom/oracle/truffle/nfi/test/StringAsInterfaceNFITest$StdLib;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
private static java.lang.Object rawStdLib;
descriptor: Ljava/lang/Object;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
public static com.oracle.truffle.tck.TruffleRunner$RunWithPolyglotRule runWithPolyglot;
descriptor: Lcom/oracle/truffle/tck/TruffleRunner$RunWithPolyglotRule;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
RuntimeVisibleAnnotations:
org.junit.ClassRule()
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=0, args_size=0
0: new com.oracle.truffle.tck.TruffleRunner$RunWithPolyglotRule
dup
iconst_0
anewarray java.lang.String
invokestatic org.graalvm.polyglot.Context.newBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
iconst_1
invokevirtual org.graalvm.polyglot.Context$Builder.allowNativeAccess:(Z)Lorg/graalvm/polyglot/Context$Builder;
invokespecial com.oracle.truffle.tck.TruffleRunner$RunWithPolyglotRule.<init>:(Lorg/graalvm/polyglot/Context$Builder;)V
putstatic com.oracle.truffle.nfi.test.StringAsInterfaceNFITest.runWithPolyglot:Lcom/oracle/truffle/tck/TruffleRunner$RunWithPolyglotRule;
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/truffle/nfi/test/StringAsInterfaceNFITest;
public static void loadLibraries();
descriptor: ()V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=1, args_size=0
0: getstatic com.oracle.truffle.api.TruffleOptions.AOT:Z
ifne 1
getstatic com.oracle.truffle.nfi.test.NFITest.IS_WINDOWS:Z
ifeq 2
1: StackMap locals:
StackMap stack:
return
2: StackMap locals:
StackMap stack:
getstatic com.oracle.truffle.nfi.test.StringAsInterfaceNFITest.runWithPolyglot:Lcom/oracle/truffle/tck/TruffleRunner$RunWithPolyglotRule;
invokevirtual com.oracle.truffle.tck.TruffleRunner$RunWithPolyglotRule.getTruffleTestEnv:()Lcom/oracle/truffle/api/TruffleLanguage$Env;
ldc "nfi"
ldc "default {\n strdup(string):string;\n malloc(UINT32):pointer;\n free(pointer):void;\n}"
3: ldc "(load default)"
4: invokestatic com.oracle.truffle.api.source.Source.newBuilder:(Ljava/lang/String;Ljava/lang/CharSequence;Ljava/lang/String;)Lcom/oracle/truffle/api/source/Source$LiteralBuilder;
5: 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;
iconst_0
anewarray java.lang.String
6: invokevirtual com.oracle.truffle.api.TruffleLanguage$Env.parseInternal:(Lcom/oracle/truffle/api/source/Source;[Ljava/lang/String;)Lcom/oracle/truffle/api/CallTarget;
astore 0
start local 0 7: aload 0
iconst_0
anewarray java.lang.Object
invokeinterface com.oracle.truffle.api.CallTarget.call:([Ljava/lang/Object;)Ljava/lang/Object;
putstatic com.oracle.truffle.nfi.test.StringAsInterfaceNFITest.rawStdLib:Ljava/lang/Object;
8: getstatic com.oracle.truffle.nfi.test.StringAsInterfaceNFITest.runWithPolyglot:Lcom/oracle/truffle/tck/TruffleRunner$RunWithPolyglotRule;
invokevirtual com.oracle.truffle.tck.TruffleRunner$RunWithPolyglotRule.getPolyglotContext:()Lorg/graalvm/polyglot/Context;
getstatic com.oracle.truffle.nfi.test.StringAsInterfaceNFITest.rawStdLib:Ljava/lang/Object;
invokevirtual org.graalvm.polyglot.Context.asValue:(Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
ldc Lcom/oracle/truffle/nfi/test/StringAsInterfaceNFITest$StdLib;
invokevirtual org.graalvm.polyglot.Value.as:(Ljava/lang/Class;)Ljava/lang/Object;
checkcast com.oracle.truffle.nfi.test.StringAsInterfaceNFITest$StdLib
putstatic com.oracle.truffle.nfi.test.StringAsInterfaceNFITest.stdlib:Lcom/oracle/truffle/nfi/test/StringAsInterfaceNFITest$StdLib;
9: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
7 10 0 load Lcom/oracle/truffle/api/CallTarget;
RuntimeVisibleAnnotations:
org.junit.BeforeClass()
private static void assumptions();
descriptor: ()V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: ldc "disable test on AOT"
getstatic com.oracle.truffle.api.TruffleOptions.AOT:Z
invokestatic org.junit.Assume.assumeFalse:(Ljava/lang/String;Z)V
1: ldc "disable test on Windows"
getstatic com.oracle.truffle.nfi.test.NFITest.IS_WINDOWS:Z
invokestatic org.junit.Assume.assumeFalse:(Ljava/lang/String;Z)V
2: return
LocalVariableTable:
Start End Slot Name Signature
public void testDuplicateAString();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=1
start local 0 0: invokestatic com.oracle.truffle.nfi.test.StringAsInterfaceNFITest.assumptions:()V
1: getstatic com.oracle.truffle.nfi.test.StringAsInterfaceNFITest.stdlib:Lcom/oracle/truffle/nfi/test/StringAsInterfaceNFITest$StdLib;
ldc "Ahoj"
invokeinterface com.oracle.truffle.nfi.test.StringAsInterfaceNFITest$StdLib.strdup:(Ljava/lang/String;)Ljava/lang/String;
astore 1
start local 1 2: ldc "Ahoj"
aload 1
invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
3: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/oracle/truffle/nfi/test/StringAsInterfaceNFITest;
2 4 1 copy Ljava/lang/String;
RuntimeVisibleAnnotations:
org.junit.Test()
public void testAllocAndRelease();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=1
start local 0 0: invokestatic com.oracle.truffle.nfi.test.StringAsInterfaceNFITest.assumptions:()V
1: getstatic com.oracle.truffle.nfi.test.StringAsInterfaceNFITest.stdlib:Lcom/oracle/truffle/nfi/test/StringAsInterfaceNFITest$StdLib;
sipush 512
invokeinterface com.oracle.truffle.nfi.test.StringAsInterfaceNFITest$StdLib.malloc:(I)Ljava/lang/Object;
astore 1
start local 1 2: getstatic com.oracle.truffle.nfi.test.StringAsInterfaceNFITest.stdlib:Lcom/oracle/truffle/nfi/test/StringAsInterfaceNFITest$StdLib;
aload 1
invokeinterface com.oracle.truffle.nfi.test.StringAsInterfaceNFITest$StdLib.free:(Ljava/lang/Object;)V
3: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/oracle/truffle/nfi/test/StringAsInterfaceNFITest;
2 4 1 mem Ljava/lang/Object;
RuntimeVisibleAnnotations:
org.junit.Test()
public void testAllocAndReleaseWithInvoke();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=2, args_size=1
start local 0 0: invokestatic com.oracle.truffle.nfi.test.StringAsInterfaceNFITest.assumptions:()V
1: getstatic com.oracle.truffle.nfi.test.NFITest.UNCACHED_INTEROP:Lcom/oracle/truffle/api/interop/InteropLibrary;
getstatic com.oracle.truffle.nfi.test.StringAsInterfaceNFITest.rawStdLib:Ljava/lang/Object;
ldc "malloc"
iconst_1
anewarray java.lang.Object
dup
iconst_0
sipush 512
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
invokevirtual com.oracle.truffle.api.interop.InteropLibrary.invokeMember:(Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object;
astore 1
start local 1 2: ldc "some memory allocated"
aload 1
invokestatic org.junit.Assert.assertNotNull:(Ljava/lang/String;Ljava/lang/Object;)V
3: getstatic com.oracle.truffle.nfi.test.NFITest.UNCACHED_INTEROP:Lcom/oracle/truffle/api/interop/InteropLibrary;
getstatic com.oracle.truffle.nfi.test.StringAsInterfaceNFITest.rawStdLib:Ljava/lang/Object;
ldc "free"
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;
pop
4: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/oracle/truffle/nfi/test/StringAsInterfaceNFITest;
2 5 1 mem Ljava/lang/Object;
Exceptions:
throws java.lang.Exception
RuntimeVisibleAnnotations:
org.junit.Test()
public void canViewDefaultLibraryAsAnotherInterface();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=5, args_size=1
start local 0 0: invokestatic com.oracle.truffle.nfi.test.StringAsInterfaceNFITest.assumptions:()V
1: getstatic com.oracle.truffle.nfi.test.StringAsInterfaceNFITest.runWithPolyglot:Lcom/oracle/truffle/tck/TruffleRunner$RunWithPolyglotRule;
invokevirtual com.oracle.truffle.tck.TruffleRunner$RunWithPolyglotRule.getTruffleTestEnv:()Lcom/oracle/truffle/api/TruffleLanguage$Env;
ldc "nfi"
ldc "default {\n strndup(string, UINT32):string;\n}"
2: ldc "(load default)"
3: invokestatic com.oracle.truffle.api.source.Source.newBuilder:(Ljava/lang/String;Ljava/lang/CharSequence;Ljava/lang/String;)Lcom/oracle/truffle/api/source/Source$LiteralBuilder;
4: 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;
iconst_0
anewarray java.lang.String
5: invokevirtual com.oracle.truffle.api.TruffleLanguage$Env.parseInternal:(Lcom/oracle/truffle/api/source/Source;[Ljava/lang/String;)Lcom/oracle/truffle/api/CallTarget;
astore 1
start local 1 6: getstatic com.oracle.truffle.nfi.test.StringAsInterfaceNFITest.runWithPolyglot:Lcom/oracle/truffle/tck/TruffleRunner$RunWithPolyglotRule;
invokevirtual com.oracle.truffle.tck.TruffleRunner$RunWithPolyglotRule.getPolyglotContext:()Lorg/graalvm/polyglot/Context;
aload 1
iconst_0
anewarray java.lang.Object
invokeinterface com.oracle.truffle.api.CallTarget.call:([Ljava/lang/Object;)Ljava/lang/Object;
invokevirtual org.graalvm.polyglot.Context.asValue:(Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
ldc Lcom/oracle/truffle/nfi/test/StringAsInterfaceNFITest$Strndup;
invokevirtual org.graalvm.polyglot.Value.as:(Ljava/lang/Class;)Ljava/lang/Object;
checkcast com.oracle.truffle.nfi.test.StringAsInterfaceNFITest$Strndup
astore 2
start local 2 7: getstatic com.oracle.truffle.nfi.test.StringAsInterfaceNFITest.stdlib:Lcom/oracle/truffle/nfi/test/StringAsInterfaceNFITest$StdLib;
ldc "Hello World!"
invokeinterface com.oracle.truffle.nfi.test.StringAsInterfaceNFITest$StdLib.strdup:(Ljava/lang/String;)Ljava/lang/String;
astore 3
start local 3 8: aload 2
aload 3
iconst_5
invokeinterface com.oracle.truffle.nfi.test.StringAsInterfaceNFITest$Strndup.strndup:(Ljava/lang/String;I)Ljava/lang/String;
astore 4
start local 4 9: ldc "Hello"
aload 4
invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)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 this Lcom/oracle/truffle/nfi/test/StringAsInterfaceNFITest;
6 11 1 load Lcom/oracle/truffle/api/CallTarget;
7 11 2 second Lcom/oracle/truffle/nfi/test/StringAsInterfaceNFITest$Strndup;
8 11 3 copy Ljava/lang/String;
9 11 4 hello Ljava/lang/String;
RuntimeVisibleAnnotations:
org.junit.Test()
}
SourceFile: "StringAsInterfaceNFITest.java"
NestMembers:
com.oracle.truffle.nfi.test.StringAsInterfaceNFITest$StdLib com.oracle.truffle.nfi.test.StringAsInterfaceNFITest$Strndup
InnerClasses:
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
abstract StdLib = com.oracle.truffle.nfi.test.StringAsInterfaceNFITest$StdLib of com.oracle.truffle.nfi.test.StringAsInterfaceNFITest
abstract Strndup = com.oracle.truffle.nfi.test.StringAsInterfaceNFITest$Strndup of com.oracle.truffle.nfi.test.StringAsInterfaceNFITest
public final RunWithPolyglotRule = com.oracle.truffle.tck.TruffleRunner$RunWithPolyglotRule of com.oracle.truffle.tck.TruffleRunner
public final Builder = org.graalvm.polyglot.Context$Builder of org.graalvm.polyglot.Context