final class com.oracle.svm.core.genscavenge.StackVerifier
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.oracle.svm.core.genscavenge.StackVerifier
  super_class: java.lang.Object
{
  private static final com.oracle.svm.core.genscavenge.StackVerifier$VerifyFrameReferencesVisitor verifyFrameReferencesVisitor;
    descriptor: Lcom/oracle/svm/core/genscavenge/StackVerifier$VerifyFrameReferencesVisitor;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private final com.oracle.svm.core.genscavenge.StackVerifier$StackFrameVerifierVisitor stackFrameVisitor;
    descriptor: Lcom/oracle/svm/core/genscavenge/StackVerifier$StackFrameVerifierVisitor;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 47
            new com.oracle.svm.core.genscavenge.StackVerifier$VerifyFrameReferencesVisitor
            dup
            invokespecial com.oracle.svm.core.genscavenge.StackVerifier$VerifyFrameReferencesVisitor.<init>:()V
            putstatic com.oracle.svm.core.genscavenge.StackVerifier.verifyFrameReferencesVisitor:Lcom/oracle/svm/core/genscavenge/StackVerifier$VerifyFrameReferencesVisitor;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.svm.core.genscavenge.StackVerifier this
         0: .line 51
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 49
            aload 0 /* this */
            new com.oracle.svm.core.genscavenge.StackVerifier$StackFrameVerifierVisitor
            dup
            invokespecial com.oracle.svm.core.genscavenge.StackVerifier$StackFrameVerifierVisitor.<init>:()V
            putfield com.oracle.svm.core.genscavenge.StackVerifier.stackFrameVisitor:Lcom/oracle/svm/core/genscavenge/StackVerifier$StackFrameVerifierVisitor;
         2: .line 52
            return
        end local 0 // com.oracle.svm.core.genscavenge.StackVerifier this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/svm/core/genscavenge/StackVerifier;

  public boolean verifyInAllThreads(org.graalvm.word.Pointer, java.lang.String);
    descriptor: (Lorg/graalvm/word/Pointer;Ljava/lang/String;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=3
        start local 0 // com.oracle.svm.core.genscavenge.StackVerifier this
        start local 1 // org.graalvm.word.Pointer currentSp
        start local 2 // java.lang.String message
         0: .line 55
            invokestatic com.oracle.svm.core.genscavenge.StackVerifier.getTraceLog:()Lcom/oracle/svm/core/log/Log;
            astore 3 /* trace */
        start local 3 // com.oracle.svm.core.log.Log trace
         1: .line 56
            aload 3 /* trace */
            ldc "[StackVerifier.verifyInAllThreads:"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 2 /* message */
            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: .line 58
            invokestatic com.oracle.svm.core.genscavenge.ThreadLocalAllocation.disableAndFlushForAllThreads:()V
         3: .line 59
            aload 3 /* trace */
            ldc "Current thread "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            invokestatic org.graalvm.nativeimage.CurrentIsolate.getCurrentThread:()Lorg/graalvm/nativeimage/IsolateThread;
            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;
            invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
            pop
         4: .line 60
            aload 1 /* currentSp */
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.StackVerifier.stackFrameVisitor:Lcom/oracle/svm/core/genscavenge/StackVerifier$StackFrameVerifierVisitor;
            invokestatic com.oracle.svm.core.stack.JavaStackWalker.walkCurrentThread:(Lorg/graalvm/word/Pointer;Lcom/oracle/svm/core/stack/StackFrameVisitor;)Z
            ifne 6
         5: .line 61
            iconst_0
            ireturn
         6: .line 63
      StackMap locals: com.oracle.svm.core.log.Log
      StackMap stack:
            aload 3 /* trace */
            ldc "]"
            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
         7: .line 64
            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 18
         8: .line 65
            invokestatic com.oracle.svm.core.thread.VMThreads.firstThread:()Lorg/graalvm/nativeimage/IsolateThread;
            astore 4 /* vmThread */
        start local 4 // org.graalvm.nativeimage.IsolateThread vmThread
         9: goto 17
        10: .line 66
      StackMap locals: org.graalvm.nativeimage.IsolateThread
      StackMap stack:
            aload 4 /* vmThread */
            invokestatic org.graalvm.nativeimage.CurrentIsolate.getCurrentThread:()Lorg/graalvm/nativeimage/IsolateThread;
            if_acmpne 12
        11: .line 67
            goto 16
        12: .line 69
      StackMap locals:
      StackMap stack:
            aload 3 /* trace */
            ldc "Thread "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 4 /* vmThread */
            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;
            invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
            pop
        13: .line 70
            aload 4 /* vmThread */
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.StackVerifier.stackFrameVisitor:Lcom/oracle/svm/core/genscavenge/StackVerifier$StackFrameVerifierVisitor;
            invokestatic com.oracle.svm.core.stack.JavaStackWalker.walkThread:(Lorg/graalvm/nativeimage/IsolateThread;Lcom/oracle/svm/core/stack/StackFrameVisitor;)Z
            ifne 15
        14: .line 71
            iconst_0
            ireturn
        15: .line 73
      StackMap locals:
      StackMap stack:
            aload 3 /* trace */
            ldc "]"
            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
        16: .line 65
      StackMap locals:
      StackMap stack:
            aload 4 /* vmThread */
            invokestatic com.oracle.svm.core.thread.VMThreads.nextThread:(Lorg/graalvm/nativeimage/IsolateThread;)Lorg/graalvm/nativeimage/IsolateThread;
            astore 4 /* vmThread */
      StackMap locals:
      StackMap stack:
        17: aload 4 /* vmThread */
            invokeinterface org.graalvm.nativeimage.IsolateThread.isNonNull:()Z
            ifne 10
        end local 4 // org.graalvm.nativeimage.IsolateThread vmThread
        18: .line 76
      StackMap locals:
      StackMap stack:
            aload 3 /* trace */
            ldc "]"
            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
        19: .line 77
            iconst_1
            ireturn
        end local 3 // com.oracle.svm.core.log.Log trace
        end local 2 // java.lang.String message
        end local 1 // org.graalvm.word.Pointer currentSp
        end local 0 // com.oracle.svm.core.genscavenge.StackVerifier this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   20     0       this  Lcom/oracle/svm/core/genscavenge/StackVerifier;
            0   20     1  currentSp  Lorg/graalvm/word/Pointer;
            0   20     2    message  Ljava/lang/String;
            1   20     3      trace  Lcom/oracle/svm/core/log/Log;
            9   18     4   vmThread  Lorg/graalvm/nativeimage/IsolateThread;
    MethodParameters:
           Name  Flags
      currentSp  
      message    

  private static boolean verifyFrame(org.graalvm.word.Pointer, org.graalvm.nativeimage.c.function.CodePointer, com.oracle.svm.core.code.CodeInfo, com.oracle.svm.core.deopt.DeoptimizedFrame);
    descriptor: (Lorg/graalvm/word/Pointer;Lorg/graalvm/nativeimage/c/function/CodePointer;Lcom/oracle/svm/core/code/CodeInfo;Lcom/oracle/svm/core/deopt/DeoptimizedFrame;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=4
        start local 0 // org.graalvm.word.Pointer frameSP
        start local 1 // org.graalvm.nativeimage.c.function.CodePointer frameIP
        start local 2 // com.oracle.svm.core.code.CodeInfo codeInfo
        start local 3 // com.oracle.svm.core.deopt.DeoptimizedFrame deoptimizedFrame
         0: .line 81
            invokestatic com.oracle.svm.core.genscavenge.StackVerifier.getTraceLog:()Lcom/oracle/svm/core/log/Log;
            astore 4 /* trace */
        start local 4 // com.oracle.svm.core.log.Log trace
         1: .line 82
            aload 4 /* trace */
            ldc "[StackVerifier.verifyFrame:"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            pop
         2: .line 83
            aload 4 /* trace */
            ldc "  frameSP: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 0 /* frameSP */
            invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
            pop
         3: .line 84
            aload 4 /* trace */
            ldc "  frameIP: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 1 /* frameIP */
            invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
            pop
         4: .line 85
            aload 4 /* trace */
            ldc "  pc: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 1 /* frameIP */
            invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
            pop
         5: .line 86
            aload 4 /* trace */
            invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
            pop
         6: .line 88
            aload 0 /* frameSP */
            aload 1 /* frameIP */
            aload 2 /* codeInfo */
            aload 3 /* deoptimizedFrame */
            getstatic com.oracle.svm.core.genscavenge.StackVerifier.verifyFrameReferencesVisitor:Lcom/oracle/svm/core/genscavenge/StackVerifier$VerifyFrameReferencesVisitor;
            invokestatic com.oracle.svm.core.code.CodeInfoTable.visitObjectReferences:(Lorg/graalvm/word/Pointer;Lorg/graalvm/nativeimage/c/function/CodePointer;Lcom/oracle/svm/core/code/CodeInfo;Lcom/oracle/svm/core/deopt/DeoptimizedFrame;Lcom/oracle/svm/core/heap/ObjectReferenceVisitor;)Z
            ifne 8
         7: .line 89
            iconst_0
            ireturn
         8: .line 92
      StackMap locals: com.oracle.svm.core.log.Log
      StackMap stack:
            aload 4 /* trace */
            ldc "  returns true]"
            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
         9: .line 93
            iconst_1
            ireturn
        end local 4 // com.oracle.svm.core.log.Log trace
        end local 3 // com.oracle.svm.core.deopt.DeoptimizedFrame deoptimizedFrame
        end local 2 // com.oracle.svm.core.code.CodeInfo codeInfo
        end local 1 // org.graalvm.nativeimage.c.function.CodePointer frameIP
        end local 0 // org.graalvm.word.Pointer frameSP
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   10     0           frameSP  Lorg/graalvm/word/Pointer;
            0   10     1           frameIP  Lorg/graalvm/nativeimage/c/function/CodePointer;
            0   10     2          codeInfo  Lcom/oracle/svm/core/code/CodeInfo;
            0   10     3  deoptimizedFrame  Lcom/oracle/svm/core/deopt/DeoptimizedFrame;
            1   10     4             trace  Lcom/oracle/svm/core/log/Log;
    MethodParameters:
                  Name  Flags
      frameSP           
      frameIP           
      codeInfo          
      deoptimizedFrame  

  private static com.oracle.svm.core.log.Log getTraceLog();
    descriptor: ()Lcom/oracle/svm/core/log/Log;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 137
            getstatic com.oracle.svm.core.genscavenge.HeapOptions.TraceStackVerification: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.log.Log.log:()Lcom/oracle/svm/core/log/Log;
            goto 2
      StackMap locals:
      StackMap stack:
         1: invokestatic com.oracle.svm.core.log.Log.noopLog:()Lcom/oracle/svm/core/log/Log;
      StackMap locals:
      StackMap stack: com.oracle.svm.core.log.Log
         2: areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "StackVerifier.java"
NestMembers:
  com.oracle.svm.core.genscavenge.StackVerifier$StackFrameVerifierVisitor  com.oracle.svm.core.genscavenge.StackVerifier$VerifyFrameReferencesVisitor
InnerClasses:
  private StackFrameVerifierVisitor = com.oracle.svm.core.genscavenge.StackVerifier$StackFrameVerifierVisitor of com.oracle.svm.core.genscavenge.StackVerifier
  private VerifyFrameReferencesVisitor = com.oracle.svm.core.genscavenge.StackVerifier$VerifyFrameReferencesVisitor of com.oracle.svm.core.genscavenge.StackVerifier