final class com.oracle.truffle.api.interop.InteropLibrarySnippets$TryCatchNode extends com.oracle.truffle.api.interop.InteropLibrarySnippets$StatementNode
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: com.oracle.truffle.api.interop.InteropLibrarySnippets$TryCatchNode
super_class: com.oracle.truffle.api.interop.InteropLibrarySnippets$StatementNode
{
private com.oracle.truffle.api.interop.InteropLibrarySnippets$BlockNode block;
descriptor: Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$BlockNode;
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
com.oracle.truffle.api.nodes.Node$Child()
private com.oracle.truffle.api.interop.InteropLibrarySnippets$BlockNode catchBlock;
descriptor: Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$BlockNode;
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
com.oracle.truffle.api.nodes.Node$Child()
private com.oracle.truffle.api.interop.InteropLibrarySnippets$BlockNode finallyBlock;
descriptor: Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$BlockNode;
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
com.oracle.truffle.api.nodes.Node$Child()
private com.oracle.truffle.api.interop.InteropLibrary exceptions;
descriptor: Lcom/oracle/truffle/api/interop/InteropLibrary;
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
com.oracle.truffle.api.nodes.Node$Child()
private final com.oracle.truffle.api.profiles.BranchProfile exceptionProfile;
descriptor: Lcom/oracle/truffle/api/profiles/BranchProfile;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
void <init>(com.oracle.truffle.api.interop.InteropLibrarySnippets$BlockNode, com.oracle.truffle.api.interop.InteropLibrarySnippets$BlockNode, com.oracle.truffle.api.interop.InteropLibrarySnippets$BlockNode);
descriptor: (Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$BlockNode;Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$BlockNode;Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$BlockNode;)V
flags: (0x0000)
Code:
stack=3, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
invokespecial com.oracle.truffle.api.interop.InteropLibrarySnippets$StatementNode.<init>:()V
1: aload 0
aload 1
putfield com.oracle.truffle.api.interop.InteropLibrarySnippets$TryCatchNode.block:Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$BlockNode;
2: aload 0
aload 2
putfield com.oracle.truffle.api.interop.InteropLibrarySnippets$TryCatchNode.catchBlock:Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$BlockNode;
3: aload 0
aload 3
putfield com.oracle.truffle.api.interop.InteropLibrarySnippets$TryCatchNode.finallyBlock:Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$BlockNode;
4: aload 0
invokestatic com.oracle.truffle.api.interop.InteropLibrary.getFactory:()Lcom/oracle/truffle/api/library/LibraryFactory;
iconst_5
invokevirtual com.oracle.truffle.api.library.LibraryFactory.createDispatched:(I)Lcom/oracle/truffle/api/library/Library;
checkcast com.oracle.truffle.api.interop.InteropLibrary
putfield com.oracle.truffle.api.interop.InteropLibrarySnippets$TryCatchNode.exceptions:Lcom/oracle/truffle/api/interop/InteropLibrary;
5: aload 0
invokestatic com.oracle.truffle.api.profiles.BranchProfile.create:()Lcom/oracle/truffle/api/profiles/BranchProfile;
putfield com.oracle.truffle.api.interop.InteropLibrarySnippets$TryCatchNode.exceptionProfile:Lcom/oracle/truffle/api/profiles/BranchProfile;
6: return
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/api/interop/InteropLibrarySnippets$TryCatchNode;
0 7 1 block Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$BlockNode;
0 7 2 catchBlock Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$BlockNode;
0 7 3 finallyBlock Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$BlockNode;
MethodParameters:
Name Flags
block
catchBlock
finallyBlock
void executeVoid(com.oracle.truffle.api.frame.VirtualFrame);
descriptor: (Lcom/oracle/truffle/api/frame/VirtualFrame;)V
flags: (0x0000)
Code:
stack=4, locals=4, args_size=2
start local 0 start local 1 0: aconst_null
astore 2
start local 2 1: aload 0
getfield com.oracle.truffle.api.interop.InteropLibrarySnippets$TryCatchNode.block:Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$BlockNode;
aload 1
invokevirtual com.oracle.truffle.api.interop.InteropLibrarySnippets$BlockNode.executeVoid:(Lcom/oracle/truffle/api/frame/VirtualFrame;)V
2: goto 5
StackMap locals: com.oracle.truffle.api.interop.InteropLibrarySnippets$TryCatchNode com.oracle.truffle.api.frame.VirtualFrame java.lang.Throwable
StackMap stack: java.lang.Throwable
3: astore 3
start local 3 4: aload 0
aload 1
aload 3
aload 0
getfield com.oracle.truffle.api.interop.InteropLibrarySnippets$TryCatchNode.catchBlock:Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$BlockNode;
invokevirtual com.oracle.truffle.api.interop.InteropLibrarySnippets$TryCatchNode.executeCatchBlock:(Lcom/oracle/truffle/api/frame/VirtualFrame;Ljava/lang/Throwable;Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$BlockNode;)Ljava/lang/Throwable;
astore 2
end local 3 5: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.api.interop.InteropLibrarySnippets$TryCatchNode.finallyBlock:Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$BlockNode;
ifnull 7
6: aload 0
getfield com.oracle.truffle.api.interop.InteropLibrarySnippets$TryCatchNode.finallyBlock:Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$BlockNode;
aload 1
invokevirtual com.oracle.truffle.api.interop.InteropLibrarySnippets$BlockNode.executeVoid:(Lcom/oracle/truffle/api/frame/VirtualFrame;)V
7: StackMap locals:
StackMap stack:
aload 2
ifnull 13
8: aload 2
instanceof com.oracle.truffle.api.nodes.ControlFlowException
ifeq 10
9: aload 2
checkcast com.oracle.truffle.api.nodes.ControlFlowException
athrow
10: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.api.interop.InteropLibrarySnippets$TryCatchNode.exceptions:Lcom/oracle/truffle/api/interop/InteropLibrary;
aload 2
invokevirtual com.oracle.truffle.api.interop.InteropLibrary.throwException:(Ljava/lang/Object;)Ljava/lang/RuntimeException;
athrow
11: StackMap locals:
StackMap stack: com.oracle.truffle.api.interop.UnsupportedMessageException
astore 3
start local 3 12: aload 3
invokestatic com.oracle.truffle.api.CompilerDirectives.shouldNotReachHere:(Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
athrow
end local 3 13: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$TryCatchNode;
0 14 1 frame Lcom/oracle/truffle/api/frame/VirtualFrame;
1 14 2 exception Ljava/lang/Throwable;
4 5 3 ex Ljava/lang/Throwable;
12 13 3 ie Lcom/oracle/truffle/api/interop/UnsupportedMessageException;
Exception table:
from to target type
1 2 3 Class java.lang.Throwable
10 11 11 Class com.oracle.truffle.api.interop.UnsupportedMessageException
MethodParameters:
Name Flags
frame
private <T extends java.lang.Throwable> java.lang.Throwable executeCatchBlock(com.oracle.truffle.api.frame.VirtualFrame, java.lang.Throwable, com.oracle.truffle.api.interop.InteropLibrarySnippets$BlockNode) throws T;
descriptor: (Lcom/oracle/truffle/api/frame/VirtualFrame;Ljava/lang/Throwable;Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$BlockNode;)Ljava/lang/Throwable;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 2
instanceof com.oracle.truffle.api.nodes.ControlFlowException
ifeq 2
1: aload 2
areturn
2: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.api.interop.InteropLibrarySnippets$TryCatchNode.exceptionProfile:Lcom/oracle/truffle/api/profiles/BranchProfile;
invokevirtual com.oracle.truffle.api.profiles.BranchProfile.enter:()V
3: aload 0
getfield com.oracle.truffle.api.interop.InteropLibrarySnippets$TryCatchNode.exceptions:Lcom/oracle/truffle/api/interop/InteropLibrary;
aload 2
invokevirtual com.oracle.truffle.api.interop.InteropLibrary.isException:(Ljava/lang/Object;)Z
ifeq 10
4: aload 3
ifnull 9
5: aload 3
aload 1
invokevirtual com.oracle.truffle.api.interop.InteropLibrarySnippets$BlockNode.executeVoid:(Lcom/oracle/truffle/api/frame/VirtualFrame;)V
6: aconst_null
areturn
7: StackMap locals:
StackMap stack: java.lang.Throwable
astore 4
start local 4 8: aload 0
aload 1
aload 4
aconst_null
invokevirtual com.oracle.truffle.api.interop.InteropLibrarySnippets$TryCatchNode.executeCatchBlock:(Lcom/oracle/truffle/api/frame/VirtualFrame;Ljava/lang/Throwable;Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$BlockNode;)Ljava/lang/Throwable;
areturn
end local 4 9: StackMap locals:
StackMap stack:
aload 2
areturn
10: StackMap locals:
StackMap stack:
aload 2
athrow
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/api/interop/InteropLibrarySnippets$TryCatchNode;
0 11 1 frame Lcom/oracle/truffle/api/frame/VirtualFrame;
0 11 2 ex Ljava/lang/Throwable;
0 11 3 catchBlk Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$BlockNode;
8 9 4 catchEx Ljava/lang/Throwable;
Exception table:
from to target type
5 6 7 Class java.lang.Throwable
Exceptions:
throws java.lang.Throwable
Signature: <T:Ljava/lang/Throwable;>(Lcom/oracle/truffle/api/frame/VirtualFrame;Ljava/lang/Throwable;Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$BlockNode;)Ljava/lang/Throwable;^TT;
MethodParameters:
Name Flags
frame
ex
catchBlk
}
SourceFile: "InteropLibrary.java"
NestHost: com.oracle.truffle.api.interop.InteropLibrarySnippets
InnerClasses:
BlockNode = com.oracle.truffle.api.interop.InteropLibrarySnippets$BlockNode of com.oracle.truffle.api.interop.InteropLibrarySnippets
abstract StatementNode = com.oracle.truffle.api.interop.InteropLibrarySnippets$StatementNode of com.oracle.truffle.api.interop.InteropLibrarySnippets
final TryCatchNode = com.oracle.truffle.api.interop.InteropLibrarySnippets$TryCatchNode of com.oracle.truffle.api.interop.InteropLibrarySnippets
public abstract Child = com.oracle.truffle.api.nodes.Node$Child of com.oracle.truffle.api.nodes.Node