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: .line 102
            ldc Lcom/oracle/svm/core/posix/PosixSubstrateSegfaultHandler;
         1: .line 103
            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: .line 102
            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: .line 103
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.svm.core.posix.PosixSubstrateSegfaultHandler this
         0: .line 71
            aload 0 /* this */
            invokespecial com.oracle.svm.core.SubstrateSegfaultHandler.<init>:()V
            return
        end local 0 // com.oracle.svm.core.posix.PosixSubstrateSegfaultHandler this
      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 // int signalNumber
        start local 1 // com.oracle.svm.core.posix.headers.Signal$siginfo_t sigInfo
        start local 2 // com.oracle.svm.core.posix.headers.Signal$ucontext_t uContext
         0: .line 78
            invokestatic com.oracle.svm.core.os.MemoryProtectionKeyProvider.isAvailable:()Z
            ifeq 2
         1: .line 79
            invokestatic com.oracle.svm.core.os.MemoryProtectionKeyProvider.singleton:()Lcom/oracle/svm/core/os/MemoryProtectionKeyProvider;
            aload 1 /* sigInfo */
            invokeinterface com.oracle.svm.core.os.MemoryProtectionKeyProvider.handleSegfault:(Lorg/graalvm/word/PointerBase;)V
         2: .line 82
      StackMap locals:
      StackMap stack:
            invokestatic com.oracle.svm.core.SubstrateOptions.useLLVMBackend:()Z
            ifeq 8
         3: .line 83
            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 /* isolate */
        start local 3 // org.graalvm.nativeimage.Isolate isolate
         4: .line 84
            aload 3 /* isolate */
            invokeinterface org.graalvm.nativeimage.Isolate.rawValue:()J
            ldc -1
            lcmp
            ifne 6
         5: .line 86
            return
         6: .line 88
      StackMap locals: org.graalvm.nativeimage.Isolate
      StackMap stack:
            aload 3 /* isolate */
            invokestatic com.oracle.svm.core.c.function.CEntryPointActions.enterIsolateFromCrashHandler:(Lorg/graalvm/nativeimage/Isolate;)I
            pop
        end local 3 // org.graalvm.nativeimage.Isolate isolate
         7: .line 89
            goto 10
      StackMap locals:
      StackMap stack:
         8: aload 2 /* uContext */
            invokestatic com.oracle.svm.core.posix.PosixSubstrateSegfaultHandler.tryEnterIsolate:(Lcom/oracle/svm/core/RegisterDumper$Context;)Z
            ifne 10
         9: .line 91
            return
        10: .line 94
      StackMap locals:
      StackMap stack:
            invokestatic com.oracle.svm.core.os.MemoryProtectionKeyProvider.isAvailable:()Z
            ifeq 12
        11: .line 95
            invokestatic com.oracle.svm.core.os.MemoryProtectionKeyProvider.singleton:()Lcom/oracle/svm/core/os/MemoryProtectionKeyProvider;
            aload 1 /* sigInfo */
            invokeinterface com.oracle.svm.core.os.MemoryProtectionKeyProvider.printSignalInfo:(Lorg/graalvm/word/PointerBase;)V
        12: .line 98
      StackMap locals:
      StackMap stack:
            aload 2 /* uContext */
            invokestatic com.oracle.svm.core.posix.PosixSubstrateSegfaultHandler.dump:(Lcom/oracle/svm/core/RegisterDumper$Context;)V
        13: .line 99
            return
        end local 2 // com.oracle.svm.core.posix.headers.Signal$ucontext_t uContext
        end local 1 // com.oracle.svm.core.posix.headers.Signal$siginfo_t sigInfo
        end local 0 // int signalNumber
      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 // com.oracle.svm.core.posix.PosixSubstrateSegfaultHandler this
         0: .line 107
            ldc Lcom/oracle/svm/core/posix/headers/Signal$sigaction;
            invokestatic org.graalvm.nativeimage.c.struct.SizeOf.get:(Ljava/lang/Class;)I
            istore 1 /* structSigActionSize */
        start local 1 // int structSigActionSize
         1: .line 108
            iload 1 /* structSigActionSize */
            invokestatic org.graalvm.nativeimage.StackValue.get:(I)Lorg/graalvm/word/PointerBase;
            checkcast com.oracle.svm.core.posix.headers.Signal$sigaction
            astore 2 /* structSigAction */
        start local 2 // com.oracle.svm.core.posix.headers.Signal$sigaction structSigAction
         2: .line 109
            aload 2 /* structSigAction */
            iconst_0
            invokestatic org.graalvm.word.WordFactory.signed:(I)Lorg/graalvm/word/SignedWord;
            iload 1 /* structSigActionSize */
            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: .line 111
            aload 2 /* structSigAction */
            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: .line 112
            aload 2 /* structSigAction */
            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: .line 113
            getstatic com.oracle.svm.core.posix.headers.Signal$SignalEnum.SIGSEGV:Lcom/oracle/svm/core/posix/headers/Signal$SignalEnum;
            aload 2 /* structSigAction */
            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: .line 114
            getstatic com.oracle.svm.core.posix.headers.Signal$SignalEnum.SIGBUS:Lcom/oracle/svm/core/posix/headers/Signal$SignalEnum;
            aload 2 /* structSigAction */
            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: .line 115
            return
        end local 2 // com.oracle.svm.core.posix.headers.Signal$sigaction structSigAction
        end local 1 // int structSigActionSize
        end local 0 // com.oracle.svm.core.posix.PosixSubstrateSegfaultHandler this
      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