public class com.oracle.truffle.nfi.test.ObjectNFITest$TestKeepObjectNode extends com.oracle.truffle.nfi.test.NFITest$NFITestRootNode
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: com.oracle.truffle.nfi.test.ObjectNFITest$TestKeepObjectNode
super_class: com.oracle.truffle.nfi.test.NFITest$NFITestRootNode
{
final java.lang.Object keepExistingObject;
descriptor: Ljava/lang/Object;
flags: (0x0010) ACC_FINAL
final java.lang.Object freeAndGetObject;
descriptor: Ljava/lang/Object;
flags: (0x0010) ACC_FINAL
final java.lang.Object freeAndGetContent;
descriptor: Ljava/lang/Object;
flags: (0x0010) ACC_FINAL
com.oracle.truffle.api.interop.InteropLibrary keepExistingObjectInterop;
descriptor: Lcom/oracle/truffle/api/interop/InteropLibrary;
flags: (0x0000)
RuntimeVisibleAnnotations:
com.oracle.truffle.api.nodes.Node$Child()
com.oracle.truffle.api.interop.InteropLibrary freeAndGetObjectInterop;
descriptor: Lcom/oracle/truffle/api/interop/InteropLibrary;
flags: (0x0000)
RuntimeVisibleAnnotations:
com.oracle.truffle.api.nodes.Node$Child()
com.oracle.truffle.api.interop.InteropLibrary freeAndGetContentInterop;
descriptor: Lcom/oracle/truffle/api/interop/InteropLibrary;
flags: (0x0000)
RuntimeVisibleAnnotations:
com.oracle.truffle.api.nodes.Node$Child()
final com.oracle.truffle.nfi.test.ObjectNFITest this$0;
descriptor: Lcom/oracle/truffle/nfi/test/ObjectNFITest;
flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC
public void <init>(com.oracle.truffle.nfi.test.ObjectNFITest);
descriptor: (Lcom/oracle/truffle/nfi/test/ObjectNFITest;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 0: aload 0
aload 1
putfield com.oracle.truffle.nfi.test.ObjectNFITest$TestKeepObjectNode.this$0:Lcom/oracle/truffle/nfi/test/ObjectNFITest;
aload 0
invokespecial com.oracle.truffle.nfi.test.NFITest$NFITestRootNode.<init>:()V
1: aload 0
ldc "keep_existing_object"
ldc "(env, object):pointer"
invokestatic com.oracle.truffle.nfi.test.ObjectNFITest.lookupAndBind:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
putfield com.oracle.truffle.nfi.test.ObjectNFITest$TestKeepObjectNode.keepExistingObject:Ljava/lang/Object;
2: aload 0
ldc "free_and_get_object"
ldc "(env, pointer):object"
invokestatic com.oracle.truffle.nfi.test.ObjectNFITest.lookupAndBind:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
putfield com.oracle.truffle.nfi.test.ObjectNFITest$TestKeepObjectNode.freeAndGetObject:Ljava/lang/Object;
3: aload 0
ldc "free_and_get_content"
ldc "(env, pointer, pointer):sint32"
invokestatic com.oracle.truffle.nfi.test.ObjectNFITest.lookupAndBind:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
putfield com.oracle.truffle.nfi.test.ObjectNFITest$TestKeepObjectNode.freeAndGetContent:Ljava/lang/Object;
4: aload 0
aload 0
getfield com.oracle.truffle.nfi.test.ObjectNFITest$TestKeepObjectNode.keepExistingObject:Ljava/lang/Object;
invokestatic com.oracle.truffle.nfi.test.ObjectNFITest$TestKeepObjectNode.getInterop:(Ljava/lang/Object;)Lcom/oracle/truffle/api/interop/InteropLibrary;
putfield com.oracle.truffle.nfi.test.ObjectNFITest$TestKeepObjectNode.keepExistingObjectInterop:Lcom/oracle/truffle/api/interop/InteropLibrary;
5: aload 0
aload 0
getfield com.oracle.truffle.nfi.test.ObjectNFITest$TestKeepObjectNode.freeAndGetObject:Ljava/lang/Object;
invokestatic com.oracle.truffle.nfi.test.ObjectNFITest$TestKeepObjectNode.getInterop:(Ljava/lang/Object;)Lcom/oracle/truffle/api/interop/InteropLibrary;
putfield com.oracle.truffle.nfi.test.ObjectNFITest$TestKeepObjectNode.freeAndGetObjectInterop:Lcom/oracle/truffle/api/interop/InteropLibrary;
6: aload 0
aload 0
getfield com.oracle.truffle.nfi.test.ObjectNFITest$TestKeepObjectNode.freeAndGetContent:Ljava/lang/Object;
invokestatic com.oracle.truffle.nfi.test.ObjectNFITest$TestKeepObjectNode.getInterop:(Ljava/lang/Object;)Lcom/oracle/truffle/api/interop/InteropLibrary;
putfield com.oracle.truffle.nfi.test.ObjectNFITest$TestKeepObjectNode.freeAndGetContentInterop:Lcom/oracle/truffle/api/interop/InteropLibrary;
7: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lcom/oracle/truffle/nfi/test/ObjectNFITest$TestKeepObjectNode;
MethodParameters:
Name Flags
this$0 final
public java.lang.Object executeTest(com.oracle.truffle.api.frame.VirtualFrame);
descriptor: (Lcom/oracle/truffle/api/frame/VirtualFrame;)Ljava/lang/Object;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=7, args_size=2
start local 0 start local 1 0: aload 1
invokeinterface com.oracle.truffle.api.frame.VirtualFrame.getArguments:()[Ljava/lang/Object;
iconst_0
aaload
astore 2
start local 2 1: aload 0
getfield com.oracle.truffle.nfi.test.ObjectNFITest$TestKeepObjectNode.this$0:Lcom/oracle/truffle/nfi/test/ObjectNFITest;
getfield com.oracle.truffle.nfi.test.ObjectNFITest.testArg:Lcom/oracle/truffle/nfi/test/ObjectNFITest$TestObject;
bipush 42
putfield com.oracle.truffle.nfi.test.ObjectNFITest$TestObject.intField:I
2: aload 0
getfield com.oracle.truffle.nfi.test.ObjectNFITest$TestKeepObjectNode.keepExistingObjectInterop:Lcom/oracle/truffle/api/interop/InteropLibrary;
aload 0
getfield com.oracle.truffle.nfi.test.ObjectNFITest$TestKeepObjectNode.keepExistingObject:Ljava/lang/Object;
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 2
aastore
invokevirtual com.oracle.truffle.api.interop.InteropLibrary.execute:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
astore 3
start local 3 3: aload 0
getfield com.oracle.truffle.nfi.test.ObjectNFITest$TestKeepObjectNode.keepExistingObjectInterop:Lcom/oracle/truffle/api/interop/InteropLibrary;
aload 0
getfield com.oracle.truffle.nfi.test.ObjectNFITest$TestKeepObjectNode.keepExistingObject:Ljava/lang/Object;
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 2
aastore
invokevirtual com.oracle.truffle.api.interop.InteropLibrary.execute:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
astore 4
start local 4 4: aload 0
getfield com.oracle.truffle.nfi.test.ObjectNFITest$TestKeepObjectNode.keepExistingObjectInterop:Lcom/oracle/truffle/api/interop/InteropLibrary;
aload 0
getfield com.oracle.truffle.nfi.test.ObjectNFITest$TestKeepObjectNode.keepExistingObject:Ljava/lang/Object;
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 2
aastore
invokevirtual com.oracle.truffle.api.interop.InteropLibrary.execute:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
astore 5
start local 5 5: aload 0
getfield com.oracle.truffle.nfi.test.ObjectNFITest$TestKeepObjectNode.freeAndGetContentInterop:Lcom/oracle/truffle/api/interop/InteropLibrary;
aload 0
getfield com.oracle.truffle.nfi.test.ObjectNFITest$TestKeepObjectNode.freeAndGetContent:Ljava/lang/Object;
iconst_2
anewarray java.lang.Object
dup
iconst_0
getstatic com.oracle.truffle.nfi.test.ObjectNFITest.nativeAPI:Ljava/lang/Object;
aastore
dup
iconst_1
aload 3
aastore
invokevirtual com.oracle.truffle.api.interop.InteropLibrary.execute:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
astore 6
start local 6 6: bipush 42
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aload 6
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokestatic com.oracle.truffle.nfi.test.ObjectNFITest$TestKeepObjectNode.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
7: aload 0
getfield com.oracle.truffle.nfi.test.ObjectNFITest$TestKeepObjectNode.this$0:Lcom/oracle/truffle/nfi/test/ObjectNFITest;
getfield com.oracle.truffle.nfi.test.ObjectNFITest.testArg:Lcom/oracle/truffle/nfi/test/ObjectNFITest$TestObject;
dup
getfield com.oracle.truffle.nfi.test.ObjectNFITest$TestObject.intField:I
iconst_1
isub
putfield com.oracle.truffle.nfi.test.ObjectNFITest$TestObject.intField:I
8: aload 0
getfield com.oracle.truffle.nfi.test.ObjectNFITest$TestKeepObjectNode.freeAndGetContentInterop:Lcom/oracle/truffle/api/interop/InteropLibrary;
aload 0
getfield com.oracle.truffle.nfi.test.ObjectNFITest$TestKeepObjectNode.freeAndGetContent:Ljava/lang/Object;
iconst_2
anewarray java.lang.Object
dup
iconst_0
getstatic com.oracle.truffle.nfi.test.ObjectNFITest.nativeAPI:Ljava/lang/Object;
aastore
dup
iconst_1
aload 4
aastore
invokevirtual com.oracle.truffle.api.interop.InteropLibrary.execute:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
astore 6
9: bipush 41
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aload 6
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokestatic com.oracle.truffle.nfi.test.ObjectNFITest$TestKeepObjectNode.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
10: aload 0
getfield com.oracle.truffle.nfi.test.ObjectNFITest$TestKeepObjectNode.freeAndGetObjectInterop:Lcom/oracle/truffle/api/interop/InteropLibrary;
aload 0
getfield com.oracle.truffle.nfi.test.ObjectNFITest$TestKeepObjectNode.freeAndGetObject:Ljava/lang/Object;
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 5
aastore
invokevirtual com.oracle.truffle.api.interop.InteropLibrary.execute:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
areturn
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 11 0 this Lcom/oracle/truffle/nfi/test/ObjectNFITest$TestKeepObjectNode;
0 11 1 frame Lcom/oracle/truffle/api/frame/VirtualFrame;
1 11 2 obj Ljava/lang/Object;
3 11 3 nativePtr1 Ljava/lang/Object;
4 11 4 nativePtr2 Ljava/lang/Object;
5 11 5 nativePtr3 Ljava/lang/Object;
6 11 6 ret Ljava/lang/Object;
Exceptions:
throws com.oracle.truffle.api.interop.InteropException
MethodParameters:
Name Flags
frame
}
SourceFile: "ObjectNFITest.java"
NestHost: com.oracle.truffle.nfi.test.ObjectNFITest
InnerClasses:
public abstract Child = com.oracle.truffle.api.nodes.Node$Child of com.oracle.truffle.api.nodes.Node
protected abstract NFITestRootNode = com.oracle.truffle.nfi.test.NFITest$NFITestRootNode of com.oracle.truffle.nfi.test.NFITest
public TestKeepObjectNode = com.oracle.truffle.nfi.test.ObjectNFITest$TestKeepObjectNode of com.oracle.truffle.nfi.test.ObjectNFITest
private TestObject = com.oracle.truffle.nfi.test.ObjectNFITest$TestObject of com.oracle.truffle.nfi.test.ObjectNFITest