public class com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter extends com.oracle.svm.core.genscavenge.AbstractImageHeapLayouter<com.oracle.svm.core.genscavenge.ChunkedImageHeapPartition>
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter
  super_class: com.oracle.svm.core.genscavenge.AbstractImageHeapLayouter
{
  private final com.oracle.svm.core.genscavenge.ImageHeapInfo heapInfo;
    descriptor: Lcom/oracle/svm/core/genscavenge/ImageHeapInfo;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final long startOffset;
    descriptor: J
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final boolean compressedNullPadding;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final long hugeObjectThreshold;
    descriptor: J
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator allocator;
    descriptor: Lcom/oracle/svm/core/genscavenge/ChunkedImageHeapAllocator;
    flags: (0x0002) ACC_PRIVATE

  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=1, locals=0, args_size=0
         0: .line 40
            ldc Lcom/oracle/svm/core/genscavenge/ChunkedImageHeapLayouter;
            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.ChunkedImageHeapLayouter.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(com.oracle.svm.core.genscavenge.ImageHeapInfo, long, boolean);
    descriptor: (Lcom/oracle/svm/core/genscavenge/ImageHeapInfo;JZ)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=4
        start local 0 // com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter this
        start local 1 // com.oracle.svm.core.genscavenge.ImageHeapInfo heapInfo
        start local 2 // long startOffset
        start local 4 // boolean compressedNullPadding
         0: .line 47
            aload 0 /* this */
            invokespecial com.oracle.svm.core.genscavenge.AbstractImageHeapLayouter.<init>:()V
         1: .line 48
            aload 0 /* this */
            aload 1 /* heapInfo */
            putfield com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter.heapInfo:Lcom/oracle/svm/core/genscavenge/ImageHeapInfo;
         2: .line 49
            aload 0 /* this */
            lload 2 /* startOffset */
            putfield com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter.startOffset:J
         3: .line 50
            aload 0 /* this */
            iload 4 /* compressedNullPadding */
            putfield com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter.compressedNullPadding:Z
         4: .line 51
            aload 0 /* this */
            invokestatic com.oracle.svm.core.genscavenge.HeapPolicy.getLargeArrayThreshold:()Lorg/graalvm/word/UnsignedWord;
            invokeinterface org.graalvm.word.UnsignedWord.rawValue:()J
            putfield com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter.hugeObjectThreshold:J
         5: .line 52
            return
        end local 4 // boolean compressedNullPadding
        end local 2 // long startOffset
        end local 1 // com.oracle.svm.core.genscavenge.ImageHeapInfo heapInfo
        end local 0 // com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0    6     0                   this  Lcom/oracle/svm/core/genscavenge/ChunkedImageHeapLayouter;
            0    6     1               heapInfo  Lcom/oracle/svm/core/genscavenge/ImageHeapInfo;
            0    6     2            startOffset  J
            0    6     4  compressedNullPadding  Z
    MethodParameters:
                       Name  Flags
      heapInfo               
      startOffset            
      compressedNullPadding  

  protected com.oracle.svm.core.genscavenge.ChunkedImageHeapPartition[] createPartitionsArray(int);
    descriptor: (I)[Lcom/oracle/svm/core/genscavenge/ChunkedImageHeapPartition;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter this
        start local 1 // int count
         0: .line 56
            iload 1 /* count */
            anewarray com.oracle.svm.core.genscavenge.ChunkedImageHeapPartition
            areturn
        end local 1 // int count
        end local 0 // com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/oracle/svm/core/genscavenge/ChunkedImageHeapLayouter;
            0    1     1  count  I
    MethodParameters:
       Name  Flags
      count  

  protected com.oracle.svm.core.genscavenge.ChunkedImageHeapPartition createPartition(java.lang.String, boolean, boolean, boolean);
    descriptor: (Ljava/lang/String;ZZZ)Lcom/oracle/svm/core/genscavenge/ChunkedImageHeapPartition;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=5, args_size=5
        start local 0 // com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter this
        start local 1 // java.lang.String name
        start local 2 // boolean containsReferences
        start local 3 // boolean writable
        start local 4 // boolean hugeObjects
         0: .line 61
            new com.oracle.svm.core.genscavenge.ChunkedImageHeapPartition
            dup
            aload 1 /* name */
            iload 3 /* writable */
            iload 4 /* hugeObjects */
            invokespecial com.oracle.svm.core.genscavenge.ChunkedImageHeapPartition.<init>:(Ljava/lang/String;ZZ)V
            areturn
        end local 4 // boolean hugeObjects
        end local 3 // boolean writable
        end local 2 // boolean containsReferences
        end local 1 // java.lang.String name
        end local 0 // com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    1     0                this  Lcom/oracle/svm/core/genscavenge/ChunkedImageHeapLayouter;
            0    1     1                name  Ljava/lang/String;
            0    1     2  containsReferences  Z
            0    1     3            writable  Z
            0    1     4         hugeObjects  Z
    MethodParameters:
                    Name  Flags
      name                
      containsReferences  
      writable            
      hugeObjects         

  protected long getHugeObjectThreshold();
    descriptor: ()J
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter this
         0: .line 66
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter.hugeObjectThreshold:J
            lreturn
        end local 0 // com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/svm/core/genscavenge/ChunkedImageHeapLayouter;

  protected com.oracle.svm.core.image.ImageHeapLayoutInfo doLayout(com.oracle.svm.core.image.ImageHeap);
    descriptor: (Lcom/oracle/svm/core/image/ImageHeap;)Lcom/oracle/svm/core/image/ImageHeapLayoutInfo;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=6, args_size=2
        start local 0 // com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter this
        start local 1 // com.oracle.svm.core.image.ImageHeap imageHeap
         0: .line 71
            getstatic com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter.compressedNullPadding:Z
            ifeq 1
            invokestatic com.oracle.svm.core.genscavenge.AlignedHeapChunk.getObjectsStartOffset:()Lorg/graalvm/word/UnsignedWord;
            iconst_0
            invokeinterface org.graalvm.word.UnsignedWord.aboveThan:(I)Z
            ifne 1
            new java.lang.AssertionError
            dup
            ldc "Expecting header to pad start so object offsets are strictly greater than 0"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         1: .line 72
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator
            dup
            aload 1 /* imageHeap */
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter.startOffset:J
            invokespecial com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator.<init>:(Lcom/oracle/svm/core/image/ImageHeap;J)V
            putfield com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter.allocator:Lcom/oracle/svm/core/genscavenge/ChunkedImageHeapAllocator;
         2: .line 73
            aload 0 /* this */
            invokevirtual com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter.getPartitions:()[Lcom/oracle/svm/core/genscavenge/AbstractImageHeapLayouter$AbstractImageHeapPartition;
            checkcast com.oracle.svm.core.genscavenge.ChunkedImageHeapPartition[]
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 6
      StackMap locals: com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter com.oracle.svm.core.image.ImageHeap top int int com.oracle.svm.core.genscavenge.ChunkedImageHeapPartition[]
      StackMap stack:
         3: aload 5
            iload 3
            aaload
            astore 2 /* partition */
        start local 2 // com.oracle.svm.core.genscavenge.ChunkedImageHeapPartition partition
         4: .line 74
            aload 2 /* partition */
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter.allocator:Lcom/oracle/svm/core/genscavenge/ChunkedImageHeapAllocator;
            invokevirtual com.oracle.svm.core.genscavenge.ChunkedImageHeapPartition.layout:(Lcom/oracle/svm/core/genscavenge/ChunkedImageHeapAllocator;)V
        end local 2 // com.oracle.svm.core.genscavenge.ChunkedImageHeapPartition partition
         5: .line 73
            iinc 3 1
      StackMap locals:
      StackMap stack:
         6: iload 3
            iload 4
            if_icmplt 3
         7: .line 76
            aload 0 /* this */
            aload 1 /* imageHeap */
            invokeinterface com.oracle.svm.core.image.ImageHeap.countDynamicHubs:()I
            invokevirtual com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter.populateInfoObjects:(I)Lcom/oracle/svm/core/image/ImageHeapLayoutInfo;
            areturn
        end local 1 // com.oracle.svm.core.image.ImageHeap imageHeap
        end local 0 // com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    8     0       this  Lcom/oracle/svm/core/genscavenge/ChunkedImageHeapLayouter;
            0    8     1  imageHeap  Lcom/oracle/svm/core/image/ImageHeap;
            4    5     2  partition  Lcom/oracle/svm/core/genscavenge/ChunkedImageHeapPartition;
    MethodParameters:
           Name  Flags
      imageHeap  

  private com.oracle.svm.core.image.ImageHeapLayoutInfo populateInfoObjects(int);
    descriptor: (I)Lcom/oracle/svm/core/image/ImageHeapLayoutInfo;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=20, locals=8, args_size=2
        start local 0 // com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter this
        start local 1 // int dynamicHubCount
         0: .line 82
            aload 0 /* this */
            invokevirtual com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter.getWritablePrimitive:()Lcom/oracle/svm/core/genscavenge/AbstractImageHeapLayouter$AbstractImageHeapPartition;
            checkcast com.oracle.svm.core.genscavenge.ChunkedImageHeapPartition
            invokevirtual com.oracle.svm.core.genscavenge.ChunkedImageHeapPartition.getStartOffset:()J
            lstore 2 /* writableBegin */
        start local 2 // long writableBegin
         1: .line 83
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter.allocator:Lcom/oracle/svm/core/genscavenge/ChunkedImageHeapAllocator;
            invokevirtual com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator.getAlignedChunks:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 5
            goto 7
      StackMap locals: com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter int long top java.util.Iterator
      StackMap stack:
         2: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$AlignedChunk
            astore 4 /* chunk */
        start local 4 // com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$AlignedChunk chunk
         3: .line 84
            aload 4 /* chunk */
            invokevirtual com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$AlignedChunk.isWritable:()Z
            ifeq 7
            aload 4 /* chunk */
            invokevirtual com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$AlignedChunk.getBegin:()J
            lload 2 /* writableBegin */
            lcmp
            ifge 7
         4: .line 85
            getstatic com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter.$assertionsDisabled:Z
            ifne 5
            lload 2 /* writableBegin */
            aload 4 /* chunk */
            invokevirtual com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$AlignedChunk.getEnd:()J
            lcmp
            ifle 5
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         5: .line 86
      StackMap locals: com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter int long com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$AlignedChunk java.util.Iterator
      StackMap stack:
            aload 4 /* chunk */
            invokevirtual com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$AlignedChunk.getBegin:()J
            lstore 2 /* writableBegin */
         6: .line 87
            goto 8
        end local 4 // com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$AlignedChunk chunk
         7: .line 83
      StackMap locals: com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter int long top java.util.Iterator
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         8: .line 90
      StackMap locals: com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter int long
      StackMap stack:
            ldc -1
            lstore 4 /* firstWritableUnalignedChunk */
        start local 4 // long firstWritableUnalignedChunk
         9: .line 91
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter.allocator:Lcom/oracle/svm/core/genscavenge/ChunkedImageHeapAllocator;
            invokevirtual com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator.getUnalignedChunks:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 7
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifeq 12
            aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$UnalignedChunk
            astore 6 /* chunk */
        start local 6 // com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$UnalignedChunk chunk
        10: .line 92
            aload 6 /* chunk */
            invokevirtual com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$UnalignedChunk.isWritable:()Z
            ifeq 12
        11: .line 93
            aload 6 /* chunk */
            invokevirtual com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$UnalignedChunk.getBegin:()J
            lstore 4 /* firstWritableUnalignedChunk */
        end local 6 // com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$UnalignedChunk chunk
        12: .line 98
      StackMap locals: long
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter.heapInfo:Lcom/oracle/svm/core/genscavenge/ImageHeapInfo;
            aload 0 /* this */
            invokevirtual com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter.getReadOnlyPrimitive:()Lcom/oracle/svm/core/genscavenge/AbstractImageHeapLayouter$AbstractImageHeapPartition;
            checkcast com.oracle.svm.core.genscavenge.ChunkedImageHeapPartition
            getfield com.oracle.svm.core.genscavenge.ChunkedImageHeapPartition.firstObject:Ljava/lang/Object;
            aload 0 /* this */
            invokevirtual com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter.getReadOnlyPrimitive:()Lcom/oracle/svm/core/genscavenge/AbstractImageHeapLayouter$AbstractImageHeapPartition;
            checkcast com.oracle.svm.core.genscavenge.ChunkedImageHeapPartition
            getfield com.oracle.svm.core.genscavenge.ChunkedImageHeapPartition.lastObject:Ljava/lang/Object;
            aload 0 /* this */
            invokevirtual com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter.getReadOnlyReference:()Lcom/oracle/svm/core/genscavenge/AbstractImageHeapLayouter$AbstractImageHeapPartition;
            checkcast com.oracle.svm.core.genscavenge.ChunkedImageHeapPartition
            getfield com.oracle.svm.core.genscavenge.ChunkedImageHeapPartition.firstObject:Ljava/lang/Object;
            aload 0 /* this */
            invokevirtual com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter.getReadOnlyReference:()Lcom/oracle/svm/core/genscavenge/AbstractImageHeapLayouter$AbstractImageHeapPartition;
            checkcast com.oracle.svm.core.genscavenge.ChunkedImageHeapPartition
            getfield com.oracle.svm.core.genscavenge.ChunkedImageHeapPartition.lastObject:Ljava/lang/Object;
        13: .line 99
            aload 0 /* this */
            invokevirtual com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter.getReadOnlyRelocatable:()Lcom/oracle/svm/core/genscavenge/AbstractImageHeapLayouter$AbstractImageHeapPartition;
            checkcast com.oracle.svm.core.genscavenge.ChunkedImageHeapPartition
            getfield com.oracle.svm.core.genscavenge.ChunkedImageHeapPartition.firstObject:Ljava/lang/Object;
            aload 0 /* this */
            invokevirtual com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter.getReadOnlyRelocatable:()Lcom/oracle/svm/core/genscavenge/AbstractImageHeapLayouter$AbstractImageHeapPartition;
            checkcast com.oracle.svm.core.genscavenge.ChunkedImageHeapPartition
            getfield com.oracle.svm.core.genscavenge.ChunkedImageHeapPartition.lastObject:Ljava/lang/Object;
            aload 0 /* this */
            invokevirtual com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter.getWritablePrimitive:()Lcom/oracle/svm/core/genscavenge/AbstractImageHeapLayouter$AbstractImageHeapPartition;
            checkcast com.oracle.svm.core.genscavenge.ChunkedImageHeapPartition
            getfield com.oracle.svm.core.genscavenge.ChunkedImageHeapPartition.firstObject:Ljava/lang/Object;
            aload 0 /* this */
            invokevirtual com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter.getWritablePrimitive:()Lcom/oracle/svm/core/genscavenge/AbstractImageHeapLayouter$AbstractImageHeapPartition;
            checkcast com.oracle.svm.core.genscavenge.ChunkedImageHeapPartition
            getfield com.oracle.svm.core.genscavenge.ChunkedImageHeapPartition.lastObject:Ljava/lang/Object;
        14: .line 100
            aload 0 /* this */
            invokevirtual com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter.getWritableReference:()Lcom/oracle/svm/core/genscavenge/AbstractImageHeapLayouter$AbstractImageHeapPartition;
            checkcast com.oracle.svm.core.genscavenge.ChunkedImageHeapPartition
            getfield com.oracle.svm.core.genscavenge.ChunkedImageHeapPartition.firstObject:Ljava/lang/Object;
            aload 0 /* this */
            invokevirtual com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter.getWritableReference:()Lcom/oracle/svm/core/genscavenge/AbstractImageHeapLayouter$AbstractImageHeapPartition;
            checkcast com.oracle.svm.core.genscavenge.ChunkedImageHeapPartition
            getfield com.oracle.svm.core.genscavenge.ChunkedImageHeapPartition.lastObject:Ljava/lang/Object;
            aload 0 /* this */
            invokevirtual com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter.getWritableHuge:()Lcom/oracle/svm/core/genscavenge/AbstractImageHeapLayouter$AbstractImageHeapPartition;
            checkcast com.oracle.svm.core.genscavenge.ChunkedImageHeapPartition
            getfield com.oracle.svm.core.genscavenge.ChunkedImageHeapPartition.firstObject:Ljava/lang/Object;
            aload 0 /* this */
            invokevirtual com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter.getWritableHuge:()Lcom/oracle/svm/core/genscavenge/AbstractImageHeapLayouter$AbstractImageHeapPartition;
            checkcast com.oracle.svm.core.genscavenge.ChunkedImageHeapPartition
            getfield com.oracle.svm.core.genscavenge.ChunkedImageHeapPartition.lastObject:Ljava/lang/Object;
        15: .line 101
            aload 0 /* this */
            invokevirtual com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter.getReadOnlyHuge:()Lcom/oracle/svm/core/genscavenge/AbstractImageHeapLayouter$AbstractImageHeapPartition;
            checkcast com.oracle.svm.core.genscavenge.ChunkedImageHeapPartition
            getfield com.oracle.svm.core.genscavenge.ChunkedImageHeapPartition.firstObject:Ljava/lang/Object;
            aload 0 /* this */
            invokevirtual com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter.getReadOnlyHuge:()Lcom/oracle/svm/core/genscavenge/AbstractImageHeapLayouter$AbstractImageHeapPartition;
            checkcast com.oracle.svm.core.genscavenge.ChunkedImageHeapPartition
            getfield com.oracle.svm.core.genscavenge.ChunkedImageHeapPartition.lastObject:Ljava/lang/Object;
            lload 2 /* writableBegin */
            lload 4 /* firstWritableUnalignedChunk */
            iload 1 /* dynamicHubCount */
        16: .line 98
            invokevirtual com.oracle.svm.core.genscavenge.ImageHeapInfo.initialize:(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;JJI)V
        17: .line 103
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter.startOffset:J
            lload 2 /* writableBegin */
            invokevirtual com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter.createLayoutInfo:(JJ)Lcom/oracle/svm/core/image/ImageHeapLayoutInfo;
            areturn
        end local 4 // long firstWritableUnalignedChunk
        end local 2 // long writableBegin
        end local 1 // int dynamicHubCount
        end local 0 // com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter this
      LocalVariableTable:
        Start  End  Slot                         Name  Signature
            0   18     0                         this  Lcom/oracle/svm/core/genscavenge/ChunkedImageHeapLayouter;
            0   18     1              dynamicHubCount  I
            1   18     2                writableBegin  J
            3    7     4                        chunk  Lcom/oracle/svm/core/genscavenge/ChunkedImageHeapAllocator$AlignedChunk;
            9   18     4  firstWritableUnalignedChunk  J
           10   12     6                        chunk  Lcom/oracle/svm/core/genscavenge/ChunkedImageHeapAllocator$UnalignedChunk;
    MethodParameters:
                 Name  Flags
      dynamicHubCount  

  public void writeMetadata(java.nio.ByteBuffer, long);
    descriptor: (Ljava/nio/ByteBuffer;J)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=7, args_size=3
        start local 0 // com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter this
        start local 1 // java.nio.ByteBuffer imageHeapBytes
        start local 2 // long imageHeapOffsetInBuffer
         0: .line 108
            lload 2 /* imageHeapOffsetInBuffer */
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter.startOffset:J
            lsub
            lstore 4 /* layoutToBufferOffsetAddend */
        start local 4 // long layoutToBufferOffsetAddend
         1: .line 109
            getstatic com.oracle.svm.core.SubstrateUtil.HOSTED:Z
            ifeq 2
            new com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter
            dup
            aload 1 /* imageHeapBytes */
            lload 4 /* layoutToBufferOffsetAddend */
            invokespecial com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.<init>:(Ljava/nio/ByteBuffer;J)V
            goto 3
         2: .line 110
      StackMap locals: long
      StackMap stack:
            new com.oracle.svm.core.genscavenge.RuntimeImageHeapChunkWriter
            dup
            aload 1 /* imageHeapBytes */
            lload 4 /* layoutToBufferOffsetAddend */
            invokespecial com.oracle.svm.core.genscavenge.RuntimeImageHeapChunkWriter.<init>:(Ljava/nio/ByteBuffer;J)V
         3: .line 109
      StackMap locals:
      StackMap stack: com.oracle.svm.core.genscavenge.ImageHeapChunkWriter
            astore 6 /* writer */
        start local 6 // com.oracle.svm.core.genscavenge.ImageHeapChunkWriter writer
         4: .line 111
            aload 6 /* writer */
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter.allocator:Lcom/oracle/svm/core/genscavenge/ChunkedImageHeapAllocator;
            invokevirtual com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator.getAlignedChunks:()Ljava/util/List;
            invokestatic com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter.writeHeaders:(Lcom/oracle/svm/core/genscavenge/ImageHeapChunkWriter;Ljava/util/List;)V
         5: .line 112
            aload 6 /* writer */
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter.allocator:Lcom/oracle/svm/core/genscavenge/ChunkedImageHeapAllocator;
            invokevirtual com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator.getUnalignedChunks:()Ljava/util/List;
            invokestatic com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter.writeHeaders:(Lcom/oracle/svm/core/genscavenge/ImageHeapChunkWriter;Ljava/util/List;)V
         6: .line 113
            return
        end local 6 // com.oracle.svm.core.genscavenge.ImageHeapChunkWriter writer
        end local 4 // long layoutToBufferOffsetAddend
        end local 2 // long imageHeapOffsetInBuffer
        end local 1 // java.nio.ByteBuffer imageHeapBytes
        end local 0 // com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter this
      LocalVariableTable:
        Start  End  Slot                        Name  Signature
            0    7     0                        this  Lcom/oracle/svm/core/genscavenge/ChunkedImageHeapLayouter;
            0    7     1              imageHeapBytes  Ljava/nio/ByteBuffer;
            0    7     2     imageHeapOffsetInBuffer  J
            1    7     4  layoutToBufferOffsetAddend  J
            4    7     6                      writer  Lcom/oracle/svm/core/genscavenge/ImageHeapChunkWriter;
    MethodParameters:
                         Name  Flags
      imageHeapBytes           
      imageHeapOffsetInBuffer  

  private static void writeHeaders(com.oracle.svm.core.genscavenge.ImageHeapChunkWriter, java.util.List<? extends com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$Chunk>);
    descriptor: (Lcom/oracle/svm/core/genscavenge/ImageHeapChunkWriter;Ljava/util/List;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=6, args_size=2
        start local 0 // com.oracle.svm.core.genscavenge.ImageHeapChunkWriter writer
        start local 1 // java.util.List chunks
         0: .line 116
            aconst_null
            astore 2 /* previous */
        start local 2 // com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$Chunk previous
         1: .line 117
            aconst_null
            astore 3 /* current */
        start local 3 // com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$Chunk current
         2: .line 118
            aload 1 /* chunks */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 5
            goto 7
      StackMap locals: com.oracle.svm.core.genscavenge.ImageHeapChunkWriter java.util.List com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$Chunk com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$Chunk top java.util.Iterator
      StackMap stack:
         3: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$Chunk
            astore 4 /* next */
        start local 4 // com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$Chunk next
         4: .line 119
            aload 0 /* writer */
            aload 2 /* previous */
            aload 3 /* current */
            aload 4 /* next */
            invokestatic com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter.writeHeader:(Lcom/oracle/svm/core/genscavenge/ImageHeapChunkWriter;Lcom/oracle/svm/core/genscavenge/ChunkedImageHeapAllocator$Chunk;Lcom/oracle/svm/core/genscavenge/ChunkedImageHeapAllocator$Chunk;Lcom/oracle/svm/core/genscavenge/ChunkedImageHeapAllocator$Chunk;)V
         5: .line 120
            aload 3 /* current */
            astore 2 /* previous */
         6: .line 121
            aload 4 /* next */
            astore 3 /* current */
        end local 4 // com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$Chunk next
         7: .line 118
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
         8: .line 123
            aload 0 /* writer */
            aload 2 /* previous */
            aload 3 /* current */
            aconst_null
            invokestatic com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter.writeHeader:(Lcom/oracle/svm/core/genscavenge/ImageHeapChunkWriter;Lcom/oracle/svm/core/genscavenge/ChunkedImageHeapAllocator$Chunk;Lcom/oracle/svm/core/genscavenge/ChunkedImageHeapAllocator$Chunk;Lcom/oracle/svm/core/genscavenge/ChunkedImageHeapAllocator$Chunk;)V
         9: .line 124
            return
        end local 3 // com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$Chunk current
        end local 2 // com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$Chunk previous
        end local 1 // java.util.List chunks
        end local 0 // com.oracle.svm.core.genscavenge.ImageHeapChunkWriter writer
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   10     0    writer  Lcom/oracle/svm/core/genscavenge/ImageHeapChunkWriter;
            0   10     1    chunks  Ljava/util/List<+Lcom/oracle/svm/core/genscavenge/ChunkedImageHeapAllocator$Chunk;>;
            1   10     2  previous  Lcom/oracle/svm/core/genscavenge/ChunkedImageHeapAllocator$Chunk;
            2   10     3   current  Lcom/oracle/svm/core/genscavenge/ChunkedImageHeapAllocator$Chunk;
            4    7     4      next  Lcom/oracle/svm/core/genscavenge/ChunkedImageHeapAllocator$Chunk;
    Signature: (Lcom/oracle/svm/core/genscavenge/ImageHeapChunkWriter;Ljava/util/List<+Lcom/oracle/svm/core/genscavenge/ChunkedImageHeapAllocator$Chunk;>;)V
    MethodParameters:
        Name  Flags
      writer  
      chunks  

  private static void writeHeader(com.oracle.svm.core.genscavenge.ImageHeapChunkWriter, com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$Chunk, com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$Chunk, com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$Chunk);
    descriptor: (Lcom/oracle/svm/core/genscavenge/ImageHeapChunkWriter;Lcom/oracle/svm/core/genscavenge/ChunkedImageHeapAllocator$Chunk;Lcom/oracle/svm/core/genscavenge/ChunkedImageHeapAllocator$Chunk;Lcom/oracle/svm/core/genscavenge/ChunkedImageHeapAllocator$Chunk;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=10, locals=16, args_size=4
        start local 0 // com.oracle.svm.core.genscavenge.ImageHeapChunkWriter writer
        start local 1 // com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$Chunk previous
        start local 2 // com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$Chunk current
        start local 3 // com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$Chunk next
         0: .line 127
            aload 2 /* current */
            ifnull 20
         1: .line 128
            aload 1 /* previous */
            ifnull 2
            aload 1 /* previous */
            invokevirtual com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$Chunk.getBegin:()J
            aload 2 /* current */
            invokevirtual com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$Chunk.getBegin:()J
            lsub
            goto 3
      StackMap locals:
      StackMap stack:
         2: lconst_0
      StackMap locals:
      StackMap stack: long
         3: lstore 4 /* offsetToPrevious */
        start local 4 // long offsetToPrevious
         4: .line 129
            aload 3 /* next */
            ifnull 5
            aload 3 /* next */
            invokevirtual com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$Chunk.getBegin:()J
            aload 2 /* current */
            invokevirtual com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$Chunk.getBegin:()J
            lsub
            goto 6
      StackMap locals: long
      StackMap stack:
         5: lconst_0
      StackMap locals:
      StackMap stack: long
         6: lstore 6 /* offsetToNext */
        start local 6 // long offsetToNext
         7: .line 130
            aload 2 /* current */
            invokevirtual com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$Chunk.getBegin:()J
            invokestatic org.graalvm.compiler.core.common.NumUtil.safeToInt:(J)I
            istore 8 /* chunkPosition */
        start local 8 // int chunkPosition
         8: .line 131
            aload 2 /* current */
            instanceof com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$AlignedChunk
            ifeq 18
         9: .line 132
            aload 2 /* current */
            checkcast com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$AlignedChunk
            astore 9 /* aligned */
        start local 9 // com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$AlignedChunk aligned
        10: .line 133
            aload 0 /* writer */
            iload 8 /* chunkPosition */
            aload 2 /* current */
            invokevirtual com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$Chunk.getTopOffset:()J
            aload 2 /* current */
            invokevirtual com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$Chunk.getEndOffset:()J
            lload 4 /* offsetToPrevious */
            lload 6 /* offsetToNext */
            invokeinterface com.oracle.svm.core.genscavenge.ImageHeapChunkWriter.initializeAlignedChunk:(IJJJJ)V
        11: .line 134
            aload 9 /* aligned */
            invokevirtual com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$AlignedChunk.getObjects:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 11
            goto 16
      StackMap locals: com.oracle.svm.core.genscavenge.ImageHeapChunkWriter com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$Chunk com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$Chunk com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$Chunk long long int com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$AlignedChunk top java.util.Iterator
      StackMap stack:
        12: aload 11
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.svm.core.image.ImageHeapObject
            astore 10 /* obj */
        start local 10 // com.oracle.svm.core.image.ImageHeapObject obj
        13: .line 135
            aload 10 /* obj */
            invokeinterface com.oracle.svm.core.image.ImageHeapObject.getOffset:()J
            iload 8 /* chunkPosition */
            i2l
            lsub
            lstore 12 /* offsetInChunk */
        start local 12 // long offsetInChunk
        14: .line 136
            lload 12 /* offsetInChunk */
            aload 10 /* obj */
            invokeinterface com.oracle.svm.core.image.ImageHeapObject.getSize:()J
            ladd
            lstore 14 /* endOffsetInChunk */
        start local 14 // long endOffsetInChunk
        15: .line 137
            aload 0 /* writer */
            iload 8 /* chunkPosition */
            lload 12 /* offsetInChunk */
            lload 14 /* endOffsetInChunk */
            invokeinterface com.oracle.svm.core.genscavenge.ImageHeapChunkWriter.insertIntoAlignedChunkFirstObjectTable:(IJJ)V
        end local 14 // long endOffsetInChunk
        end local 12 // long offsetInChunk
        end local 10 // com.oracle.svm.core.image.ImageHeapObject obj
        16: .line 134
      StackMap locals:
      StackMap stack:
            aload 11
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 12
        end local 9 // com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$AlignedChunk aligned
        17: .line 139
            goto 20
        18: .line 140
      StackMap locals: com.oracle.svm.core.genscavenge.ImageHeapChunkWriter com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$Chunk com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$Chunk com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$Chunk long long int
      StackMap stack:
            getstatic com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter.$assertionsDisabled:Z
            ifne 19
            aload 2 /* current */
            instanceof com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$UnalignedChunk
            ifne 19
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        19: .line 141
      StackMap locals:
      StackMap stack:
            aload 0 /* writer */
            iload 8 /* chunkPosition */
            aload 2 /* current */
            invokevirtual com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$Chunk.getTopOffset:()J
            aload 2 /* current */
            invokevirtual com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$Chunk.getEndOffset:()J
            lload 4 /* offsetToPrevious */
            lload 6 /* offsetToNext */
            invokeinterface com.oracle.svm.core.genscavenge.ImageHeapChunkWriter.initializeUnalignedChunk:(IJJJJ)V
        end local 8 // int chunkPosition
        end local 6 // long offsetToNext
        end local 4 // long offsetToPrevious
        20: .line 144
      StackMap locals:
      StackMap stack:
            return
        end local 3 // com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$Chunk next
        end local 2 // com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$Chunk current
        end local 1 // com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$Chunk previous
        end local 0 // com.oracle.svm.core.genscavenge.ImageHeapChunkWriter writer
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   21     0            writer  Lcom/oracle/svm/core/genscavenge/ImageHeapChunkWriter;
            0   21     1          previous  Lcom/oracle/svm/core/genscavenge/ChunkedImageHeapAllocator$Chunk;
            0   21     2           current  Lcom/oracle/svm/core/genscavenge/ChunkedImageHeapAllocator$Chunk;
            0   21     3              next  Lcom/oracle/svm/core/genscavenge/ChunkedImageHeapAllocator$Chunk;
            4   20     4  offsetToPrevious  J
            7   20     6      offsetToNext  J
            8   20     8     chunkPosition  I
           10   17     9           aligned  Lcom/oracle/svm/core/genscavenge/ChunkedImageHeapAllocator$AlignedChunk;
           13   16    10               obj  Lcom/oracle/svm/core/image/ImageHeapObject;
           14   16    12     offsetInChunk  J
           15   16    14  endOffsetInChunk  J
    MethodParameters:
          Name  Flags
      writer    
      previous  
      current   
      next      

  protected com.oracle.svm.core.genscavenge.AbstractImageHeapLayouter$AbstractImageHeapPartition[] createPartitionsArray(int);
    descriptor: (I)[Lcom/oracle/svm/core/genscavenge/AbstractImageHeapLayouter$AbstractImageHeapPartition;
    flags: (0x1044) ACC_PROTECTED, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            iload 1
            invokevirtual com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter.createPartitionsArray:(I)[Lcom/oracle/svm/core/genscavenge/ChunkedImageHeapPartition;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  protected com.oracle.svm.core.genscavenge.AbstractImageHeapLayouter$AbstractImageHeapPartition createPartition(java.lang.String, boolean, boolean, boolean);
    descriptor: (Ljava/lang/String;ZZZ)Lcom/oracle/svm/core/genscavenge/AbstractImageHeapLayouter$AbstractImageHeapPartition;
    flags: (0x1044) ACC_PROTECTED, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=5, locals=5, args_size=5
         0: .line 1
            aload 0
            aload 1
            iload 2
            iload 3
            iload 4
            invokevirtual com.oracle.svm.core.genscavenge.ChunkedImageHeapLayouter.createPartition:(Ljava/lang/String;ZZZ)Lcom/oracle/svm/core/genscavenge/ChunkedImageHeapPartition;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
Signature: Lcom/oracle/svm/core/genscavenge/AbstractImageHeapLayouter<Lcom/oracle/svm/core/genscavenge/ChunkedImageHeapPartition;>;
SourceFile: "ChunkedImageHeapLayouter.java"
InnerClasses:
  public abstract AbstractImageHeapPartition = com.oracle.svm.core.genscavenge.AbstractImageHeapLayouter$AbstractImageHeapPartition of com.oracle.svm.core.genscavenge.AbstractImageHeapLayouter
  final AlignedChunk = com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$AlignedChunk of com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator
  abstract Chunk = com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$Chunk of com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator
  final UnalignedChunk = com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator$UnalignedChunk of com.oracle.svm.core.genscavenge.ChunkedImageHeapAllocator