final class com.oracle.svm.core.genscavenge.HeapChunkProvider
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.oracle.svm.core.genscavenge.HeapChunkProvider
  super_class: java.lang.Object
{
  private final com.oracle.svm.core.jdk.UninterruptibleUtils$AtomicPointer<com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader> unusedAlignedChunks;
    descriptor: Lcom/oracle/svm/core/jdk/UninterruptibleUtils$AtomicPointer;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lcom/oracle/svm/core/jdk/UninterruptibleUtils$AtomicPointer<Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;>;

  private final com.oracle.svm.core.jdk.UninterruptibleUtils$AtomicUnsigned bytesInUnusedAlignedChunks;
    descriptor: Lcom/oracle/svm/core/jdk/UninterruptibleUtils$AtomicUnsigned;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private long firstAllocationTime;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

  private static final java.lang.OutOfMemoryError ALIGNED_OUT_OF_MEMORY_ERROR;
    descriptor: Ljava/lang/OutOfMemoryError;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.OutOfMemoryError UNALIGNED_OUT_OF_MEMORY_ERROR;
    descriptor: Ljava/lang/OutOfMemoryError;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 56
            ldc Lcom/oracle/svm/core/genscavenge/HeapChunkProvider;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic com.oracle.svm.core.genscavenge.HeapChunkProvider.$assertionsDisabled:Z
         3: .line 94
            new java.lang.OutOfMemoryError
            dup
            ldc "Could not allocate an aligned heap chunk"
            invokespecial java.lang.OutOfMemoryError.<init>:(Ljava/lang/String;)V
            putstatic com.oracle.svm.core.genscavenge.HeapChunkProvider.ALIGNED_OUT_OF_MEMORY_ERROR:Ljava/lang/OutOfMemoryError;
         4: .line 96
            new java.lang.OutOfMemoryError
            dup
            ldc "Could not allocate an unaligned heap chunk"
            invokespecial java.lang.OutOfMemoryError.<init>:(Ljava/lang/String;)V
            putstatic com.oracle.svm.core.genscavenge.HeapChunkProvider.UNALIGNED_OUT_OF_MEMORY_ERROR:Ljava/lang/OutOfMemoryError;
            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.HeapChunkProvider this
         0: .line 81
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 61
            aload 0 /* this */
            new com.oracle.svm.core.jdk.UninterruptibleUtils$AtomicPointer
            dup
            invokespecial com.oracle.svm.core.jdk.UninterruptibleUtils$AtomicPointer.<init>:()V
            putfield com.oracle.svm.core.genscavenge.HeapChunkProvider.unusedAlignedChunks:Lcom/oracle/svm/core/jdk/UninterruptibleUtils$AtomicPointer;
         2: .line 70
            aload 0 /* this */
            new com.oracle.svm.core.jdk.UninterruptibleUtils$AtomicUnsigned
            dup
            invokespecial com.oracle.svm.core.jdk.UninterruptibleUtils$AtomicUnsigned.<init>:()V
            putfield com.oracle.svm.core.genscavenge.HeapChunkProvider.bytesInUnusedAlignedChunks:Lcom/oracle/svm/core/jdk/UninterruptibleUtils$AtomicUnsigned;
         3: .line 82
            return
        end local 0 // com.oracle.svm.core.genscavenge.HeapChunkProvider this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/oracle/svm/core/genscavenge/HeapChunkProvider;
    RuntimeVisibleAnnotations: 
      org.graalvm.nativeimage.Platforms(value = {Lorg/graalvm/nativeimage/Platform$HOSTED_ONLY;})

  public org.graalvm.word.UnsignedWord getBytesInUnusedChunks();
    descriptor: ()Lorg/graalvm/word/UnsignedWord;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.svm.core.genscavenge.HeapChunkProvider this
         0: .line 86
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.HeapChunkProvider.bytesInUnusedAlignedChunks:Lcom/oracle/svm/core/jdk/UninterruptibleUtils$AtomicUnsigned;
            invokevirtual com.oracle.svm.core.jdk.UninterruptibleUtils$AtomicUnsigned.get:()Lorg/graalvm/word/WordBase;
            checkcast org.graalvm.word.UnsignedWord
            areturn
        end local 0 // com.oracle.svm.core.genscavenge.HeapChunkProvider this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/svm/core/genscavenge/HeapChunkProvider;
    RuntimeVisibleAnnotations: 
      com.oracle.svm.core.annotate.Uninterruptible(reason = "Called from uninterruptible code.", mayBeInlined = true)

  private static com.oracle.svm.core.log.Log log();
    descriptor: ()Lcom/oracle/svm/core/log/Log;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 91
            invokestatic com.oracle.svm.core.log.Log.noopLog:()Lcom/oracle/svm/core/log/Log;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    RuntimeVisibleAnnotations: 
      com.oracle.svm.core.annotate.AlwaysInline(value = "Remove all logging when noopLog is returned by this method")

  com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader produceAlignedChunk();
    descriptor: ()Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
    flags: (0x0000) 
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // com.oracle.svm.core.genscavenge.HeapChunkProvider this
         0: .line 100
            invokestatic com.oracle.svm.core.genscavenge.HeapPolicy.getAlignedHeapChunkSize:()Lorg/graalvm/word/UnsignedWord;
            astore 1 /* chunkSize */
        start local 1 // org.graalvm.word.UnsignedWord chunkSize
         1: .line 101
            invokestatic com.oracle.svm.core.genscavenge.HeapChunkProvider.log:()Lcom/oracle/svm/core/log/Log;
            ldc "[HeapChunkProvider.produceAlignedChunk  chunk size: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 1 /* chunkSize */
            invokevirtual com.oracle.svm.core.log.Log.unsigned:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
            invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
            pop
         2: .line 103
            aload 0 /* this */
            invokevirtual com.oracle.svm.core.genscavenge.HeapChunkProvider.popUnusedAlignedChunk:()Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
            astore 2 /* result */
        start local 2 // com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader result
         3: .line 104
            invokestatic com.oracle.svm.core.genscavenge.HeapChunkProvider.log:()Lcom/oracle/svm/core/log/Log;
            ldc "  unused chunk: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 2 /* result */
            invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
            invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
            pop
         4: .line 106
            aload 2 /* result */
            invokeinterface com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader.isNull:()Z
            ifeq 12
         5: .line 108
            aload 0 /* this */
            invokevirtual com.oracle.svm.core.genscavenge.HeapChunkProvider.noteFirstAllocationTime:()V
         6: .line 109
            invokestatic com.oracle.svm.core.os.CommittedMemoryProvider.get:()Lcom/oracle/svm/core/os/CommittedMemoryProvider;
            aload 1 /* chunkSize */
            invokestatic com.oracle.svm.core.genscavenge.HeapPolicy.getAlignedHeapChunkAlignment:()Lorg/graalvm/word/UnsignedWord;
            iconst_0
            invokeinterface com.oracle.svm.core.os.CommittedMemoryProvider.allocate:(Lorg/graalvm/word/UnsignedWord;Lorg/graalvm/word/UnsignedWord;Z)Lorg/graalvm/word/Pointer;
            checkcast com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader
            astore 2 /* result */
         7: .line 110
            aload 2 /* result */
            invokeinterface com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader.isNull:()Z
            ifeq 9
         8: .line 111
            getstatic com.oracle.svm.core.genscavenge.HeapChunkProvider.ALIGNED_OUT_OF_MEMORY_ERROR:Ljava/lang/OutOfMemoryError;
            athrow
         9: .line 113
      StackMap locals: org.graalvm.word.UnsignedWord com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader
      StackMap stack:
            invokestatic com.oracle.svm.core.genscavenge.HeapChunkProvider.log:()Lcom/oracle/svm/core/log/Log;
            ldc "  new chunk: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 2 /* result */
            invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
            invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
            pop
        10: .line 115
            aload 2 /* result */
            aload 1 /* chunkSize */
            invokestatic com.oracle.svm.core.genscavenge.HeapChunkProvider.initializeChunk:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;Lorg/graalvm/word/UnsignedWord;)V
        11: .line 116
            aload 2 /* result */
            invokestatic com.oracle.svm.core.genscavenge.HeapChunkProvider.resetAlignedHeapChunk:(Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;)V
        12: .line 118
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.svm.core.genscavenge.HeapChunkProvider.$assertionsDisabled:Z
            ifne 13
            aload 2 /* result */
            invokestatic com.oracle.svm.core.genscavenge.HeapChunk.getTopOffset:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lorg/graalvm/word/UnsignedWord;
            invokestatic com.oracle.svm.core.genscavenge.AlignedHeapChunk.getObjectsStartOffset:()Lorg/graalvm/word/UnsignedWord;
            invokeinterface org.graalvm.word.UnsignedWord.equal:(Lorg/graalvm/word/UnsignedWord;)Z
            ifne 13
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        13: .line 119
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.svm.core.genscavenge.HeapChunkProvider.$assertionsDisabled:Z
            ifne 14
            aload 2 /* result */
            invokestatic com.oracle.svm.core.genscavenge.HeapChunk.getEndOffset:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lorg/graalvm/word/UnsignedWord;
            aload 1 /* chunkSize */
            invokeinterface org.graalvm.word.UnsignedWord.equal:(Lorg/graalvm/word/UnsignedWord;)Z
            ifne 14
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        14: .line 121
      StackMap locals:
      StackMap stack:
            invokestatic com.oracle.svm.core.genscavenge.HeapPolicy.getZapProducedHeapChunks:()Z
            ifeq 16
        15: .line 122
            aload 2 /* result */
            invokestatic com.oracle.svm.core.genscavenge.HeapPolicy.getProducedHeapChunkZapWord:()Lorg/graalvm/compiler/word/Word;
            invokestatic com.oracle.svm.core.genscavenge.HeapChunkProvider.zap:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;Lorg/graalvm/word/WordBase;)V
        16: .line 125
      StackMap locals:
      StackMap stack:
            aload 1 /* chunkSize */
            invokestatic com.oracle.svm.core.genscavenge.HeapPolicy.increaseEdenUsedBytes:(Lorg/graalvm/word/UnsignedWord;)V
        17: .line 127
            invokestatic com.oracle.svm.core.genscavenge.HeapChunkProvider.log:()Lcom/oracle/svm/core/log/Log;
            ldc "  result chunk: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 2 /* result */
            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
        18: .line 128
            aload 2 /* result */
            areturn
        end local 2 // com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader result
        end local 1 // org.graalvm.word.UnsignedWord chunkSize
        end local 0 // com.oracle.svm.core.genscavenge.HeapChunkProvider this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   19     0       this  Lcom/oracle/svm/core/genscavenge/HeapChunkProvider;
            1   19     1  chunkSize  Lorg/graalvm/word/UnsignedWord;
            3   19     2     result  Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;

  void consumeAlignedChunks(com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader);
    descriptor: (Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=7, args_size=2
        start local 0 // com.oracle.svm.core.genscavenge.HeapChunkProvider this
        start local 1 // com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader firstChunk
         0: .line 136
            getstatic com.oracle.svm.core.genscavenge.HeapChunkProvider.$assertionsDisabled:Z
            ifne 1
            aload 1 /* firstChunk */
            invokestatic com.oracle.svm.core.genscavenge.HeapChunk.getPrevious:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;
            checkcast com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader
            invokeinterface com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader.isNull:()Z
            ifne 1
            new java.lang.AssertionError
            dup
            ldc "prev must be null"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         1: .line 137
      StackMap locals:
      StackMap stack:
            aload 1 /* firstChunk */
            astore 2 /* cur */
        start local 2 // com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader cur
         2: .line 139
            invokestatic com.oracle.svm.core.genscavenge.HeapPolicy.getMinimumHeapSize:()Lorg/graalvm/word/UnsignedWord;
            astore 3 /* minimumHeapSize */
        start local 3 // org.graalvm.word.UnsignedWord minimumHeapSize
         3: .line 140
            invokestatic com.oracle.svm.core.genscavenge.GCImpl.getChunkBytes:()Lorg/graalvm/word/UnsignedWord;
            aload 0 /* this */
            invokevirtual com.oracle.svm.core.genscavenge.HeapChunkProvider.getBytesInUnusedChunks:()Lorg/graalvm/word/UnsignedWord;
            invokeinterface org.graalvm.word.UnsignedWord.add:(Lorg/graalvm/word/UnsignedWord;)Lorg/graalvm/word/UnsignedWord;
            astore 4 /* committedBytesAfterGC */
        start local 4 // org.graalvm.word.UnsignedWord committedBytesAfterGC
         4: .line 141
            aload 3 /* minimumHeapSize */
            aload 4 /* committedBytesAfterGC */
            invokeinterface org.graalvm.word.UnsignedWord.aboveThan:(Lorg/graalvm/word/UnsignedWord;)Z
            ifeq 13
         5: .line 142
            aload 3 /* minimumHeapSize */
            aload 4 /* committedBytesAfterGC */
            invokeinterface org.graalvm.word.UnsignedWord.subtract:(Lorg/graalvm/word/UnsignedWord;)Lorg/graalvm/word/UnsignedWord;
            invokestatic com.oracle.svm.core.genscavenge.HeapPolicy.getAlignedHeapChunkSize:()Lorg/graalvm/word/UnsignedWord;
            invokeinterface org.graalvm.word.UnsignedWord.unsignedDivide:(Lorg/graalvm/word/UnsignedWord;)Lorg/graalvm/word/UnsignedWord;
            astore 5 /* chunksToKeep */
        start local 5 // org.graalvm.word.UnsignedWord chunksToKeep
         6: .line 143
            goto 12
         7: .line 144
      StackMap locals: com.oracle.svm.core.genscavenge.HeapChunkProvider com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader org.graalvm.word.UnsignedWord org.graalvm.word.UnsignedWord org.graalvm.word.UnsignedWord
      StackMap stack:
            aload 2 /* cur */
            invokestatic com.oracle.svm.core.genscavenge.HeapChunk.getNext:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;
            checkcast com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader
            astore 6 /* next */
        start local 6 // com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader next
         8: .line 145
            aload 2 /* cur */
            invokestatic com.oracle.svm.core.genscavenge.HeapChunkProvider.cleanAlignedChunk:(Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;)V
         9: .line 146
            aload 0 /* this */
            aload 2 /* cur */
            invokevirtual com.oracle.svm.core.genscavenge.HeapChunkProvider.pushUnusedAlignedChunk:(Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;)V
        10: .line 147
            aload 5 /* chunksToKeep */
            iconst_1
            invokeinterface org.graalvm.word.UnsignedWord.subtract:(I)Lorg/graalvm/word/UnsignedWord;
            astore 5 /* chunksToKeep */
        11: .line 148
            aload 6 /* next */
            astore 2 /* cur */
        end local 6 // com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader next
        12: .line 143
      StackMap locals:
      StackMap stack:
            aload 2 /* cur */
            invokeinterface com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader.isNonNull:()Z
            ifeq 13
            aload 5 /* chunksToKeep */
            iconst_0
            invokeinterface org.graalvm.word.UnsignedWord.aboveThan:(I)Z
            ifne 7
        end local 5 // org.graalvm.word.UnsignedWord chunksToKeep
        13: .line 152
      StackMap locals:
      StackMap stack:
            aload 2 /* cur */
            invokestatic com.oracle.svm.core.genscavenge.HeapChunkProvider.freeAlignedChunkList:(Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;)V
        14: .line 153
            return
        end local 4 // org.graalvm.word.UnsignedWord committedBytesAfterGC
        end local 3 // org.graalvm.word.UnsignedWord minimumHeapSize
        end local 2 // com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader cur
        end local 1 // com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader firstChunk
        end local 0 // com.oracle.svm.core.genscavenge.HeapChunkProvider this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0   15     0                   this  Lcom/oracle/svm/core/genscavenge/HeapChunkProvider;
            0   15     1             firstChunk  Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
            2   15     2                    cur  Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
            3   15     3        minimumHeapSize  Lorg/graalvm/word/UnsignedWord;
            4   15     4  committedBytesAfterGC  Lorg/graalvm/word/UnsignedWord;
            6   13     5           chunksToKeep  Lorg/graalvm/word/UnsignedWord;
            8   12     6                   next  Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
    MethodParameters:
            Name  Flags
      firstChunk  

  private static void cleanAlignedChunk(com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader);
    descriptor: (Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader alignedChunk
         0: .line 156
            aload 0 /* alignedChunk */
            invokestatic com.oracle.svm.core.genscavenge.HeapChunkProvider.resetAlignedHeapChunk:(Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;)V
         1: .line 157
            invokestatic com.oracle.svm.core.genscavenge.HeapPolicy.getZapConsumedHeapChunks:()Z
            ifeq 3
         2: .line 158
            aload 0 /* alignedChunk */
            invokestatic com.oracle.svm.core.genscavenge.HeapPolicy.getConsumedHeapChunkZapWord:()Lorg/graalvm/compiler/word/Word;
            invokestatic com.oracle.svm.core.genscavenge.HeapChunkProvider.zap:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;Lorg/graalvm/word/WordBase;)V
         3: .line 160
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader alignedChunk
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    4     0  alignedChunk  Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
    MethodParameters:
              Name  Flags
      alignedChunk  

  private void pushUnusedAlignedChunk(com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader);
    descriptor: (Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.svm.core.genscavenge.HeapChunkProvider this
        start local 1 // com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader chunk
         0: .line 175
            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 2
         1: .line 176
            ldc "Should hold the lock when pushing to the global list."
            invokestatic com.oracle.svm.core.thread.VMThreads.guaranteeOwnsThreadMutex:(Ljava/lang/String;)V
         2: .line 178
      StackMap locals:
      StackMap stack:
            invokestatic com.oracle.svm.core.genscavenge.HeapChunkProvider.log:()Lcom/oracle/svm/core/log/Log;
            ldc "  old list top: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.HeapChunkProvider.unusedAlignedChunks:Lcom/oracle/svm/core/jdk/UninterruptibleUtils$AtomicPointer;
            invokevirtual com.oracle.svm.core.jdk.UninterruptibleUtils$AtomicPointer.get:()Lorg/graalvm/word/PointerBase;
            invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
            ldc "  list bytes "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.HeapChunkProvider.bytesInUnusedAlignedChunks:Lcom/oracle/svm/core/jdk/UninterruptibleUtils$AtomicUnsigned;
            invokevirtual com.oracle.svm.core.jdk.UninterruptibleUtils$AtomicUnsigned.get:()Lorg/graalvm/word/WordBase;
            invokevirtual com.oracle.svm.core.log.Log.signed:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
            invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
            pop
         3: .line 180
            aload 1 /* chunk */
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.HeapChunkProvider.unusedAlignedChunks:Lcom/oracle/svm/core/jdk/UninterruptibleUtils$AtomicPointer;
            invokevirtual com.oracle.svm.core.jdk.UninterruptibleUtils$AtomicPointer.get:()Lorg/graalvm/word/PointerBase;
            checkcast com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader
            invokestatic com.oracle.svm.core.genscavenge.HeapChunk.setNext:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)V
         4: .line 181
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.HeapChunkProvider.unusedAlignedChunks:Lcom/oracle/svm/core/jdk/UninterruptibleUtils$AtomicPointer;
            aload 1 /* chunk */
            invokevirtual com.oracle.svm.core.jdk.UninterruptibleUtils$AtomicPointer.set:(Lorg/graalvm/word/PointerBase;)V
         5: .line 182
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.HeapChunkProvider.bytesInUnusedAlignedChunks:Lcom/oracle/svm/core/jdk/UninterruptibleUtils$AtomicUnsigned;
            invokestatic com.oracle.svm.core.genscavenge.HeapPolicy.getAlignedHeapChunkSize:()Lorg/graalvm/word/UnsignedWord;
            invokevirtual com.oracle.svm.core.jdk.UninterruptibleUtils$AtomicUnsigned.addAndGet:(Lorg/graalvm/word/UnsignedWord;)Lorg/graalvm/word/UnsignedWord;
            pop
         6: .line 184
            invokestatic com.oracle.svm.core.genscavenge.HeapChunkProvider.log:()Lcom/oracle/svm/core/log/Log;
            ldc "  new list top: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.HeapChunkProvider.unusedAlignedChunks:Lcom/oracle/svm/core/jdk/UninterruptibleUtils$AtomicPointer;
            invokevirtual com.oracle.svm.core.jdk.UninterruptibleUtils$AtomicPointer.get:()Lorg/graalvm/word/PointerBase;
            invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
            ldc "  list bytes "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.HeapChunkProvider.bytesInUnusedAlignedChunks:Lcom/oracle/svm/core/jdk/UninterruptibleUtils$AtomicUnsigned;
            invokevirtual com.oracle.svm.core.jdk.UninterruptibleUtils$AtomicUnsigned.get:()Lorg/graalvm/word/WordBase;
            invokevirtual com.oracle.svm.core.log.Log.signed:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
            invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
            pop
         7: .line 185
            return
        end local 1 // com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader chunk
        end local 0 // com.oracle.svm.core.genscavenge.HeapChunkProvider this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    8     0   this  Lcom/oracle/svm/core/genscavenge/HeapChunkProvider;
            0    8     1  chunk  Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
    MethodParameters:
       Name  Flags
      chunk  

  private com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader popUnusedAlignedChunk();
    descriptor: ()Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.oracle.svm.core.genscavenge.HeapChunkProvider this
         0: .line 197
            invokestatic com.oracle.svm.core.genscavenge.HeapChunkProvider.log:()Lcom/oracle/svm/core/log/Log;
            ldc "  old list top: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.HeapChunkProvider.unusedAlignedChunks:Lcom/oracle/svm/core/jdk/UninterruptibleUtils$AtomicPointer;
            invokevirtual com.oracle.svm.core.jdk.UninterruptibleUtils$AtomicPointer.get:()Lorg/graalvm/word/PointerBase;
            invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
            ldc "  list bytes "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.HeapChunkProvider.bytesInUnusedAlignedChunks:Lcom/oracle/svm/core/jdk/UninterruptibleUtils$AtomicUnsigned;
            invokevirtual com.oracle.svm.core.jdk.UninterruptibleUtils$AtomicUnsigned.get:()Lorg/graalvm/word/WordBase;
            invokevirtual com.oracle.svm.core.log.Log.signed:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
            invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
            pop
         1: .line 199
            aload 0 /* this */
            invokevirtual com.oracle.svm.core.genscavenge.HeapChunkProvider.popUnusedAlignedChunkUninterruptibly:()Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
            astore 1 /* result */
        start local 1 // com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader result
         2: .line 200
            aload 1 /* result */
            invokeinterface com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader.isNull:()Z
            ifeq 4
         3: .line 201
            invokestatic org.graalvm.word.WordFactory.nullPointer:()Lorg/graalvm/word/PointerBase;
            checkcast com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader
            areturn
         4: .line 203
      StackMap locals: com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.HeapChunkProvider.bytesInUnusedAlignedChunks:Lcom/oracle/svm/core/jdk/UninterruptibleUtils$AtomicUnsigned;
            invokestatic com.oracle.svm.core.genscavenge.HeapPolicy.getAlignedHeapChunkSize:()Lorg/graalvm/word/UnsignedWord;
            invokevirtual com.oracle.svm.core.jdk.UninterruptibleUtils$AtomicUnsigned.subtractAndGet:(Lorg/graalvm/word/UnsignedWord;)Lorg/graalvm/word/UnsignedWord;
            pop
         5: .line 204
            invokestatic com.oracle.svm.core.genscavenge.HeapChunkProvider.log:()Lcom/oracle/svm/core/log/Log;
            ldc "  new list top: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.HeapChunkProvider.unusedAlignedChunks:Lcom/oracle/svm/core/jdk/UninterruptibleUtils$AtomicPointer;
            invokevirtual com.oracle.svm.core.jdk.UninterruptibleUtils$AtomicPointer.get:()Lorg/graalvm/word/PointerBase;
            invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
            ldc "  list bytes "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.HeapChunkProvider.bytesInUnusedAlignedChunks:Lcom/oracle/svm/core/jdk/UninterruptibleUtils$AtomicUnsigned;
            invokevirtual com.oracle.svm.core.jdk.UninterruptibleUtils$AtomicUnsigned.get:()Lorg/graalvm/word/WordBase;
            invokevirtual com.oracle.svm.core.log.Log.signed:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
            invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
            pop
         6: .line 205
            aload 1 /* result */
            areturn
        end local 1 // com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader result
        end local 0 // com.oracle.svm.core.genscavenge.HeapChunkProvider this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0    this  Lcom/oracle/svm/core/genscavenge/HeapChunkProvider;
            2    7     1  result  Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;

  private com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader popUnusedAlignedChunkUninterruptibly();
    descriptor: ()Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // com.oracle.svm.core.genscavenge.HeapChunkProvider this
         0: .line 212
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.HeapChunkProvider.unusedAlignedChunks:Lcom/oracle/svm/core/jdk/UninterruptibleUtils$AtomicPointer;
            invokevirtual com.oracle.svm.core.jdk.UninterruptibleUtils$AtomicPointer.get:()Lorg/graalvm/word/PointerBase;
            checkcast com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader
            astore 1 /* result */
        start local 1 // com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader result
         1: .line 213
            aload 1 /* result */
            invokeinterface com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader.isNull:()Z
            ifeq 3
         2: .line 214
            invokestatic org.graalvm.word.WordFactory.nullPointer:()Lorg/graalvm/word/PointerBase;
            checkcast com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader
            areturn
         3: .line 216
      StackMap locals: com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader
      StackMap stack:
            aload 1 /* result */
            invokestatic com.oracle.svm.core.genscavenge.HeapChunk.getNext:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;
            checkcast com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader
            astore 2 /* next */
        start local 2 // com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader next
         4: .line 217
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.HeapChunkProvider.unusedAlignedChunks:Lcom/oracle/svm/core/jdk/UninterruptibleUtils$AtomicPointer;
            aload 1 /* result */
            aload 2 /* next */
            invokevirtual com.oracle.svm.core.jdk.UninterruptibleUtils$AtomicPointer.compareAndSet:(Lorg/graalvm/word/PointerBase;Lorg/graalvm/word/PointerBase;)Z
            ifeq 0
         5: .line 218
            aload 1 /* result */
            invokestatic org.graalvm.word.WordFactory.nullPointer:()Lorg/graalvm/word/PointerBase;
            checkcast com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader
            invokestatic com.oracle.svm.core.genscavenge.HeapChunk.setNext:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)V
         6: .line 219
            aload 1 /* result */
            areturn
        end local 2 // com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader next
        end local 1 // com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader result
        end local 0 // com.oracle.svm.core.genscavenge.HeapChunkProvider this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0    this  Lcom/oracle/svm/core/genscavenge/HeapChunkProvider;
            1    7     1  result  Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
            4    7     2    next  Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
    RuntimeVisibleAnnotations: 
      com.oracle.svm.core.annotate.Uninterruptible(reason = "Must not be interrupted by competing pushes.")

  com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader produceUnalignedChunk(org.graalvm.word.UnsignedWord);
    descriptor: (Lorg/graalvm/word/UnsignedWord;)Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;
    flags: (0x0000) 
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // com.oracle.svm.core.genscavenge.HeapChunkProvider this
        start local 1 // org.graalvm.word.UnsignedWord objectSize
         0: .line 227
            aload 1 /* objectSize */
            invokestatic com.oracle.svm.core.genscavenge.UnalignedHeapChunk.getChunkSizeForObject:(Lorg/graalvm/word/UnsignedWord;)Lorg/graalvm/word/UnsignedWord;
            astore 2 /* chunkSize */
        start local 2 // org.graalvm.word.UnsignedWord chunkSize
         1: .line 228
            invokestatic com.oracle.svm.core.genscavenge.HeapChunkProvider.log:()Lcom/oracle/svm/core/log/Log;
            ldc "[HeapChunkProvider.produceUnalignedChunk  objectSize: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 1 /* objectSize */
            invokevirtual com.oracle.svm.core.log.Log.unsigned:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
            ldc "  chunkSize: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 2 /* chunkSize */
            invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
            invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
            pop
         2: .line 230
            aload 0 /* this */
            invokevirtual com.oracle.svm.core.genscavenge.HeapChunkProvider.noteFirstAllocationTime:()V
         3: .line 231
            invokestatic com.oracle.svm.core.os.CommittedMemoryProvider.get:()Lcom/oracle/svm/core/os/CommittedMemoryProvider;
            aload 2 /* chunkSize */
            getstatic com.oracle.svm.core.os.CommittedMemoryProvider.UNALIGNED:Lorg/graalvm/word/UnsignedWord;
            iconst_0
            invokeinterface com.oracle.svm.core.os.CommittedMemoryProvider.allocate:(Lorg/graalvm/word/UnsignedWord;Lorg/graalvm/word/UnsignedWord;Z)Lorg/graalvm/word/Pointer;
            checkcast com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader
            astore 3 /* result */
        start local 3 // com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader result
         4: .line 232
            aload 3 /* result */
            invokeinterface com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader.isNull:()Z
            ifeq 6
         5: .line 233
            getstatic com.oracle.svm.core.genscavenge.HeapChunkProvider.UNALIGNED_OUT_OF_MEMORY_ERROR:Ljava/lang/OutOfMemoryError;
            athrow
         6: .line 236
      StackMap locals: org.graalvm.word.UnsignedWord com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader
      StackMap stack:
            aload 3 /* result */
            aload 2 /* chunkSize */
            invokestatic com.oracle.svm.core.genscavenge.HeapChunkProvider.initializeChunk:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;Lorg/graalvm/word/UnsignedWord;)V
         7: .line 237
            aload 3 /* result */
            invokestatic com.oracle.svm.core.genscavenge.HeapChunkProvider.resetUnalignedChunk:(Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;)V
         8: .line 238
            getstatic com.oracle.svm.core.genscavenge.HeapChunkProvider.$assertionsDisabled:Z
            ifne 9
            aload 1 /* objectSize */
            aload 3 /* result */
            invokestatic com.oracle.svm.core.genscavenge.HeapChunk.availableObjectMemory:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lorg/graalvm/word/UnsignedWord;
            invokeinterface org.graalvm.word.UnsignedWord.belowOrEqual:(Lorg/graalvm/word/UnsignedWord;)Z
            ifne 9
            new java.lang.AssertionError
            dup
            ldc "UnalignedHeapChunk insufficient for requested object"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         9: .line 240
      StackMap locals:
      StackMap stack:
            invokestatic com.oracle.svm.core.genscavenge.HeapPolicy.getZapProducedHeapChunks:()Z
            ifeq 11
        10: .line 241
            aload 3 /* result */
            invokestatic com.oracle.svm.core.genscavenge.HeapPolicy.getProducedHeapChunkZapWord:()Lorg/graalvm/compiler/word/Word;
            invokestatic com.oracle.svm.core.genscavenge.HeapChunkProvider.zap:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;Lorg/graalvm/word/WordBase;)V
        11: .line 244
      StackMap locals:
      StackMap stack:
            aload 2 /* chunkSize */
            invokestatic com.oracle.svm.core.genscavenge.HeapPolicy.increaseEdenUsedBytes:(Lorg/graalvm/word/UnsignedWord;)V
        12: .line 246
            invokestatic com.oracle.svm.core.genscavenge.HeapChunkProvider.log:()Lcom/oracle/svm/core/log/Log;
            ldc "  returns "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 3 /* result */
            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 247
            aload 3 /* result */
            areturn
        end local 3 // com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader result
        end local 2 // org.graalvm.word.UnsignedWord chunkSize
        end local 1 // org.graalvm.word.UnsignedWord objectSize
        end local 0 // com.oracle.svm.core.genscavenge.HeapChunkProvider this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   14     0        this  Lcom/oracle/svm/core/genscavenge/HeapChunkProvider;
            0   14     1  objectSize  Lorg/graalvm/word/UnsignedWord;
            1   14     2   chunkSize  Lorg/graalvm/word/UnsignedWord;
            4   14     3      result  Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;
    MethodParameters:
            Name  Flags
      objectSize  

  static void consumeUnalignedChunks(com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader);
    descriptor: (Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader firstChunk
         0: .line 255
            aload 0 /* firstChunk */
            invokestatic com.oracle.svm.core.genscavenge.HeapChunkProvider.freeUnalignedChunkList:(Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;)V
         1: .line 256
            return
        end local 0 // com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader firstChunk
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0  firstChunk  Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;
    MethodParameters:
            Name  Flags
      firstChunk  

  private static void initializeChunk(com.oracle.svm.core.genscavenge.HeapChunk$Header<?>, org.graalvm.word.UnsignedWord);
    descriptor: (Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;Lorg/graalvm/word/UnsignedWord;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.svm.core.genscavenge.HeapChunk$Header that
        start local 1 // org.graalvm.word.UnsignedWord chunkSize
         0: .line 260
            aload 0 /* that */
            aload 1 /* chunkSize */
            invokestatic com.oracle.svm.core.genscavenge.HeapChunk.setEndOffset:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;Lorg/graalvm/word/UnsignedWord;)V
         1: .line 261
            return
        end local 1 // org.graalvm.word.UnsignedWord chunkSize
        end local 0 // com.oracle.svm.core.genscavenge.HeapChunk$Header that
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       that  Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<*>;
            0    2     1  chunkSize  Lorg/graalvm/word/UnsignedWord;
    Signature: (Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<*>;Lorg/graalvm/word/UnsignedWord;)V
    MethodParameters:
           Name  Flags
      that       
      chunkSize  

  private static void resetChunkHeader(com.oracle.svm.core.genscavenge.HeapChunk$Header<?>, org.graalvm.word.Pointer);
    descriptor: (Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;Lorg/graalvm/word/Pointer;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.svm.core.genscavenge.HeapChunk$Header chunk
        start local 1 // org.graalvm.word.Pointer objectsStart
         0: .line 265
            aload 0 /* chunk */
            aload 1 /* objectsStart */
            invokestatic com.oracle.svm.core.genscavenge.HeapChunk.setTopPointer:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;Lorg/graalvm/word/Pointer;)V
         1: .line 266
            aload 0 /* chunk */
            aconst_null
            invokestatic com.oracle.svm.core.genscavenge.HeapChunk.setSpace:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;Lcom/oracle/svm/core/genscavenge/Space;)V
         2: .line 267
            aload 0 /* chunk */
            invokestatic org.graalvm.word.WordFactory.nullPointer:()Lorg/graalvm/word/PointerBase;
            invokestatic com.oracle.svm.core.genscavenge.HeapChunk.setNext:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)V
         3: .line 268
            aload 0 /* chunk */
            invokestatic org.graalvm.word.WordFactory.nullPointer:()Lorg/graalvm/word/PointerBase;
            invokestatic com.oracle.svm.core.genscavenge.HeapChunk.setPrevious:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)V
         4: .line 269
            return
        end local 1 // org.graalvm.word.Pointer objectsStart
        end local 0 // com.oracle.svm.core.genscavenge.HeapChunk$Header chunk
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    5     0         chunk  Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<*>;
            0    5     1  objectsStart  Lorg/graalvm/word/Pointer;
    Signature: (Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<*>;Lorg/graalvm/word/Pointer;)V
    MethodParameters:
              Name  Flags
      chunk         
      objectsStart  

  private static void resetAlignedHeapChunk(com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader);
    descriptor: (Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader chunk
         0: .line 272
            aload 0 /* chunk */
            aload 0 /* chunk */
            invokestatic com.oracle.svm.core.genscavenge.AlignedHeapChunk.getObjectsStart:(Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;)Lorg/graalvm/word/Pointer;
            invokestatic com.oracle.svm.core.genscavenge.HeapChunkProvider.resetChunkHeader:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;Lorg/graalvm/word/Pointer;)V
         1: .line 274
            aload 0 /* chunk */
            invokestatic com.oracle.svm.core.genscavenge.AlignedHeapChunk.getCardTableStart:(Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;)Lorg/graalvm/word/Pointer;
            aload 0 /* chunk */
            invokestatic com.oracle.svm.core.genscavenge.AlignedHeapChunk.getCardTableLimit:(Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;)Lorg/graalvm/word/Pointer;
            invokestatic com.oracle.svm.core.genscavenge.CardTable.cleanTableToPointer:(Lorg/graalvm/word/Pointer;Lorg/graalvm/word/Pointer;)Lorg/graalvm/word/Pointer;
            pop
         2: .line 275
            aload 0 /* chunk */
            invokestatic com.oracle.svm.core.genscavenge.AlignedHeapChunk.getFirstObjectTableStart:(Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;)Lorg/graalvm/word/Pointer;
            aload 0 /* chunk */
            invokestatic com.oracle.svm.core.genscavenge.AlignedHeapChunk.getFirstObjectTableLimit:(Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;)Lorg/graalvm/word/Pointer;
            invokestatic com.oracle.svm.core.genscavenge.FirstObjectTable.initializeTableToLimit:(Lorg/graalvm/word/Pointer;Lorg/graalvm/word/Pointer;)Lorg/graalvm/word/Pointer;
            pop
         3: .line 276
            return
        end local 0 // com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader chunk
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0  chunk  Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
    MethodParameters:
       Name  Flags
      chunk  

  private static void resetUnalignedChunk(com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader);
    descriptor: (Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader result
         0: .line 279
            aload 0 /* result */
            aload 0 /* result */
            invokestatic com.oracle.svm.core.genscavenge.UnalignedHeapChunk.getObjectStart:(Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;)Lorg/graalvm/word/Pointer;
            invokestatic com.oracle.svm.core.genscavenge.HeapChunkProvider.resetChunkHeader:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;Lorg/graalvm/word/Pointer;)V
         1: .line 281
            aload 0 /* result */
            invokestatic com.oracle.svm.core.genscavenge.UnalignedHeapChunk.getCardTableStart:(Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;)Lorg/graalvm/word/Pointer;
            aload 0 /* result */
            invokestatic com.oracle.svm.core.genscavenge.UnalignedHeapChunk.getCardTableLimit:(Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;)Lorg/graalvm/word/Pointer;
            invokestatic com.oracle.svm.core.genscavenge.CardTable.cleanTableToPointer:(Lorg/graalvm/word/Pointer;Lorg/graalvm/word/Pointer;)Lorg/graalvm/word/Pointer;
            pop
         2: .line 282
            return
        end local 0 // com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader result
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0  result  Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;
    MethodParameters:
        Name  Flags
      result  

  private static void zap(com.oracle.svm.core.genscavenge.HeapChunk$Header<?>, org.graalvm.word.WordBase);
    descriptor: (Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;Lorg/graalvm/word/WordBase;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // com.oracle.svm.core.genscavenge.HeapChunk$Header chunk
        start local 1 // org.graalvm.word.WordBase value
         0: .line 285
            aload 0 /* chunk */
            invokestatic com.oracle.svm.core.genscavenge.HeapChunk.getTopPointer:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lorg/graalvm/word/Pointer;
            astore 2 /* start */
        start local 2 // org.graalvm.word.Pointer start
         1: .line 286
            aload 0 /* chunk */
            invokestatic com.oracle.svm.core.genscavenge.HeapChunk.getEndPointer:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lorg/graalvm/word/Pointer;
            astore 3 /* limit */
        start local 3 // org.graalvm.word.Pointer limit
         2: .line 287
            invokestatic com.oracle.svm.core.genscavenge.HeapChunkProvider.log:()Lcom/oracle/svm/core/log/Log;
            ldc "  zap chunk: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 0 /* chunk */
            invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
            ldc "  start: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 2 /* start */
            invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
            ldc "  limit: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 3 /* limit */
            invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
            ldc "  value: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 1 /* value */
            invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
            invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
            pop
         3: .line 288
            aload 2 /* start */
            astore 4 /* p */
        start local 4 // org.graalvm.word.Pointer p
         4: goto 7
         5: .line 289
      StackMap locals: org.graalvm.word.Pointer org.graalvm.word.Pointer org.graalvm.word.Pointer
      StackMap stack:
            aload 4 /* p */
            iconst_0
            aload 1 /* value */
            invokeinterface org.graalvm.word.Pointer.writeWord:(ILorg/graalvm/word/WordBase;)V
         6: .line 288
            aload 4 /* p */
            invokestatic com.oracle.svm.core.FrameAccess.wordSize:()I
            invokeinterface org.graalvm.word.Pointer.add:(I)Lorg/graalvm/word/Pointer;
            astore 4 /* p */
      StackMap locals:
      StackMap stack:
         7: aload 4 /* p */
            aload 3 /* limit */
            invokeinterface org.graalvm.word.Pointer.belowThan:(Lorg/graalvm/word/UnsignedWord;)Z
            ifne 5
        end local 4 // org.graalvm.word.Pointer p
         8: .line 291
            return
        end local 3 // org.graalvm.word.Pointer limit
        end local 2 // org.graalvm.word.Pointer start
        end local 1 // org.graalvm.word.WordBase value
        end local 0 // com.oracle.svm.core.genscavenge.HeapChunk$Header chunk
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    9     0  chunk  Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<*>;
            0    9     1  value  Lorg/graalvm/word/WordBase;
            1    9     2  start  Lorg/graalvm/word/Pointer;
            2    9     3  limit  Lorg/graalvm/word/Pointer;
            4    8     4      p  Lorg/graalvm/word/Pointer;
    Signature: (Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<*>;Lorg/graalvm/word/WordBase;)V
    MethodParameters:
       Name  Flags
      chunk  
      value  

  com.oracle.svm.core.log.Log report(com.oracle.svm.core.log.Log, boolean);
    descriptor: (Lcom/oracle/svm/core/log/Log;Z)Lcom/oracle/svm/core/log/Log;
    flags: (0x0000) 
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // com.oracle.svm.core.genscavenge.HeapChunkProvider this
        start local 1 // com.oracle.svm.core.log.Log log
        start local 2 // boolean traceHeapChunks
         0: .line 294
            aload 1 /* log */
            ldc "[Unused:"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            iconst_1
            invokevirtual com.oracle.svm.core.log.Log.indent:(Z)Lcom/oracle/svm/core/log/Log;
            pop
         1: .line 295
            aload 1 /* log */
            ldc "aligned: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.HeapChunkProvider.bytesInUnusedAlignedChunks:Lcom/oracle/svm/core/jdk/UninterruptibleUtils$AtomicUnsigned;
            invokevirtual com.oracle.svm.core.jdk.UninterruptibleUtils$AtomicUnsigned.get:()Lorg/graalvm/word/WordBase;
            invokevirtual com.oracle.svm.core.log.Log.signed:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
         2: .line 296
            ldc "/"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
         3: .line 297
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.HeapChunkProvider.bytesInUnusedAlignedChunks:Lcom/oracle/svm/core/jdk/UninterruptibleUtils$AtomicUnsigned;
            invokevirtual com.oracle.svm.core.jdk.UninterruptibleUtils$AtomicUnsigned.get:()Lorg/graalvm/word/WordBase;
            checkcast org.graalvm.word.UnsignedWord
            invokestatic com.oracle.svm.core.genscavenge.HeapPolicy.getAlignedHeapChunkSize:()Lorg/graalvm/word/UnsignedWord;
            invokeinterface org.graalvm.word.UnsignedWord.unsignedDivide:(Lorg/graalvm/word/UnsignedWord;)Lorg/graalvm/word/UnsignedWord;
            invokevirtual com.oracle.svm.core.log.Log.signed:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
            pop
         4: .line 298
            iload 2 /* traceHeapChunks */
            ifeq 13
         5: .line 299
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.HeapChunkProvider.unusedAlignedChunks:Lcom/oracle/svm/core/jdk/UninterruptibleUtils$AtomicPointer;
            invokevirtual com.oracle.svm.core.jdk.UninterruptibleUtils$AtomicPointer.get:()Lorg/graalvm/word/PointerBase;
            checkcast com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader
            invokeinterface com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader.isNonNull:()Z
            ifeq 13
         6: .line 300
            aload 1 /* log */
            invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
            ldc "aligned chunks:"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            iconst_1
            invokevirtual com.oracle.svm.core.log.Log.redent:(Z)Lcom/oracle/svm/core/log/Log;
            pop
         7: .line 301
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.HeapChunkProvider.unusedAlignedChunks:Lcom/oracle/svm/core/jdk/UninterruptibleUtils$AtomicPointer;
            invokevirtual com.oracle.svm.core.jdk.UninterruptibleUtils$AtomicPointer.get:()Lorg/graalvm/word/PointerBase;
            checkcast com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader
            astore 3 /* aChunk */
        start local 3 // com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader aChunk
         8: goto 11
         9: .line 302
      StackMap locals: com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader
      StackMap stack:
            aload 1 /* log */
            invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
            aload 3 /* aChunk */
            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;
            aload 3 /* aChunk */
            invokestatic com.oracle.svm.core.genscavenge.AlignedHeapChunk.getObjectsStart:(Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;)Lorg/graalvm/word/Pointer;
            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;
            aload 3 /* aChunk */
            invokestatic com.oracle.svm.core.genscavenge.HeapChunk.getTopPointer:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lorg/graalvm/word/Pointer;
            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
        10: .line 301
            aload 3 /* aChunk */
            invokestatic com.oracle.svm.core.genscavenge.HeapChunk.getNext:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;
            checkcast com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader
            astore 3 /* aChunk */
      StackMap locals:
      StackMap stack:
        11: aload 3 /* aChunk */
            invokeinterface com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader.isNonNull:()Z
            ifne 9
        end local 3 // com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader aChunk
        12: .line 304
            aload 1 /* log */
            iconst_0
            invokevirtual com.oracle.svm.core.log.Log.redent:(Z)Lcom/oracle/svm/core/log/Log;
            pop
        13: .line 307
      StackMap locals:
      StackMap stack:
            aload 1 /* log */
            iconst_0
            invokevirtual com.oracle.svm.core.log.Log.redent:(Z)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
        14: .line 308
            aload 1 /* log */
            areturn
        end local 2 // boolean traceHeapChunks
        end local 1 // com.oracle.svm.core.log.Log log
        end local 0 // com.oracle.svm.core.genscavenge.HeapChunkProvider this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   15     0             this  Lcom/oracle/svm/core/genscavenge/HeapChunkProvider;
            0   15     1              log  Lcom/oracle/svm/core/log/Log;
            0   15     2  traceHeapChunks  Z
            8   12     3           aChunk  Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
    MethodParameters:
                 Name  Flags
      log              
      traceHeapChunks  

  boolean walkHeapChunks(com.oracle.svm.core.MemoryWalker$Visitor);
    descriptor: (Lcom/oracle/svm/core/MemoryWalker$Visitor;)Z
    flags: (0x0000) 
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // com.oracle.svm.core.genscavenge.HeapChunkProvider this
        start local 1 // com.oracle.svm.core.MemoryWalker$Visitor visitor
         0: .line 312
            iconst_1
            istore 2 /* continueVisiting */
        start local 2 // boolean continueVisiting
         1: .line 313
            invokestatic com.oracle.svm.core.genscavenge.AlignedHeapChunk.getMemoryWalkerAccess:()Lcom/oracle/svm/core/MemoryWalker$HeapChunkAccess;
            astore 3 /* access */
        start local 3 // com.oracle.svm.core.MemoryWalker$HeapChunkAccess access
         2: .line 314
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.HeapChunkProvider.unusedAlignedChunks:Lcom/oracle/svm/core/jdk/UninterruptibleUtils$AtomicPointer;
            invokevirtual com.oracle.svm.core.jdk.UninterruptibleUtils$AtomicPointer.get:()Lorg/graalvm/word/PointerBase;
            checkcast com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader
            astore 4 /* aChunk */
        start local 4 // com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader aChunk
         3: goto 6
         4: .line 315
      StackMap locals: int com.oracle.svm.core.MemoryWalker$HeapChunkAccess com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader
      StackMap stack:
            aload 1 /* visitor */
            aload 4 /* aChunk */
            aload 3 /* access */
            invokeinterface com.oracle.svm.core.MemoryWalker$Visitor.visitHeapChunk:(Lorg/graalvm/word/PointerBase;Lcom/oracle/svm/core/MemoryWalker$HeapChunkAccess;)Z
            istore 2 /* continueVisiting */
         5: .line 314
            aload 4 /* aChunk */
            invokestatic com.oracle.svm.core.genscavenge.HeapChunk.getNext:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;
            checkcast com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader
            astore 4 /* aChunk */
      StackMap locals:
      StackMap stack:
         6: iload 2 /* continueVisiting */
            ifeq 7
            aload 4 /* aChunk */
            invokeinterface com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader.isNonNull:()Z
            ifne 4
        end local 4 // com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader aChunk
         7: .line 317
      StackMap locals:
      StackMap stack:
            iload 2 /* continueVisiting */
            ireturn
        end local 3 // com.oracle.svm.core.MemoryWalker$HeapChunkAccess access
        end local 2 // boolean continueVisiting
        end local 1 // com.oracle.svm.core.MemoryWalker$Visitor visitor
        end local 0 // com.oracle.svm.core.genscavenge.HeapChunkProvider this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    8     0              this  Lcom/oracle/svm/core/genscavenge/HeapChunkProvider;
            0    8     1           visitor  Lcom/oracle/svm/core/MemoryWalker$Visitor;
            1    8     2  continueVisiting  Z
            2    8     3            access  Lcom/oracle/svm/core/MemoryWalker$HeapChunkAccess<Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;>;
            3    7     4            aChunk  Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
    MethodParameters:
         Name  Flags
      visitor  

  private void noteFirstAllocationTime();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // com.oracle.svm.core.genscavenge.HeapChunkProvider this
         0: .line 321
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.HeapChunkProvider.firstAllocationTime:J
            lconst_0
            lcmp
            ifne 2
         1: .line 322
            aload 0 /* this */
            invokestatic java.lang.System.nanoTime:()J
            putfield com.oracle.svm.core.genscavenge.HeapChunkProvider.firstAllocationTime:J
         2: .line 324
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.oracle.svm.core.genscavenge.HeapChunkProvider this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/svm/core/genscavenge/HeapChunkProvider;

  long getFirstAllocationTime();
    descriptor: ()J
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.svm.core.genscavenge.HeapChunkProvider this
         0: .line 327
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.HeapChunkProvider.firstAllocationTime:J
            lreturn
        end local 0 // com.oracle.svm.core.genscavenge.HeapChunkProvider this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/svm/core/genscavenge/HeapChunkProvider;

  boolean slowlyFindPointer(org.graalvm.word.Pointer);
    descriptor: (Lorg/graalvm/word/Pointer;)Z
    flags: (0x0000) 
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // com.oracle.svm.core.genscavenge.HeapChunkProvider this
        start local 1 // org.graalvm.word.Pointer p
         0: .line 331
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.HeapChunkProvider.unusedAlignedChunks:Lcom/oracle/svm/core/jdk/UninterruptibleUtils$AtomicPointer;
            invokevirtual com.oracle.svm.core.jdk.UninterruptibleUtils$AtomicPointer.get:()Lorg/graalvm/word/PointerBase;
            checkcast com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader
            astore 2 /* chunk */
        start local 2 // com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader chunk
         1: goto 6
         2: .line 332
      StackMap locals: com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader
      StackMap stack:
            aload 2 /* chunk */
            invokestatic com.oracle.svm.core.genscavenge.HeapChunk.asPointer:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lorg/graalvm/word/Pointer;
            astore 3 /* chunkPtr */
        start local 3 // org.graalvm.word.Pointer chunkPtr
         3: .line 333
            aload 1 /* p */
            aload 3 /* chunkPtr */
            invokeinterface org.graalvm.word.Pointer.aboveOrEqual:(Lorg/graalvm/word/UnsignedWord;)Z
            ifeq 5
            aload 1 /* p */
            aload 3 /* chunkPtr */
            invokestatic com.oracle.svm.core.genscavenge.HeapPolicy.getAlignedHeapChunkSize:()Lorg/graalvm/word/UnsignedWord;
            invokeinterface org.graalvm.word.Pointer.add:(Lorg/graalvm/word/UnsignedWord;)Lorg/graalvm/word/Pointer;
            invokeinterface org.graalvm.word.Pointer.belowThan:(Lorg/graalvm/word/UnsignedWord;)Z
            ifeq 5
         4: .line 334
            iconst_1
            ireturn
        end local 3 // org.graalvm.word.Pointer chunkPtr
         5: .line 331
      StackMap locals:
      StackMap stack:
            aload 2 /* chunk */
            invokestatic com.oracle.svm.core.genscavenge.HeapChunk.getNext:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;
            checkcast com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader
            astore 2 /* chunk */
      StackMap locals:
      StackMap stack:
         6: aload 2 /* chunk */
            invokeinterface com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader.isNonNull:()Z
            ifne 2
        end local 2 // com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader chunk
         7: .line 337
            iconst_0
            ireturn
        end local 1 // org.graalvm.word.Pointer p
        end local 0 // com.oracle.svm.core.genscavenge.HeapChunkProvider this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    8     0      this  Lcom/oracle/svm/core/genscavenge/HeapChunkProvider;
            0    8     1         p  Lorg/graalvm/word/Pointer;
            1    7     2     chunk  Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
            3    5     3  chunkPtr  Lorg/graalvm/word/Pointer;
    MethodParameters:
      Name  Flags
      p     

  void tearDown();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.svm.core.genscavenge.HeapChunkProvider this
         0: .line 342
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.HeapChunkProvider.unusedAlignedChunks:Lcom/oracle/svm/core/jdk/UninterruptibleUtils$AtomicPointer;
            invokevirtual com.oracle.svm.core.jdk.UninterruptibleUtils$AtomicPointer.get:()Lorg/graalvm/word/PointerBase;
            checkcast com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader
            invokestatic com.oracle.svm.core.genscavenge.HeapChunkProvider.freeAlignedChunkList:(Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;)V
         1: .line 343
            return
        end local 0 // com.oracle.svm.core.genscavenge.HeapChunkProvider this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/svm/core/genscavenge/HeapChunkProvider;
    RuntimeVisibleAnnotations: 
      com.oracle.svm.core.annotate.Uninterruptible(reason = "Called from uninterruptible code.", mayBeInlined = true)

  static void freeAlignedChunkList(com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader);
    descriptor: (Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=3, args_size=1
        start local 0 // com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader first
         0: .line 347
            aload 0 /* first */
            astore 1 /* chunk */
        start local 1 // com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader chunk
         1: goto 5
         2: .line 348
      StackMap locals: com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader
      StackMap stack:
            aload 1 /* chunk */
            invokestatic com.oracle.svm.core.genscavenge.HeapChunk.getNext:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;
            checkcast com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader
            astore 2 /* next */
        start local 2 // com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader next
         3: .line 349
            aload 1 /* chunk */
            invokestatic com.oracle.svm.core.genscavenge.HeapChunkProvider.freeAlignedChunk:(Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;)V
         4: .line 350
            aload 2 /* next */
            astore 1 /* chunk */
        end local 2 // com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader next
         5: .line 347
      StackMap locals:
      StackMap stack:
            aload 1 /* chunk */
            invokeinterface com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader.isNonNull:()Z
            ifne 2
        end local 1 // com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader chunk
         6: .line 352
            return
        end local 0 // com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader first
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    7     0  first  Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
            1    6     1  chunk  Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
            3    5     2   next  Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
    RuntimeVisibleAnnotations: 
      com.oracle.svm.core.annotate.Uninterruptible(reason = "Called from uninterruptible code.", mayBeInlined = true)
    MethodParameters:
       Name  Flags
      first  

  static void freeUnalignedChunkList(com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader);
    descriptor: (Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=3, args_size=1
        start local 0 // com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader first
         0: .line 356
            aload 0 /* first */
            astore 1 /* chunk */
        start local 1 // com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader chunk
         1: goto 5
         2: .line 357
      StackMap locals: com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader
      StackMap stack:
            aload 1 /* chunk */
            invokestatic com.oracle.svm.core.genscavenge.HeapChunk.getNext:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;
            checkcast com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader
            astore 2 /* next */
        start local 2 // com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader next
         3: .line 358
            aload 1 /* chunk */
            invokestatic com.oracle.svm.core.genscavenge.HeapChunkProvider.freeUnalignedChunk:(Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;)V
         4: .line 359
            aload 2 /* next */
            astore 1 /* chunk */
        end local 2 // com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader next
         5: .line 356
      StackMap locals:
      StackMap stack:
            aload 1 /* chunk */
            invokeinterface com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader.isNonNull:()Z
            ifne 2
        end local 1 // com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader chunk
         6: .line 361
            return
        end local 0 // com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader first
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    7     0  first  Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;
            1    6     1  chunk  Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;
            3    5     2   next  Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;
    RuntimeVisibleAnnotations: 
      com.oracle.svm.core.annotate.Uninterruptible(reason = "Called from uninterruptible code.", mayBeInlined = true)
    MethodParameters:
       Name  Flags
      first  

  private static void freeAlignedChunk(com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader);
    descriptor: (Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader chunk
         0: .line 365
            invokestatic com.oracle.svm.core.os.CommittedMemoryProvider.get:()Lcom/oracle/svm/core/os/CommittedMemoryProvider;
            aload 0 /* chunk */
            invokestatic com.oracle.svm.core.genscavenge.HeapPolicy.getAlignedHeapChunkSize:()Lorg/graalvm/word/UnsignedWord;
            invokestatic com.oracle.svm.core.genscavenge.HeapPolicy.getAlignedHeapChunkAlignment:()Lorg/graalvm/word/UnsignedWord;
            iconst_0
            invokeinterface com.oracle.svm.core.os.CommittedMemoryProvider.free:(Lorg/graalvm/word/PointerBase;Lorg/graalvm/word/UnsignedWord;Lorg/graalvm/word/UnsignedWord;Z)Z
            pop
         1: .line 366
            return
        end local 0 // com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader chunk
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0  chunk  Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
    RuntimeVisibleAnnotations: 
      com.oracle.svm.core.annotate.Uninterruptible(reason = "Called from uninterruptible code.", mayBeInlined = true)
    MethodParameters:
       Name  Flags
      chunk  

  private static void freeUnalignedChunk(com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader);
    descriptor: (Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader chunk
         0: .line 370
            invokestatic com.oracle.svm.core.os.CommittedMemoryProvider.get:()Lcom/oracle/svm/core/os/CommittedMemoryProvider;
            aload 0 /* chunk */
            aload 0 /* chunk */
            invokestatic com.oracle.svm.core.genscavenge.HeapChunkProvider.unalignedChunkSize:(Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;)Lorg/graalvm/word/UnsignedWord;
            getstatic com.oracle.svm.core.os.CommittedMemoryProvider.UNALIGNED:Lorg/graalvm/word/UnsignedWord;
            iconst_0
            invokeinterface com.oracle.svm.core.os.CommittedMemoryProvider.free:(Lorg/graalvm/word/PointerBase;Lorg/graalvm/word/UnsignedWord;Lorg/graalvm/word/UnsignedWord;Z)Z
            pop
         1: .line 371
            return
        end local 0 // com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader chunk
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0  chunk  Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;
    RuntimeVisibleAnnotations: 
      com.oracle.svm.core.annotate.Uninterruptible(reason = "Called from uninterruptible code.", mayBeInlined = true)
    MethodParameters:
       Name  Flags
      chunk  

  private static org.graalvm.word.UnsignedWord unalignedChunkSize(com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader);
    descriptor: (Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;)Lorg/graalvm/word/UnsignedWord;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader chunk
         0: .line 375
            aload 0 /* chunk */
            invokestatic com.oracle.svm.core.genscavenge.HeapChunk.getEndOffset:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lorg/graalvm/word/UnsignedWord;
            areturn
        end local 0 // com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader chunk
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0  chunk  Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;
    RuntimeVisibleAnnotations: 
      com.oracle.svm.core.annotate.Uninterruptible(reason = "Called from uninterruptible code.", mayBeInlined = true)
    MethodParameters:
       Name  Flags
      chunk  
}
SourceFile: "HeapChunkProvider.java"
InnerClasses:
  public abstract HeapChunkAccess = com.oracle.svm.core.MemoryWalker$HeapChunkAccess of com.oracle.svm.core.MemoryWalker
  public abstract Visitor = com.oracle.svm.core.MemoryWalker$Visitor of com.oracle.svm.core.MemoryWalker
  public abstract AlignedHeader = com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader of com.oracle.svm.core.genscavenge.AlignedHeapChunk
  public abstract Header = com.oracle.svm.core.genscavenge.HeapChunk$Header of com.oracle.svm.core.genscavenge.HeapChunk
  public abstract UnalignedHeader = com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader of com.oracle.svm.core.genscavenge.UnalignedHeapChunk
  public AtomicPointer = com.oracle.svm.core.jdk.UninterruptibleUtils$AtomicPointer of com.oracle.svm.core.jdk.UninterruptibleUtils
  public AtomicUnsigned = com.oracle.svm.core.jdk.UninterruptibleUtils$AtomicUnsigned of com.oracle.svm.core.jdk.UninterruptibleUtils