public class com.oracle.svm.core.heap.NoAllocationVerifier implements java.lang.AutoCloseable
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.svm.core.heap.NoAllocationVerifier
  super_class: java.lang.Object
{
  public static final java.lang.String ERROR_MSG;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "Attempt to allocate while allocation was explicitly disabled using a NoAllocationVerifier"

  private static final com.oracle.svm.core.threadlocal.FastThreadLocalObject<com.oracle.svm.core.heap.NoAllocationVerifier> openVerifiers;
    descriptor: Lcom/oracle/svm/core/threadlocal/FastThreadLocalObject;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Lcom/oracle/svm/core/threadlocal/FastThreadLocalObject<Lcom/oracle/svm/core/heap/NoAllocationVerifier;>;

  private java.lang.String reason;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private boolean isOpen;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private com.oracle.svm.core.heap.NoAllocationVerifier next;
    descriptor: Lcom/oracle/svm/core/heap/NoAllocationVerifier;
    flags: (0x0002) ACC_PRIVATE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 64
            ldc Lcom/oracle/svm/core/heap/NoAllocationVerifier;
            invokestatic com.oracle.svm.core.threadlocal.FastThreadLocalFactory.createObject:(Ljava/lang/Class;)Lcom/oracle/svm/core/threadlocal/FastThreadLocalObject;
            putstatic com.oracle.svm.core.heap.NoAllocationVerifier.openVerifiers:Lcom/oracle/svm/core/threadlocal/FastThreadLocalObject;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static void exit(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // java.lang.String callSite
        start local 1 // java.lang.String typeName
         0: .line 51
            invokestatic com.oracle.svm.core.log.Log.log:()Lcom/oracle/svm/core/log/Log;
            ldc "[NoAllocationVerifier detected disallowed allocation: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 0 /* callSite */
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            ldc ": "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 1 /* typeName */
            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
         1: .line 52
            getstatic com.oracle.svm.core.heap.NoAllocationVerifier.openVerifiers:Lcom/oracle/svm/core/threadlocal/FastThreadLocalObject;
            invokevirtual com.oracle.svm.core.threadlocal.FastThreadLocalObject.get:()Ljava/lang/Object;
            ifnull 9
         2: .line 53
            invokestatic com.oracle.svm.core.log.Log.log:()Lcom/oracle/svm/core/log/Log;
            ldc "[NoAllocationVerifier stack: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            pop
         3: .line 54
            getstatic com.oracle.svm.core.heap.NoAllocationVerifier.openVerifiers:Lcom/oracle/svm/core/threadlocal/FastThreadLocalObject;
            invokevirtual com.oracle.svm.core.threadlocal.FastThreadLocalObject.get:()Ljava/lang/Object;
            checkcast com.oracle.svm.core.heap.NoAllocationVerifier
            astore 2 /* rest */
        start local 2 // com.oracle.svm.core.heap.NoAllocationVerifier rest
         4: goto 7
         5: .line 55
      StackMap locals: com.oracle.svm.core.heap.NoAllocationVerifier
      StackMap stack:
            invokestatic com.oracle.svm.core.log.Log.log:()Lcom/oracle/svm/core/log/Log;
            invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
            ldc "  "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            ldc "  reason: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 2 /* rest */
            getfield com.oracle.svm.core.heap.NoAllocationVerifier.reason: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
         6: .line 54
            aload 2 /* rest */
            getfield com.oracle.svm.core.heap.NoAllocationVerifier.next:Lcom/oracle/svm/core/heap/NoAllocationVerifier;
            astore 2 /* rest */
      StackMap locals:
      StackMap stack:
         7: aload 2 /* rest */
            ifnonnull 5
        end local 2 // com.oracle.svm.core.heap.NoAllocationVerifier rest
         8: .line 57
            invokestatic com.oracle.svm.core.log.Log.log:()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
         9: .line 59
      StackMap locals:
      StackMap stack:
            invokestatic com.oracle.svm.core.log.Log.log:()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
        10: .line 61
            ldc "Attempt to allocate while allocation was explicitly disabled using a NoAllocationVerifier"
            invokestatic com.oracle.svm.core.util.VMError.shouldNotReachHere:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
        end local 1 // java.lang.String typeName
        end local 0 // java.lang.String callSite
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   11     0  callSite  Ljava/lang/String;
            0   11     1  typeName  Ljava/lang/String;
            4    8     2      rest  Lcom/oracle/svm/core/heap/NoAllocationVerifier;
    MethodParameters:
          Name  Flags
      callSite  final
      typeName  final

  public static com.oracle.svm.core.heap.NoAllocationVerifier factory(java.lang.String);
    descriptor: (Ljava/lang/String;)Lcom/oracle/svm/core/heap/NoAllocationVerifier;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String reason
         0: .line 78
            aload 0 /* reason */
            iconst_1
            invokestatic com.oracle.svm.core.heap.NoAllocationVerifier.factory:(Ljava/lang/String;Z)Lcom/oracle/svm/core/heap/NoAllocationVerifier;
            areturn
        end local 0 // java.lang.String reason
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  reason  Ljava/lang/String;
    MethodParameters:
        Name  Flags
      reason  

  public static com.oracle.svm.core.heap.NoAllocationVerifier factory(java.lang.String, boolean);
    descriptor: (Ljava/lang/String;Z)Lcom/oracle/svm/core/heap/NoAllocationVerifier;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // java.lang.String reason
        start local 1 // boolean open
         0: .line 95
            new com.oracle.svm.core.heap.NoAllocationVerifier
            dup
            aload 0 /* reason */
            invokespecial com.oracle.svm.core.heap.NoAllocationVerifier.<init>:(Ljava/lang/String;)V
            astore 2 /* result */
        start local 2 // com.oracle.svm.core.heap.NoAllocationVerifier result
         1: .line 96
            iload 1 /* open */
            ifeq 3
         2: .line 97
            aload 2 /* result */
            invokevirtual com.oracle.svm.core.heap.NoAllocationVerifier.open:()Lcom/oracle/svm/core/heap/NoAllocationVerifier;
            pop
         3: .line 99
      StackMap locals: com.oracle.svm.core.heap.NoAllocationVerifier
      StackMap stack:
            aload 2 /* result */
            areturn
        end local 2 // com.oracle.svm.core.heap.NoAllocationVerifier result
        end local 1 // boolean open
        end local 0 // java.lang.String reason
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0  reason  Ljava/lang/String;
            0    4     1    open  Z
            1    4     2  result  Lcom/oracle/svm/core/heap/NoAllocationVerifier;
    MethodParameters:
        Name  Flags
      reason  
      open    

  public static boolean isActive();
    descriptor: ()Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 108
            getstatic com.oracle.svm.core.heap.NoAllocationVerifier.openVerifiers:Lcom/oracle/svm/core/threadlocal/FastThreadLocalObject;
            invokevirtual com.oracle.svm.core.threadlocal.FastThreadLocalObject.get:()Ljava/lang/Object;
            ifnull 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 code.", mayBeInlined = true)

  protected void <init>(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.svm.core.heap.NoAllocationVerifier this
        start local 1 // java.lang.String reason
         0: .line 115
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 116
            aload 0 /* this */
            aload 1 /* reason */
            putfield com.oracle.svm.core.heap.NoAllocationVerifier.reason:Ljava/lang/String;
         2: .line 117
            aload 0 /* this */
            iconst_0
            putfield com.oracle.svm.core.heap.NoAllocationVerifier.isOpen:Z
         3: .line 118
            aload 0 /* this */
            aconst_null
            putfield com.oracle.svm.core.heap.NoAllocationVerifier.next:Lcom/oracle/svm/core/heap/NoAllocationVerifier;
         4: .line 119
            return
        end local 1 // java.lang.String reason
        end local 0 // com.oracle.svm.core.heap.NoAllocationVerifier this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Lcom/oracle/svm/core/heap/NoAllocationVerifier;
            0    5     1  reason  Ljava/lang/String;
    MethodParameters:
        Name  Flags
      reason  

  public com.oracle.svm.core.heap.NoAllocationVerifier open();
    descriptor: ()Lcom/oracle/svm/core/heap/NoAllocationVerifier;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.svm.core.heap.NoAllocationVerifier this
         0: .line 123
            aload 0 /* this */
            getfield com.oracle.svm.core.heap.NoAllocationVerifier.isOpen:Z
            ifeq 1
            iconst_0
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_1
      StackMap locals:
      StackMap stack: int
         2: ldc "NoAllocationVerifier already open"
            invokestatic com.oracle.svm.core.util.VMError.guarantee:(ZLjava/lang/String;)V
         3: .line 125
            invokestatic com.oracle.svm.core.heap.NoAllocationVerifier.isActive:()Z
            ifne 5
         4: .line 127
            invokestatic com.oracle.svm.core.heap.Heap.getHeap:()Lcom/oracle/svm/core/heap/Heap;
            invokevirtual com.oracle.svm.core.heap.Heap.suspendAllocation:()V
         5: .line 131
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield com.oracle.svm.core.heap.NoAllocationVerifier.isOpen:Z
         6: .line 132
            aload 0 /* this */
            getstatic com.oracle.svm.core.heap.NoAllocationVerifier.openVerifiers:Lcom/oracle/svm/core/threadlocal/FastThreadLocalObject;
            invokevirtual com.oracle.svm.core.threadlocal.FastThreadLocalObject.get:()Ljava/lang/Object;
            checkcast com.oracle.svm.core.heap.NoAllocationVerifier
            putfield com.oracle.svm.core.heap.NoAllocationVerifier.next:Lcom/oracle/svm/core/heap/NoAllocationVerifier;
         7: .line 133
            getstatic com.oracle.svm.core.heap.NoAllocationVerifier.openVerifiers:Lcom/oracle/svm/core/threadlocal/FastThreadLocalObject;
            aload 0 /* this */
            invokevirtual com.oracle.svm.core.threadlocal.FastThreadLocalObject.set:(Ljava/lang/Object;)V
         8: .line 135
            aload 0 /* this */
            areturn
        end local 0 // com.oracle.svm.core.heap.NoAllocationVerifier this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lcom/oracle/svm/core/heap/NoAllocationVerifier;
    RuntimeVisibleAnnotations: 
      com.oracle.svm.core.annotate.NeverInline(value = "Access of fields also used by allocation fast path, so must not be inlined in a method that performs allocation")

  public void close();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.svm.core.heap.NoAllocationVerifier this
         0: .line 141
            aload 0 /* this */
            getfield com.oracle.svm.core.heap.NoAllocationVerifier.isOpen:Z
            ldc "NoAllocationVerifier not open"
            invokestatic com.oracle.svm.core.util.VMError.guarantee:(ZLjava/lang/String;)V
         1: .line 143
            getstatic com.oracle.svm.core.heap.NoAllocationVerifier.openVerifiers:Lcom/oracle/svm/core/threadlocal/FastThreadLocalObject;
            aload 0 /* this */
            getfield com.oracle.svm.core.heap.NoAllocationVerifier.next:Lcom/oracle/svm/core/heap/NoAllocationVerifier;
            invokevirtual com.oracle.svm.core.threadlocal.FastThreadLocalObject.set:(Ljava/lang/Object;)V
         2: .line 144
            aload 0 /* this */
            aconst_null
            putfield com.oracle.svm.core.heap.NoAllocationVerifier.next:Lcom/oracle/svm/core/heap/NoAllocationVerifier;
         3: .line 145
            aload 0 /* this */
            iconst_0
            putfield com.oracle.svm.core.heap.NoAllocationVerifier.isOpen:Z
         4: .line 147
            invokestatic com.oracle.svm.core.heap.NoAllocationVerifier.isActive:()Z
            ifne 6
         5: .line 149
            invokestatic com.oracle.svm.core.heap.Heap.getHeap:()Lcom/oracle/svm/core/heap/Heap;
            invokevirtual com.oracle.svm.core.heap.Heap.resumeAllocation:()V
         6: .line 151
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.oracle.svm.core.heap.NoAllocationVerifier this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lcom/oracle/svm/core/heap/NoAllocationVerifier;
    RuntimeVisibleAnnotations: 
      com.oracle.svm.core.annotate.NeverInline(value = "Access of fields also used by allocation fast path, so must not be inlined in a method that performs allocation")
}
SourceFile: "NoAllocationVerifier.java"