class com.oracle.truffle.nfi.NFIClosure$Execute
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: com.oracle.truffle.nfi.NFIClosure$Execute
super_class: java.lang.Object
{
static final boolean $assertionsDisabled;
descriptor: Z
flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Lcom/oracle/truffle/nfi/NFIClosure;
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.nfi.NFIClosure$Execute.$assertionsDisabled:Z
return
LocalVariableTable:
Start End Slot Name Signature
void <init>();
descriptor: ()V
flags: (0x0000)
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/NFIClosure$Execute;
static com.oracle.truffle.api.nodes.DirectCallNode createDirectCall(com.oracle.truffle.api.CallTarget);
descriptor: (Lcom/oracle/truffle/api/CallTarget;)Lcom/oracle/truffle/api/nodes/DirectCallNode;
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=2, args_size=1
start local 0 0: aload 0
invokestatic com.oracle.truffle.api.nodes.DirectCallNode.create:(Lcom/oracle/truffle/api/CallTarget;)Lcom/oracle/truffle/api/nodes/DirectCallNode;
astore 1
start local 1 1: aload 1
invokevirtual com.oracle.truffle.api.nodes.DirectCallNode.forceInlining:()V
2: aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 target Lcom/oracle/truffle/api/CallTarget;
1 3 1 ret Lcom/oracle/truffle/api/nodes/DirectCallNode;
MethodParameters:
Name Flags
target
static java.lang.Object doOptimizedDirect(com.oracle.truffle.nfi.NFIClosure, java.lang.Object[], com.oracle.truffle.nfi.NFISignature$SignatureCachedState, com.oracle.truffle.nfi.CallSignatureNode);
descriptor: (Lcom/oracle/truffle/nfi/NFIClosure;[Ljava/lang/Object;Lcom/oracle/truffle/nfi/NFISignature$SignatureCachedState;Lcom/oracle/truffle/nfi/CallSignatureNode;)Ljava/lang/Object;
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: getstatic com.oracle.truffle.nfi.NFIClosure$Execute.$assertionsDisabled:Z
ifne 1
aload 0
getfield com.oracle.truffle.nfi.NFIClosure.signature:Lcom/oracle/truffle/nfi/NFISignature;
getfield com.oracle.truffle.nfi.NFISignature.cachedState:Lcom/oracle/truffle/nfi/NFISignature$SignatureCachedState;
aload 2
if_acmpeq 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 3
aload 0
getfield com.oracle.truffle.nfi.NFIClosure.signature:Lcom/oracle/truffle/nfi/NFISignature;
aload 0
getfield com.oracle.truffle.nfi.NFIClosure.executable:Ljava/lang/Object;
aload 1
invokevirtual com.oracle.truffle.nfi.CallSignatureNode.execute:(Lcom/oracle/truffle/nfi/NFISignature;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 receiver Lcom/oracle/truffle/nfi/NFIClosure;
0 2 1 args [Ljava/lang/Object;
0 2 2 cachedState Lcom/oracle/truffle/nfi/NFISignature$SignatureCachedState;
0 2 3 call Lcom/oracle/truffle/nfi/CallSignatureNode;
Exceptions:
throws com.oracle.truffle.api.interop.ArityException, com.oracle.truffle.api.interop.UnsupportedTypeException, com.oracle.truffle.api.interop.UnsupportedMessageException
RuntimeVisibleAnnotations:
com.oracle.truffle.api.dsl.Specialization(guards = {"receiver.signature.cachedState != null", "receiver.signature.cachedState == cachedState"})
RuntimeInvisibleParameterAnnotations:
0:
1:
2:
com.oracle.truffle.api.dsl.Cached(value = "receiver.signature.cachedState")
3:
com.oracle.truffle.api.dsl.Cached(value = "cachedState.createOptimizedClosureCall()")
MethodParameters:
Name Flags
receiver
args
cachedState
call
static java.lang.Object doOptimizedIndirect(com.oracle.truffle.nfi.NFIClosure, java.lang.Object[], com.oracle.truffle.api.nodes.IndirectCallNode);
descriptor: (Lcom/oracle/truffle/nfi/NFIClosure;[Ljava/lang/Object;Lcom/oracle/truffle/api/nodes/IndirectCallNode;)Ljava/lang/Object;
flags: (0x0008) ACC_STATIC
Code:
stack=6, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 2
aload 0
getfield com.oracle.truffle.nfi.NFIClosure.signature:Lcom/oracle/truffle/nfi/NFISignature;
getfield com.oracle.truffle.nfi.NFISignature.cachedState:Lcom/oracle/truffle/nfi/NFISignature$SignatureCachedState;
invokevirtual com.oracle.truffle.nfi.NFISignature$SignatureCachedState.getPolymorphicClosureCall:()Lcom/oracle/truffle/api/CallTarget;
iconst_3
anewarray java.lang.Object
dup
iconst_0
aload 0
getfield com.oracle.truffle.nfi.NFIClosure.signature:Lcom/oracle/truffle/nfi/NFISignature;
aastore
dup
iconst_1
aload 0
getfield com.oracle.truffle.nfi.NFIClosure.executable:Ljava/lang/Object;
aastore
dup
iconst_2
aload 1
aastore
invokevirtual com.oracle.truffle.api.nodes.IndirectCallNode.call:(Lcom/oracle/truffle/api/CallTarget;[Ljava/lang/Object;)Ljava/lang/Object;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 receiver Lcom/oracle/truffle/nfi/NFIClosure;
0 1 1 args [Ljava/lang/Object;
0 1 2 call Lcom/oracle/truffle/api/nodes/IndirectCallNode;
RuntimeVisibleAnnotations:
com.oracle.truffle.api.dsl.Specialization(replaces = {"doOptimizedDirect"}, guards = {"receiver.signature.cachedState != null"})
RuntimeInvisibleParameterAnnotations:
0:
1:
2:
com.oracle.truffle.api.dsl.Cached()
MethodParameters:
Name Flags
receiver
args
call
static java.lang.Object doSlowPath(com.oracle.truffle.nfi.NFIClosure, java.lang.Object[], com.oracle.truffle.api.profiles.BranchProfile, com.oracle.truffle.nfi.ConvertTypeNode$ConvertFromNativeNode, com.oracle.truffle.nfi.ConvertTypeNode$ConvertToNativeNode, com.oracle.truffle.api.interop.InteropLibrary);
descriptor: (Lcom/oracle/truffle/nfi/NFIClosure;[Ljava/lang/Object;Lcom/oracle/truffle/api/profiles/BranchProfile;Lcom/oracle/truffle/nfi/ConvertTypeNode$ConvertFromNativeNode;Lcom/oracle/truffle/nfi/ConvertTypeNode$ConvertToNativeNode;Lcom/oracle/truffle/api/interop/InteropLibrary;)Ljava/lang/Object;
flags: (0x0008) ACC_STATIC
Code:
stack=6, locals=10, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: aload 0
getfield com.oracle.truffle.nfi.NFIClosure.signature:Lcom/oracle/truffle/nfi/NFISignature;
astore 6
start local 6 1: aload 1
arraylength
aload 6
getfield com.oracle.truffle.nfi.NFISignature.nativeArgCount:I
if_icmpeq 4
2: aload 2
invokevirtual com.oracle.truffle.api.profiles.BranchProfile.enter:()V
3: aload 6
getfield com.oracle.truffle.nfi.NFISignature.nativeArgCount:I
aload 1
arraylength
invokestatic com.oracle.truffle.api.interop.ArityException.create:(II)Lcom/oracle/truffle/api/interop/ArityException;
athrow
4: StackMap locals: com.oracle.truffle.nfi.NFISignature
StackMap stack:
aload 6
getfield com.oracle.truffle.nfi.NFISignature.managedArgCount:I
anewarray java.lang.Object
astore 7
start local 7 5: iconst_0
istore 8
start local 8 6: iconst_0
istore 9
start local 9 7: goto 11
8: StackMap locals: java.lang.Object[] int int
StackMap stack:
aload 6
getfield com.oracle.truffle.nfi.NFISignature.argTypes:[Lcom/oracle/truffle/nfi/NFIType;
iload 9
aaload
getfield com.oracle.truffle.nfi.NFIType.cachedState:Lcom/oracle/truffle/nfi/NFIType$TypeCachedState;
getfield com.oracle.truffle.nfi.NFIType$TypeCachedState.managedArgCount:I
iconst_1
if_icmpne 10
9: aload 7
iload 8
iinc 8 1
aload 3
aload 6
getfield com.oracle.truffle.nfi.NFISignature.argTypes:[Lcom/oracle/truffle/nfi/NFIType;
iload 9
aaload
aload 1
iload 9
aaload
invokevirtual com.oracle.truffle.nfi.ConvertTypeNode$ConvertFromNativeNode.execute:(Lcom/oracle/truffle/nfi/NFIType;Ljava/lang/Object;)Ljava/lang/Object;
aastore
10: StackMap locals:
StackMap stack:
iinc 9 1
StackMap locals:
StackMap stack:
11: iload 9
aload 6
getfield com.oracle.truffle.nfi.NFISignature.nativeArgCount:I
if_icmplt 8
end local 9 12: aload 5
aload 0
getfield com.oracle.truffle.nfi.NFIClosure.executable:Ljava/lang/Object;
aload 7
invokevirtual com.oracle.truffle.api.interop.InteropLibrary.execute:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
astore 9
start local 9 13: aload 4
aload 6
getfield com.oracle.truffle.nfi.NFISignature.retType:Lcom/oracle/truffle/nfi/NFIType;
aload 9
invokevirtual com.oracle.truffle.nfi.ConvertTypeNode$ConvertToNativeNode.execute:(Lcom/oracle/truffle/nfi/NFIType;Ljava/lang/Object;)Ljava/lang/Object;
areturn
end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 receiver Lcom/oracle/truffle/nfi/NFIClosure;
0 14 1 args [Ljava/lang/Object;
0 14 2 exception Lcom/oracle/truffle/api/profiles/BranchProfile;
0 14 3 convertArg Lcom/oracle/truffle/nfi/ConvertTypeNode$ConvertFromNativeNode;
0 14 4 convertRet Lcom/oracle/truffle/nfi/ConvertTypeNode$ConvertToNativeNode;
0 14 5 interop Lcom/oracle/truffle/api/interop/InteropLibrary;
1 14 6 signature Lcom/oracle/truffle/nfi/NFISignature;
5 14 7 preparedArgs [Ljava/lang/Object;
6 14 8 argIdx I
7 12 9 i I
13 14 9 ret Ljava/lang/Object;
Exceptions:
throws com.oracle.truffle.api.interop.ArityException, com.oracle.truffle.api.interop.UnsupportedTypeException, com.oracle.truffle.api.interop.UnsupportedMessageException
RuntimeVisibleAnnotations:
com.oracle.truffle.api.dsl.Specialization(guards = {"receiver.signature.cachedState == null"})
RuntimeInvisibleParameterAnnotations:
0:
1:
2:
com.oracle.truffle.api.dsl.Cached()
3:
com.oracle.truffle.api.dsl.Cached()
4:
com.oracle.truffle.api.dsl.Cached()
5:
com.oracle.truffle.api.library.CachedLibrary(value = "receiver.executable")
MethodParameters:
Name Flags
receiver
args
exception
convertArg
convertRet
interop
}
SourceFile: "NFIClosure.java"
NestHost: com.oracle.truffle.nfi.NFIClosure
InnerClasses:
abstract ConvertFromNativeNode = com.oracle.truffle.nfi.ConvertTypeNode$ConvertFromNativeNode of com.oracle.truffle.nfi.ConvertTypeNode
abstract ConvertToNativeNode = com.oracle.truffle.nfi.ConvertTypeNode$ConvertToNativeNode of com.oracle.truffle.nfi.ConvertTypeNode
Execute = com.oracle.truffle.nfi.NFIClosure$Execute of com.oracle.truffle.nfi.NFIClosure
final SignatureCachedState = com.oracle.truffle.nfi.NFISignature$SignatureCachedState of com.oracle.truffle.nfi.NFISignature
abstract TypeCachedState = com.oracle.truffle.nfi.NFIType$TypeCachedState of com.oracle.truffle.nfi.NFIType
RuntimeVisibleAnnotations:
com.oracle.truffle.api.library.ExportMessage()