public abstract class com.oracle.svm.core.snippets.ExceptionUnwind
minor version: 0
major version: 59
flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
this_class: com.oracle.svm.core.snippets.ExceptionUnwind
super_class: java.lang.Object
{
public static final com.oracle.svm.core.snippets.SnippetRuntime$SubstrateForeignCallDescriptor UNWIND_EXCEPTION_WITHOUT_CALLEE_SAVED_REGISTERS;
descriptor: Lcom/oracle/svm/core/snippets/SnippetRuntime$SubstrateForeignCallDescriptor;
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
public static final com.oracle.svm.core.snippets.SnippetRuntime$SubstrateForeignCallDescriptor UNWIND_EXCEPTION_WITH_CALLEE_SAVED_REGISTERS;
descriptor: Lcom/oracle/svm/core/snippets/SnippetRuntime$SubstrateForeignCallDescriptor;
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
public static final com.oracle.svm.core.snippets.SnippetRuntime$SubstrateForeignCallDescriptor[] FOREIGN_CALLS;
descriptor: [Lcom/oracle/svm/core/snippets/SnippetRuntime$SubstrateForeignCallDescriptor;
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
public static final com.oracle.svm.core.threadlocal.FastThreadLocalObject<java.lang.Throwable> currentException;
descriptor: Lcom/oracle/svm/core/threadlocal/FastThreadLocalObject;
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
Signature: Lcom/oracle/svm/core/threadlocal/FastThreadLocalObject<Ljava/lang/Throwable;>;
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=7, locals=0, args_size=0
0: ldc Lcom/oracle/svm/core/snippets/ExceptionUnwind;
1: ldc "unwindExceptionWithoutCalleeSavedRegisters"
iconst_1
iconst_1
anewarray org.graalvm.word.LocationIdentity
dup
iconst_0
invokestatic org.graalvm.word.LocationIdentity.any:()Lorg/graalvm/word/LocationIdentity;
aastore
2: invokestatic com.oracle.svm.core.snippets.SnippetRuntime.findForeignCall:(Ljava/lang/Class;Ljava/lang/String;Z[Lorg/graalvm/word/LocationIdentity;)Lcom/oracle/svm/core/snippets/SnippetRuntime$SubstrateForeignCallDescriptor;
putstatic com.oracle.svm.core.snippets.ExceptionUnwind.UNWIND_EXCEPTION_WITHOUT_CALLEE_SAVED_REGISTERS:Lcom/oracle/svm/core/snippets/SnippetRuntime$SubstrateForeignCallDescriptor;
3: ldc Lcom/oracle/svm/core/snippets/ExceptionUnwind;
ldc "unwindExceptionWithCalleeSavedRegisters"
4: iconst_1
iconst_1
anewarray org.graalvm.word.LocationIdentity
dup
iconst_0
invokestatic org.graalvm.word.LocationIdentity.any:()Lorg/graalvm/word/LocationIdentity;
aastore
5: invokestatic com.oracle.svm.core.snippets.SnippetRuntime.findForeignCall:(Ljava/lang/Class;Ljava/lang/String;Z[Lorg/graalvm/word/LocationIdentity;)Lcom/oracle/svm/core/snippets/SnippetRuntime$SubstrateForeignCallDescriptor;
putstatic com.oracle.svm.core.snippets.ExceptionUnwind.UNWIND_EXCEPTION_WITH_CALLEE_SAVED_REGISTERS:Lcom/oracle/svm/core/snippets/SnippetRuntime$SubstrateForeignCallDescriptor;
6: iconst_2
anewarray com.oracle.svm.core.snippets.SnippetRuntime$SubstrateForeignCallDescriptor
dup
iconst_0
7: getstatic com.oracle.svm.core.snippets.ExceptionUnwind.UNWIND_EXCEPTION_WITHOUT_CALLEE_SAVED_REGISTERS:Lcom/oracle/svm/core/snippets/SnippetRuntime$SubstrateForeignCallDescriptor;
aastore
dup
iconst_1
8: getstatic com.oracle.svm.core.snippets.ExceptionUnwind.UNWIND_EXCEPTION_WITH_CALLEE_SAVED_REGISTERS:Lcom/oracle/svm/core/snippets/SnippetRuntime$SubstrateForeignCallDescriptor;
aastore
9: putstatic com.oracle.svm.core.snippets.ExceptionUnwind.FOREIGN_CALLS:[Lcom/oracle/svm/core/snippets/SnippetRuntime$SubstrateForeignCallDescriptor;
10: ldc Ljava/lang/Throwable;
invokestatic com.oracle.svm.core.threadlocal.FastThreadLocalFactory.createObject:(Ljava/lang/Class;)Lcom/oracle/svm/core/threadlocal/FastThreadLocalObject;
putstatic com.oracle.svm.core.snippets.ExceptionUnwind.currentException:Lcom/oracle/svm/core/threadlocal/FastThreadLocalObject;
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/svm/core/snippets/ExceptionUnwind;
static boolean exceptionsAreFatal();
descriptor: ()Z
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: getstatic com.oracle.svm.core.SubstrateOptions.MultiThreaded:Lcom/oracle/svm/core/option/HostedOptionKey;
invokevirtual com.oracle.svm.core.option.HostedOptionKey.getValue:()Ljava/lang/Object;
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.booleanValue:()Z
ifeq 1
invokestatic com.oracle.svm.core.thread.VMThreads$StatusSupport.isStatusJava:()Z
ifne 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
LocalVariableTable:
Start End Slot Name Signature
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Called from uninterruptible callers.", mayBeInlined = true)
private static void unwindExceptionWithoutCalleeSavedRegisters(java.lang.Throwable, org.graalvm.word.Pointer);
descriptor: (Ljava/lang/Throwable;Lorg/graalvm/word/Pointer;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: invokestatic com.oracle.svm.core.stack.StackOverflowCheck.singleton:()Lcom/oracle/svm/core/stack/StackOverflowCheck;
invokeinterface com.oracle.svm.core.stack.StackOverflowCheck.makeYellowZoneAvailable:()V
1: aload 0
aload 1
iconst_0
invokestatic com.oracle.svm.core.snippets.ExceptionUnwind.unwindExceptionInterruptible:(Ljava/lang/Throwable;Lorg/graalvm/word/Pointer;Z)V
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 exception Ljava/lang/Throwable;
0 3 1 callerSP Lorg/graalvm/word/Pointer;
RuntimeVisibleAnnotations:
com.oracle.svm.core.snippets.SubstrateForeignCallTarget(stubCallingConvention = true)
com.oracle.svm.core.annotate.Uninterruptible(reason = "Must not execute recurring callbacks or a stack overflow check.", calleeMustBe = false)
com.oracle.svm.core.annotate.RestrictHeapAccess(access = com.oracle.svm.core.annotate.RestrictHeapAccess$Access.NO_ALLOCATION:Lcom/oracle/svm/core/annotate/RestrictHeapAccess$Access;, reason = "Must not allocate when unwinding the stack.")
MethodParameters:
Name Flags
exception
callerSP
private static void unwindExceptionWithCalleeSavedRegisters(java.lang.Throwable, org.graalvm.word.Pointer);
descriptor: (Ljava/lang/Throwable;Lorg/graalvm/word/Pointer;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: invokestatic com.oracle.svm.core.stack.StackOverflowCheck.singleton:()Lcom/oracle/svm/core/stack/StackOverflowCheck;
invokeinterface com.oracle.svm.core.stack.StackOverflowCheck.makeYellowZoneAvailable:()V
1: aload 0
aload 1
iconst_1
invokestatic com.oracle.svm.core.snippets.ExceptionUnwind.unwindExceptionInterruptible:(Ljava/lang/Throwable;Lorg/graalvm/word/Pointer;Z)V
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 exception Ljava/lang/Throwable;
0 3 1 callerSP Lorg/graalvm/word/Pointer;
RuntimeVisibleAnnotations:
com.oracle.svm.core.snippets.SubstrateForeignCallTarget(stubCallingConvention = true)
com.oracle.svm.core.annotate.Uninterruptible(reason = "Must not execute recurring callbacks or a stack overflow check.", calleeMustBe = false)
com.oracle.svm.core.annotate.RestrictHeapAccess(access = com.oracle.svm.core.annotate.RestrictHeapAccess$Access.NO_ALLOCATION:Lcom/oracle/svm/core/annotate/RestrictHeapAccess$Access;, reason = "Must not allocate when unwinding the stack.")
MethodParameters:
Name Flags
exception
callerSP
private static void unwindExceptionInterruptible(java.lang.Throwable, org.graalvm.word.Pointer, boolean);
descriptor: (Ljava/lang/Throwable;Lorg/graalvm/word/Pointer;Z)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=3, args_size=3
start local 0 start local 1 start local 2 0: getstatic com.oracle.svm.core.snippets.ExceptionUnwind.currentException:Lcom/oracle/svm/core/threadlocal/FastThreadLocalObject;
invokevirtual com.oracle.svm.core.threadlocal.FastThreadLocalObject.get:()Ljava/lang/Object;
ifnull 3
1: aload 0
invokestatic com.oracle.svm.core.snippets.ExceptionUnwind.reportRecursiveUnwind:(Ljava/lang/Throwable;)V
2: return
3: StackMap locals:
StackMap stack:
getstatic com.oracle.svm.core.snippets.ExceptionUnwind.currentException:Lcom/oracle/svm/core/threadlocal/FastThreadLocalObject;
aload 0
invokevirtual com.oracle.svm.core.threadlocal.FastThreadLocalObject.set:(Ljava/lang/Object;)V
4: invokestatic com.oracle.svm.core.snippets.ExceptionUnwind.exceptionsAreFatal:()Z
ifeq 7
5: aload 0
invokestatic com.oracle.svm.core.snippets.ExceptionUnwind.reportFatalUnwind:(Ljava/lang/Throwable;)V
6: return
7: StackMap locals:
StackMap stack:
ldc Lcom/oracle/svm/core/snippets/ExceptionUnwind;
invokestatic org.graalvm.nativeimage.ImageSingletons.contains:(Ljava/lang/Class;)Z
ifeq 10
8: ldc Lcom/oracle/svm/core/snippets/ExceptionUnwind;
invokestatic org.graalvm.nativeimage.ImageSingletons.lookup:(Ljava/lang/Class;)Ljava/lang/Object;
checkcast com.oracle.svm.core.snippets.ExceptionUnwind
aload 1
invokevirtual com.oracle.svm.core.snippets.ExceptionUnwind.customUnwindException:(Lorg/graalvm/word/Pointer;)V
9: goto 11
10: StackMap locals:
StackMap stack:
aload 1
iload 2
invokestatic com.oracle.svm.core.snippets.ExceptionUnwind.defaultUnwindException:(Lorg/graalvm/word/Pointer;Z)V
11: StackMap locals:
StackMap stack:
aload 0
invokestatic com.oracle.svm.core.snippets.ExceptionUnwind.reportUnhandledException:(Ljava/lang/Throwable;)V
12: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 exception Ljava/lang/Throwable;
0 13 1 callerSP Lorg/graalvm/word/Pointer;
0 13 2 fromMethodWithCalleeSavedRegisters Z
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.RestrictHeapAccess(access = com.oracle.svm.core.annotate.RestrictHeapAccess$Access.NO_ALLOCATION:Lcom/oracle/svm/core/annotate/RestrictHeapAccess$Access;, reason = "Must not allocate when unwinding the stack.")
MethodParameters:
Name Flags
exception
callerSP
fromMethodWithCalleeSavedRegisters
private static void reportRecursiveUnwind(java.lang.Throwable);
descriptor: (Ljava/lang/Throwable;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: invokestatic com.oracle.svm.core.log.Log.log:()Lcom/oracle/svm/core/log/Log;
ldc "Fatal error: recursion in exception handling: "
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
aload 0
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
pop
1: invokestatic com.oracle.svm.core.log.Log.log:()Lcom/oracle/svm/core/log/Log;
ldc " thrown while unwinding "
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
getstatic com.oracle.svm.core.snippets.ExceptionUnwind.currentException:Lcom/oracle/svm/core/threadlocal/FastThreadLocalObject;
invokevirtual com.oracle.svm.core.threadlocal.FastThreadLocalObject.get:()Ljava/lang/Object;
checkcast java.lang.Throwable
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
pop
2: ldc Lorg/graalvm/nativeimage/LogHandler;
invokestatic org.graalvm.nativeimage.ImageSingletons.lookup:(Ljava/lang/Class;)Ljava/lang/Object;
checkcast org.graalvm.nativeimage.LogHandler
invokeinterface org.graalvm.nativeimage.LogHandler.fatalError:()V
3: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 exception Ljava/lang/Throwable;
MethodParameters:
Name Flags
exception
private static void reportFatalUnwind(java.lang.Throwable);
descriptor: (Ljava/lang/Throwable;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: invokestatic com.oracle.svm.core.log.Log.log:()Lcom/oracle/svm/core/log/Log;
ldc "Fatal error: exception unwind while thread is not in Java state: "
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
pop
1: invokestatic com.oracle.svm.core.log.Log.log:()Lcom/oracle/svm/core/log/Log;
aload 0
invokevirtual com.oracle.svm.core.log.Log.exception:(Ljava/lang/Throwable;)Lcom/oracle/svm/core/log/Log;
pop
2: ldc Lorg/graalvm/nativeimage/LogHandler;
invokestatic org.graalvm.nativeimage.ImageSingletons.lookup:(Ljava/lang/Class;)Ljava/lang/Object;
checkcast org.graalvm.nativeimage.LogHandler
invokeinterface org.graalvm.nativeimage.LogHandler.fatalError:()V
3: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 exception Ljava/lang/Throwable;
MethodParameters:
Name Flags
exception
private static void reportUnhandledException(java.lang.Throwable);
descriptor: (Ljava/lang/Throwable;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: invokestatic com.oracle.svm.core.log.Log.log:()Lcom/oracle/svm/core/log/Log;
ldc "Fatal error: unhandled exception in isolate "
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
invokestatic org.graalvm.nativeimage.CurrentIsolate.getIsolate:()Lorg/graalvm/nativeimage/Isolate;
invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
ldc ": "
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
pop
1: invokestatic com.oracle.svm.core.log.Log.log:()Lcom/oracle/svm/core/log/Log;
aload 0
invokevirtual com.oracle.svm.core.log.Log.exception:(Ljava/lang/Throwable;)Lcom/oracle/svm/core/log/Log;
pop
2: ldc Lorg/graalvm/nativeimage/LogHandler;
invokestatic org.graalvm.nativeimage.ImageSingletons.lookup:(Ljava/lang/Class;)Ljava/lang/Object;
checkcast org.graalvm.nativeimage.LogHandler
invokeinterface org.graalvm.nativeimage.LogHandler.fatalError:()V
3: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 exception Ljava/lang/Throwable;
MethodParameters:
Name Flags
exception
protected abstract void customUnwindException(org.graalvm.word.Pointer);
descriptor: (Lorg/graalvm/word/Pointer;)V
flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
MethodParameters:
Name Flags
callerSP
private static void defaultUnwindException(org.graalvm.word.Pointer, boolean);
descriptor: (Lorg/graalvm/word/Pointer;Z)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=13, args_size=2
start local 0 start local 1 0: iload 1
istore 2
start local 2 1: invokestatic com.oracle.svm.core.FrameAccess.singleton:()Lcom/oracle/svm/core/FrameAccess;
aload 0
invokevirtual com.oracle.svm.core.FrameAccess.readReturnAddress:(Lorg/graalvm/word/Pointer;)Lorg/graalvm/nativeimage/c/function/CodePointer;
astore 3
start local 3 2: ldc Lcom/oracle/svm/core/stack/JavaStackWalk;
invokestatic org.graalvm.nativeimage.StackValue.get:(Ljava/lang/Class;)Lorg/graalvm/word/PointerBase;
checkcast com.oracle.svm.core.stack.JavaStackWalk
astore 4
start local 4 3: aload 4
aload 0
aload 3
invokestatic com.oracle.svm.core.stack.JavaStackWalker.initWalk:(Lcom/oracle/svm/core/stack/JavaStackWalk;Lorg/graalvm/word/Pointer;Lorg/graalvm/nativeimage/c/function/CodePointer;)V
4: StackMap locals: int org.graalvm.nativeimage.c.function.CodePointer com.oracle.svm.core.stack.JavaStackWalk
StackMap stack:
ldc Lcom/oracle/svm/core/code/SimpleCodeInfoQueryResult;
invokestatic org.graalvm.nativeimage.StackValue.get:(Ljava/lang/Class;)Lorg/graalvm/word/PointerBase;
checkcast com.oracle.svm.core.code.SimpleCodeInfoQueryResult
astore 5
start local 5 5: aload 4
invokeinterface com.oracle.svm.core.stack.JavaStackWalk.getSP:()Lorg/graalvm/word/Pointer;
astore 6
start local 6 6: aload 4
invokeinterface com.oracle.svm.core.stack.JavaStackWalk.getPossiblyStaleIP:()Lorg/graalvm/nativeimage/c/function/CodePointer;
astore 7
start local 7 7: aload 6
invokestatic com.oracle.svm.core.deopt.Deoptimizer.checkDeoptimized:(Lorg/graalvm/word/Pointer;)Lcom/oracle/svm/core/deopt/DeoptimizedFrame;
astore 8
start local 8 8: aload 8
ifnonnull 22
9: aload 4
invokeinterface com.oracle.svm.core.stack.JavaStackWalk.getIPCodeInfo:()Lcom/oracle/svm/core/code/UntetheredCodeInfo;
astore 9
start local 9 10: aload 9
invokeinterface com.oracle.svm.core.code.UntetheredCodeInfo.isNull:()Z
ifeq 13
11: aload 6
aload 7
aload 8
invokestatic com.oracle.svm.core.stack.JavaStackWalker.reportUnknownFrameEncountered:(Lorg/graalvm/word/Pointer;Lorg/graalvm/nativeimage/c/function/CodePointer;Lcom/oracle/svm/core/deopt/DeoptimizedFrame;)Ljava/lang/RuntimeException;
pop
12: return
13: StackMap locals: org.graalvm.word.Pointer int int org.graalvm.nativeimage.c.function.CodePointer com.oracle.svm.core.stack.JavaStackWalk com.oracle.svm.core.code.SimpleCodeInfoQueryResult org.graalvm.word.Pointer org.graalvm.nativeimage.c.function.CodePointer com.oracle.svm.core.deopt.DeoptimizedFrame com.oracle.svm.core.code.UntetheredCodeInfo
StackMap stack:
aload 9
invokestatic com.oracle.svm.core.code.CodeInfoAccess.acquireTether:(Lcom/oracle/svm/core/code/UntetheredCodeInfo;)Ljava/lang/Object;
astore 10
start local 10 14: aload 9
aload 10
invokestatic com.oracle.svm.core.code.CodeInfoAccess.convert:(Lcom/oracle/svm/core/code/UntetheredCodeInfo;Ljava/lang/Object;)Lcom/oracle/svm/core/code/CodeInfo;
astore 11
start local 11 15: aload 11
aload 7
aload 5
invokestatic com.oracle.svm.core.snippets.ExceptionUnwind.lookupCodeInfoInterruptible:(Lcom/oracle/svm/core/code/CodeInfo;Lorg/graalvm/nativeimage/c/function/CodePointer;Lcom/oracle/svm/core/code/SimpleCodeInfoQueryResult;)V
16: aload 6
invokestatic com.oracle.svm.core.deopt.Deoptimizer.checkDeoptimized:(Lorg/graalvm/word/Pointer;)Lcom/oracle/svm/core/deopt/DeoptimizedFrame;
astore 8
end local 11 17: goto 21
StackMap locals: org.graalvm.word.Pointer int int org.graalvm.nativeimage.c.function.CodePointer com.oracle.svm.core.stack.JavaStackWalk com.oracle.svm.core.code.SimpleCodeInfoQueryResult org.graalvm.word.Pointer org.graalvm.nativeimage.c.function.CodePointer com.oracle.svm.core.deopt.DeoptimizedFrame com.oracle.svm.core.code.UntetheredCodeInfo java.lang.Object
StackMap stack: java.lang.Throwable
18: astore 12
19: aload 9
aload 10
invokestatic com.oracle.svm.core.code.CodeInfoAccess.releaseTether:(Lcom/oracle/svm/core/code/UntetheredCodeInfo;Ljava/lang/Object;)V
20: aload 12
athrow
21: StackMap locals:
StackMap stack:
aload 9
aload 10
invokestatic com.oracle.svm.core.code.CodeInfoAccess.releaseTether:(Lcom/oracle/svm/core/code/UntetheredCodeInfo;Ljava/lang/Object;)V
end local 10 end local 9 22: StackMap locals:
StackMap stack:
aload 8
ifnull 26
invokestatic com.oracle.svm.core.deopt.DeoptimizationSupport.enabled:()Z
ifeq 26
23: aload 8
invokestatic com.oracle.svm.core.snippets.ExceptionUnwind.deoptTakeExceptionInterruptible:(Lcom/oracle/svm/core/deopt/DeoptimizedFrame;)V
24: aload 6
invokestatic com.oracle.svm.core.deopt.DeoptimizationSupport.getDeoptStubPointer:()Lorg/graalvm/nativeimage/c/function/CFunctionPointer;
iload 2
invokestatic com.oracle.svm.core.snippets.ExceptionUnwind.jumpToHandler:(Lorg/graalvm/word/Pointer;Lorg/graalvm/nativeimage/c/function/CodePointer;Z)V
25: return
26: StackMap locals:
StackMap stack:
aload 5
invokeinterface com.oracle.svm.core.code.SimpleCodeInfoQueryResult.getExceptionOffset:()J
lstore 9
start local 9 27: lload 9
lconst_0
lcmp
ifeq 31
28: aload 7
checkcast org.graalvm.word.UnsignedWord
lload 9
invokestatic org.graalvm.word.WordFactory.signed:(J)Lorg/graalvm/word/SignedWord;
checkcast org.graalvm.word.UnsignedWord
invokeinterface org.graalvm.word.UnsignedWord.add:(Lorg/graalvm/word/UnsignedWord;)Lorg/graalvm/word/UnsignedWord;
checkcast org.graalvm.nativeimage.c.function.CodePointer
astore 11
start local 11 29: aload 6
aload 11
iload 2
invokestatic com.oracle.svm.core.snippets.ExceptionUnwind.jumpToHandler:(Lorg/graalvm/word/Pointer;Lorg/graalvm/nativeimage/c/function/CodePointer;Z)V
30: return
end local 11 31: StackMap locals: long
StackMap stack:
aload 5
invokeinterface com.oracle.svm.core.code.SimpleCodeInfoQueryResult.getEncodedFrameSize:()J
invokestatic com.oracle.svm.core.code.CodeInfoQueryResult.hasCalleeSavedRegisters:(J)Z
istore 2
32: aload 4
aload 5
aload 8
invokestatic com.oracle.svm.core.stack.JavaStackWalker.continueWalk:(Lcom/oracle/svm/core/stack/JavaStackWalk;Lcom/oracle/svm/core/code/SimpleCodeInfoQueryResult;Lcom/oracle/svm/core/deopt/DeoptimizedFrame;)Z
ifne 4
33: return
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 34 0 startSP Lorg/graalvm/word/Pointer;
0 34 1 fromMethodWithCalleeSavedRegisters Z
1 34 2 hasCalleeSavedRegisters Z
2 34 3 startIP Lorg/graalvm/nativeimage/c/function/CodePointer;
3 34 4 walk Lcom/oracle/svm/core/stack/JavaStackWalk;
5 34 5 codeInfoQueryResult Lcom/oracle/svm/core/code/SimpleCodeInfoQueryResult;
6 34 6 sp Lorg/graalvm/word/Pointer;
7 34 7 ip Lorg/graalvm/nativeimage/c/function/CodePointer;
8 34 8 deoptFrame Lcom/oracle/svm/core/deopt/DeoptimizedFrame;
10 22 9 untetheredInfo Lcom/oracle/svm/core/code/UntetheredCodeInfo;
14 22 10 tether Ljava/lang/Object;
15 17 11 codeInfo Lcom/oracle/svm/core/code/CodeInfo;
27 34 9 exceptionOffset J
29 31 11 handlerIP Lorg/graalvm/nativeimage/c/function/CodePointer;
Exception table:
from to target type
14 18 18 any
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Prevent deoptimization apart from the few places explicitly considered safe for deoptimization")
MethodParameters:
Name Flags
startSP
fromMethodWithCalleeSavedRegisters
private static void jumpToHandler(org.graalvm.word.Pointer, org.graalvm.nativeimage.c.function.CodePointer, boolean);
descriptor: (Lorg/graalvm/word/Pointer;Lorg/graalvm/nativeimage/c/function/CodePointer;Z)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=4, args_size=3
start local 0 start local 1 start local 2 0: getstatic com.oracle.svm.core.snippets.ExceptionUnwind.currentException:Lcom/oracle/svm/core/threadlocal/FastThreadLocalObject;
invokevirtual com.oracle.svm.core.threadlocal.FastThreadLocalObject.get:()Ljava/lang/Object;
checkcast java.lang.Throwable
astore 3
start local 3 1: getstatic com.oracle.svm.core.snippets.ExceptionUnwind.currentException:Lcom/oracle/svm/core/threadlocal/FastThreadLocalObject;
aconst_null
invokevirtual com.oracle.svm.core.threadlocal.FastThreadLocalObject.set:(Ljava/lang/Object;)V
2: invokestatic com.oracle.svm.core.stack.StackOverflowCheck.singleton:()Lcom/oracle/svm/core/stack/StackOverflowCheck;
invokeinterface com.oracle.svm.core.stack.StackOverflowCheck.protectYellowZone:()V
3: iload 2
ifeq 6
4: aload 3
aload 0
aload 1
iconst_1
invokestatic com.oracle.svm.core.snippets.KnownIntrinsics.farReturn:(Ljava/lang/Object;Lorg/graalvm/word/Pointer;Lorg/graalvm/nativeimage/c/function/CodePointer;Z)V
5: goto 7
6: StackMap locals: java.lang.Throwable
StackMap stack:
aload 3
aload 0
aload 1
iconst_0
invokestatic com.oracle.svm.core.snippets.KnownIntrinsics.farReturn:(Ljava/lang/Object;Lorg/graalvm/word/Pointer;Lorg/graalvm/nativeimage/c/function/CodePointer;Z)V
7: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 sp Lorg/graalvm/word/Pointer;
0 8 1 handlerIP Lorg/graalvm/nativeimage/c/function/CodePointer;
0 8 2 hasCalleeSavedRegisters Z
1 8 3 exception Ljava/lang/Throwable;
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Prevent deoptimization while dispatching to exception handler")
MethodParameters:
Name Flags
sp
handlerIP
hasCalleeSavedRegisters
private static void deoptTakeExceptionInterruptible(com.oracle.svm.core.deopt.DeoptimizedFrame);
descriptor: (Lcom/oracle/svm/core/deopt/DeoptimizedFrame;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual com.oracle.svm.core.deopt.DeoptimizedFrame.takeException:()V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 deoptFrame Lcom/oracle/svm/core/deopt/DeoptimizedFrame;
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Wrap call to interruptible code.", calleeMustBe = false)
MethodParameters:
Name Flags
deoptFrame
private static void lookupCodeInfoInterruptible(com.oracle.svm.core.code.CodeInfo, org.graalvm.nativeimage.c.function.CodePointer, com.oracle.svm.core.code.SimpleCodeInfoQueryResult);
descriptor: (Lcom/oracle/svm/core/code/CodeInfo;Lorg/graalvm/nativeimage/c/function/CodePointer;Lcom/oracle/svm/core/code/SimpleCodeInfoQueryResult;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 0
aload 1
invokestatic com.oracle.svm.core.code.CodeInfoAccess.relativeIP:(Lcom/oracle/svm/core/code/CodeInfo;Lorg/graalvm/nativeimage/c/function/CodePointer;)J
aload 2
invokestatic com.oracle.svm.core.code.CodeInfoAccess.lookupCodeInfo:(Lcom/oracle/svm/core/code/CodeInfo;JLcom/oracle/svm/core/code/SimpleCodeInfoQueryResult;)V
1: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 codeInfo Lcom/oracle/svm/core/code/CodeInfo;
0 2 1 ip Lorg/graalvm/nativeimage/c/function/CodePointer;
0 2 2 codeInfoQueryResult Lcom/oracle/svm/core/code/SimpleCodeInfoQueryResult;
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Wrap call to interruptible code.", calleeMustBe = false)
MethodParameters:
Name Flags
codeInfo
ip
codeInfoQueryResult
}
SourceFile: "ExceptionUnwind.java"
InnerClasses:
public final Access = com.oracle.svm.core.annotate.RestrictHeapAccess$Access of com.oracle.svm.core.annotate.RestrictHeapAccess
public SubstrateForeignCallDescriptor = com.oracle.svm.core.snippets.SnippetRuntime$SubstrateForeignCallDescriptor of com.oracle.svm.core.snippets.SnippetRuntime
public StatusSupport = com.oracle.svm.core.thread.VMThreads$StatusSupport of com.oracle.svm.core.thread.VMThreads