class com.oracle.svm.core.posix.PosixSubstrateSegfaultHandler extends com.oracle.svm.core.SubstrateSegfaultHandler
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: com.oracle.svm.core.posix.PosixSubstrateSegfaultHandler
super_class: com.oracle.svm.core.SubstrateSegfaultHandler
{
private static final org.graalvm.nativeimage.c.function.CEntryPointLiteral<com.oracle.svm.core.posix.headers.Signal$AdvancedSignalDispatcher> advancedSignalDispatcher;
descriptor: Lorg/graalvm/nativeimage/c/function/CEntryPointLiteral;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Lorg/graalvm/nativeimage/c/function/CEntryPointLiteral<Lcom/oracle/svm/core/posix/headers/Signal$AdvancedSignalDispatcher;>;
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=6, locals=0, args_size=0
0: ldc Lcom/oracle/svm/core/posix/PosixSubstrateSegfaultHandler;
1: ldc "dispatch"
iconst_3
anewarray java.lang.Class
dup
iconst_0
getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
aastore
dup
iconst_1
ldc Lcom/oracle/svm/core/posix/headers/Signal$siginfo_t;
aastore
dup
iconst_2
ldc Lcom/oracle/svm/core/posix/headers/Signal$ucontext_t;
aastore
2: invokestatic org.graalvm.nativeimage.c.function.CEntryPointLiteral.create:(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Lorg/graalvm/nativeimage/c/function/CEntryPointLiteral;
putstatic com.oracle.svm.core.posix.PosixSubstrateSegfaultHandler.advancedSignalDispatcher:Lorg/graalvm/nativeimage/c/function/CEntryPointLiteral;
3: 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 com.oracle.svm.core.SubstrateSegfaultHandler.<init>:()V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/svm/core/posix/PosixSubstrateSegfaultHandler;
private static void dispatch(int, com.oracle.svm.core.posix.headers.Signal$siginfo_t, com.oracle.svm.core.posix.headers.Signal$ucontext_t);
descriptor: (ILcom/oracle/svm/core/posix/headers/Signal$siginfo_t;Lcom/oracle/svm/core/posix/headers/Signal$ucontext_t;)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: invokestatic com.oracle.svm.core.os.MemoryProtectionKeyProvider.isAvailable:()Z
ifeq 2
1: invokestatic com.oracle.svm.core.os.MemoryProtectionKeyProvider.singleton:()Lcom/oracle/svm/core/os/MemoryProtectionKeyProvider;
aload 1
invokeinterface com.oracle.svm.core.os.MemoryProtectionKeyProvider.handleSegfault:(Lorg/graalvm/word/PointerBase;)V
2: StackMap locals:
StackMap stack:
invokestatic com.oracle.svm.core.SubstrateOptions.useLLVMBackend:()Z
ifeq 8
3: ldc Lcom/oracle/svm/core/graal/snippets/CEntryPointSnippets$IsolateCreationWatcher;
invokestatic org.graalvm.nativeimage.ImageSingletons.lookup:(Ljava/lang/Class;)Ljava/lang/Object;
checkcast com.oracle.svm.core.posix.PosixSubstrateSegfaultHandler$SingleIsolateSegfaultIsolateSetup
invokevirtual com.oracle.svm.core.posix.PosixSubstrateSegfaultHandler$SingleIsolateSegfaultIsolateSetup.getIsolate:()Lorg/graalvm/nativeimage/Isolate;
astore 3
start local 3 4: aload 3
invokeinterface org.graalvm.nativeimage.Isolate.rawValue:()J
ldc -1
lcmp
ifne 6
5: return
6: StackMap locals: org.graalvm.nativeimage.Isolate
StackMap stack:
aload 3
invokestatic com.oracle.svm.core.c.function.CEntryPointActions.enterIsolateFromCrashHandler:(Lorg/graalvm/nativeimage/Isolate;)I
pop
end local 3 7: goto 10
StackMap locals:
StackMap stack:
8: aload 2
invokestatic com.oracle.svm.core.posix.PosixSubstrateSegfaultHandler.tryEnterIsolate:(Lcom/oracle/svm/core/RegisterDumper$Context;)Z
ifne 10
9: return
10: StackMap locals:
StackMap stack:
invokestatic com.oracle.svm.core.os.MemoryProtectionKeyProvider.isAvailable:()Z
ifeq 12
11: invokestatic com.oracle.svm.core.os.MemoryProtectionKeyProvider.singleton:()Lcom/oracle/svm/core/os/MemoryProtectionKeyProvider;
aload 1
invokeinterface com.oracle.svm.core.os.MemoryProtectionKeyProvider.printSignalInfo:(Lorg/graalvm/word/PointerBase;)V
12: StackMap locals:
StackMap stack:
aload 2
invokestatic com.oracle.svm.core.posix.PosixSubstrateSegfaultHandler.dump:(Lcom/oracle/svm/core/RegisterDumper$Context;)V
13: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 signalNumber I
0 14 1 sigInfo Lcom/oracle/svm/core/posix/headers/Signal$siginfo_t;
0 14 2 uContext Lcom/oracle/svm/core/posix/headers/Signal$ucontext_t;
4 7 3 isolate Lorg/graalvm/nativeimage/Isolate;
RuntimeVisibleAnnotations:
org.graalvm.nativeimage.c.function.CEntryPoint()
com.oracle.svm.core.c.function.CEntryPointOptions(prologue = Lcom/oracle/svm/core/c/function/CEntryPointOptions$NoPrologue;, epilogue = Lcom/oracle/svm/core/c/function/CEntryPointOptions$NoEpilogue;, publishAs = com.oracle.svm.core.c.function.CEntryPointOptions$Publish.NotPublished:Lcom/oracle/svm/core/c/function/CEntryPointOptions$Publish;, include = Lcom/oracle/svm/core/c/function/CEntryPointOptions$NotIncludedAutomatically;)
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 in segfault signal handler.")
com.oracle.svm.core.annotate.Uninterruptible(reason = "Must be uninterruptible until it gets immune to safepoints")
MethodParameters:
Name Flags
signalNumber
sigInfo
uContext
protected void install();
descriptor: ()V
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=3, args_size=1
start local 0 0: ldc Lcom/oracle/svm/core/posix/headers/Signal$sigaction;
invokestatic org.graalvm.nativeimage.c.struct.SizeOf.get:(Ljava/lang/Class;)I
istore 1
start local 1 1: iload 1
invokestatic org.graalvm.nativeimage.StackValue.get:(I)Lorg/graalvm/word/PointerBase;
checkcast com.oracle.svm.core.posix.headers.Signal$sigaction
astore 2
start local 2 2: aload 2
iconst_0
invokestatic org.graalvm.word.WordFactory.signed:(I)Lorg/graalvm/word/SignedWord;
iload 1
invokestatic org.graalvm.word.WordFactory.unsigned:(I)Lorg/graalvm/word/UnsignedWord;
invokestatic com.oracle.svm.core.posix.headers.LibC.memset:(Lorg/graalvm/word/PointerBase;Lorg/graalvm/word/SignedWord;Lorg/graalvm/word/UnsignedWord;)Lorg/graalvm/word/PointerBase;
pop
3: aload 2
invokestatic com.oracle.svm.core.posix.headers.Signal.SA_SIGINFO:()I
invokeinterface com.oracle.svm.core.posix.headers.Signal$sigaction.sa_flags:(I)V
4: aload 2
getstatic com.oracle.svm.core.posix.PosixSubstrateSegfaultHandler.advancedSignalDispatcher:Lorg/graalvm/nativeimage/c/function/CEntryPointLiteral;
invokevirtual org.graalvm.nativeimage.c.function.CEntryPointLiteral.getFunctionPointer:()Lorg/graalvm/nativeimage/c/function/CFunctionPointer;
checkcast com.oracle.svm.core.posix.headers.Signal$AdvancedSignalDispatcher
invokeinterface com.oracle.svm.core.posix.headers.Signal$sigaction.sa_sigaction:(Lcom/oracle/svm/core/posix/headers/Signal$AdvancedSignalDispatcher;)V
5: getstatic com.oracle.svm.core.posix.headers.Signal$SignalEnum.SIGSEGV:Lcom/oracle/svm/core/posix/headers/Signal$SignalEnum;
aload 2
invokestatic org.graalvm.word.WordFactory.nullPointer:()Lorg/graalvm/word/PointerBase;
checkcast com.oracle.svm.core.posix.headers.Signal$sigaction
invokestatic com.oracle.svm.core.posix.headers.Signal.sigaction:(Lcom/oracle/svm/core/posix/headers/Signal$SignalEnum;Lcom/oracle/svm/core/posix/headers/Signal$sigaction;Lcom/oracle/svm/core/posix/headers/Signal$sigaction;)I
pop
6: getstatic com.oracle.svm.core.posix.headers.Signal$SignalEnum.SIGBUS:Lcom/oracle/svm/core/posix/headers/Signal$SignalEnum;
aload 2
invokestatic org.graalvm.word.WordFactory.nullPointer:()Lorg/graalvm/word/PointerBase;
checkcast com.oracle.svm.core.posix.headers.Signal$sigaction
invokestatic com.oracle.svm.core.posix.headers.Signal.sigaction:(Lcom/oracle/svm/core/posix/headers/Signal$SignalEnum;Lcom/oracle/svm/core/posix/headers/Signal$sigaction;Lcom/oracle/svm/core/posix/headers/Signal$sigaction;)I
pop
7: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lcom/oracle/svm/core/posix/PosixSubstrateSegfaultHandler;
1 8 1 structSigActionSize I
2 8 2 structSigAction Lcom/oracle/svm/core/posix/headers/Signal$sigaction;
}
SourceFile: "PosixSubstrateSegfaultHandler.java"
NestMembers:
com.oracle.svm.core.posix.PosixSubstrateSegfaultHandler$SingleIsolateSegfaultIsolateSetup
InnerClasses:
public abstract Context = com.oracle.svm.core.RegisterDumper$Context of com.oracle.svm.core.RegisterDumper
public final Access = com.oracle.svm.core.annotate.RestrictHeapAccess$Access of com.oracle.svm.core.annotate.RestrictHeapAccess
public final Publish = com.oracle.svm.core.c.function.CEntryPointOptions$Publish of com.oracle.svm.core.c.function.CEntryPointOptions
public abstract IsolateCreationWatcher = com.oracle.svm.core.graal.snippets.CEntryPointSnippets$IsolateCreationWatcher of com.oracle.svm.core.graal.snippets.CEntryPointSnippets
SingleIsolateSegfaultIsolateSetup = com.oracle.svm.core.posix.PosixSubstrateSegfaultHandler$SingleIsolateSegfaultIsolateSetup of com.oracle.svm.core.posix.PosixSubstrateSegfaultHandler
public abstract AdvancedSignalDispatcher = com.oracle.svm.core.posix.headers.Signal$AdvancedSignalDispatcher of com.oracle.svm.core.posix.headers.Signal
public final SignalEnum = com.oracle.svm.core.posix.headers.Signal$SignalEnum of com.oracle.svm.core.posix.headers.Signal
public abstract sigaction = com.oracle.svm.core.posix.headers.Signal$sigaction of com.oracle.svm.core.posix.headers.Signal
public abstract siginfo_t = com.oracle.svm.core.posix.headers.Signal$siginfo_t of com.oracle.svm.core.posix.headers.Signal
public abstract ucontext_t = com.oracle.svm.core.posix.headers.Signal$ucontext_t of com.oracle.svm.core.posix.headers.Signal