public class com.oracle.svm.core.heap.InstanceReferenceMapEncoder extends com.oracle.svm.core.heap.ReferenceMapEncoder
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.svm.core.heap.InstanceReferenceMapEncoder
  super_class: com.oracle.svm.core.heap.ReferenceMapEncoder
{
  public static final int MAP_HEADER_SIZE;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 4

  public static final int MAP_ENTRY_SIZE;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 8

  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 49
            ldc Lcom/oracle/svm/core/heap/InstanceReferenceMapEncoder;
            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.heap.InstanceReferenceMapEncoder.$assertionsDisabled:Z
         3: .line 51
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.svm.core.heap.InstanceReferenceMapEncoder this
         0: .line 49
            aload 0 /* this */
            invokespecial com.oracle.svm.core.heap.ReferenceMapEncoder.<init>:()V
            return
        end local 0 // com.oracle.svm.core.heap.InstanceReferenceMapEncoder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/svm/core/heap/InstanceReferenceMapEncoder;

  protected void encodeAll(java.util.List<java.util.Map$Entry<com.oracle.svm.core.heap.ReferenceMapEncoder$Input, java.lang.Long>>);
    descriptor: (Ljava/util/List;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // com.oracle.svm.core.heap.InstanceReferenceMapEncoder this
        start local 1 // java.util.List sortedEntries
         0: .line 59
            getstatic com.oracle.svm.core.heap.InstanceReferenceMapEncoder.$assertionsDisabled:Z
            ifne 1
            lconst_0
            aload 0 /* this */
            getfield com.oracle.svm.core.heap.InstanceReferenceMapEncoder.writeBuffer:Lorg/graalvm/compiler/core/common/util/UnsafeArrayTypeWriter;
            invokevirtual org.graalvm.compiler.core.common.util.UnsafeArrayTypeWriter.getBytesWritten:()J
            lcmp
            ifeq 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 60
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.svm.core.heap.InstanceReferenceMapEncoder.writeBuffer:Lorg/graalvm/compiler/core/common/util/UnsafeArrayTypeWriter;
            lconst_0
            invokevirtual org.graalvm.compiler.core.common.util.UnsafeArrayTypeWriter.putS4:(J)V
         2: .line 62
            aload 1 /* sortedEntries */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 6
      StackMap locals: com.oracle.svm.core.heap.InstanceReferenceMapEncoder java.util.List top java.util.Iterator
      StackMap stack:
         3: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 2 /* entry */
        start local 2 // java.util.Map$Entry entry
         4: .line 63
            aload 2 /* entry */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast com.oracle.svm.core.heap.ReferenceMapEncoder$Input
            astore 4 /* map */
        start local 4 // com.oracle.svm.core.heap.ReferenceMapEncoder$Input map
         5: .line 64
            aload 0 /* this */
            getfield com.oracle.svm.core.heap.InstanceReferenceMapEncoder.encodings:Ljava/util/HashMap;
            aload 4 /* map */
            aload 0 /* this */
            aload 4 /* map */
            invokeinterface com.oracle.svm.core.heap.ReferenceMapEncoder$Input.getOffsets:()Lcom/oracle/svm/core/heap/ReferenceMapEncoder$OffsetIterator;
            invokevirtual com.oracle.svm.core.heap.InstanceReferenceMapEncoder.encode:(Lcom/oracle/svm/core/heap/ReferenceMapEncoder$OffsetIterator;)J
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            invokevirtual java.util.HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 4 // com.oracle.svm.core.heap.ReferenceMapEncoder$Input map
        end local 2 // java.util.Map$Entry entry
         6: .line 62
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
         7: .line 66
            return
        end local 1 // java.util.List sortedEntries
        end local 0 // com.oracle.svm.core.heap.InstanceReferenceMapEncoder this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    8     0           this  Lcom/oracle/svm/core/heap/InstanceReferenceMapEncoder;
            0    8     1  sortedEntries  Ljava/util/List<Ljava/util/Map$Entry<Lcom/oracle/svm/core/heap/ReferenceMapEncoder$Input;Ljava/lang/Long;>;>;
            4    6     2          entry  Ljava/util/Map$Entry<Lcom/oracle/svm/core/heap/ReferenceMapEncoder$Input;Ljava/lang/Long;>;
            5    6     4            map  Lcom/oracle/svm/core/heap/ReferenceMapEncoder$Input;
    Signature: (Ljava/util/List<Ljava/util/Map$Entry<Lcom/oracle/svm/core/heap/ReferenceMapEncoder$Input;Ljava/lang/Long;>;>;)V
    MethodParameters:
               Name  Flags
      sortedEntries  

  private long encode(com.oracle.svm.core.heap.ReferenceMapEncoder$OffsetIterator);
    descriptor: (Lcom/oracle/svm/core/heap/ReferenceMapEncoder$OffsetIterator;)J
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=11, args_size=2
        start local 0 // com.oracle.svm.core.heap.InstanceReferenceMapEncoder this
        start local 1 // com.oracle.svm.core.heap.ReferenceMapEncoder$OffsetIterator offsets
         0: .line 69
            aload 0 /* this */
            getfield com.oracle.svm.core.heap.InstanceReferenceMapEncoder.writeBuffer:Lorg/graalvm/compiler/core/common/util/UnsafeArrayTypeWriter;
            invokevirtual org.graalvm.compiler.core.common.util.UnsafeArrayTypeWriter.getBytesWritten:()J
            lstore 2 /* startIndex */
        start local 2 // long startIndex
         1: .line 71
            aload 0 /* this */
            getfield com.oracle.svm.core.heap.InstanceReferenceMapEncoder.writeBuffer:Lorg/graalvm/compiler/core/common/util/UnsafeArrayTypeWriter;
            ldc -1
            invokevirtual org.graalvm.compiler.core.common.util.UnsafeArrayTypeWriter.putS4:(J)V
         2: .line 73
            iconst_0
            istore 4 /* entries */
        start local 4 // int entries
         3: .line 74
            iconst_0
            istore 5 /* adjacentReferences */
        start local 5 // int adjacentReferences
         4: .line 75
            iconst_0
            istore 6 /* offset */
        start local 6 // int offset
         5: .line 77
            aload 1 /* offsets */
            invokeinterface com.oracle.svm.core.heap.ReferenceMapEncoder$OffsetIterator.hasNext:()Z
            ifeq 26
         6: .line 78
            invokestatic com.oracle.svm.core.config.ConfigurationValues.getObjectLayout:()Lcom/oracle/svm/core/config/ObjectLayout;
            invokevirtual com.oracle.svm.core.config.ObjectLayout.getReferenceSize:()I
            istore 7 /* referenceSize */
        start local 7 // int referenceSize
         7: .line 79
            aload 1 /* offsets */
            invokeinterface com.oracle.svm.core.heap.ReferenceMapEncoder$OffsetIterator.isNextCompressed:()Z
            istore 8 /* compressed */
        start local 8 // boolean compressed
         8: .line 80
            iconst_0
            istore 9 /* nextAdjacentOffset */
        start local 9 // int nextAdjacentOffset
         9: .line 82
      StackMap locals: com.oracle.svm.core.heap.InstanceReferenceMapEncoder com.oracle.svm.core.heap.ReferenceMapEncoder$OffsetIterator long int int int int int int
      StackMap stack:
            getstatic com.oracle.svm.core.heap.InstanceReferenceMapEncoder.$assertionsDisabled:Z
            ifne 10
            aload 1 /* offsets */
            invokeinterface com.oracle.svm.core.heap.ReferenceMapEncoder$OffsetIterator.isNextDerived:()Z
            ifeq 10
            new java.lang.AssertionError
            dup
            ldc "derived references are not located within objects"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        10: .line 83
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.svm.core.heap.InstanceReferenceMapEncoder.$assertionsDisabled:Z
            ifne 11
            iload 8 /* compressed */
            aload 1 /* offsets */
            invokeinterface com.oracle.svm.core.heap.ReferenceMapEncoder$OffsetIterator.isNextCompressed:()Z
            if_icmpeq 11
            new java.lang.AssertionError
            dup
            ldc "compressed and uncompressed references must not be mixed"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        11: .line 85
      StackMap locals:
      StackMap stack:
            aload 1 /* offsets */
            invokeinterface com.oracle.svm.core.heap.ReferenceMapEncoder$OffsetIterator.nextInt:()I
            istore 10 /* nextOffset */
        start local 10 // int nextOffset
        12: .line 86
            iload 10 /* nextOffset */
            iload 9 /* nextAdjacentOffset */
            if_icmpne 15
        13: .line 87
            iinc 5 /* adjacentReferences */ 1
        14: .line 88
            goto 21
        15: .line 89
      StackMap locals: int
      StackMap stack:
            getstatic com.oracle.svm.core.heap.InstanceReferenceMapEncoder.$assertionsDisabled:Z
            ifne 16
            iload 10 /* nextOffset */
            iload 9 /* nextAdjacentOffset */
            if_icmpge 16
            new java.lang.AssertionError
            dup
            ldc "values must be strictly increasing"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        16: .line 90
      StackMap locals:
      StackMap stack:
            iload 5 /* adjacentReferences */
            ifle 19
        17: .line 92
            aload 0 /* this */
            iload 6 /* offset */
            iload 5 /* adjacentReferences */
            invokevirtual com.oracle.svm.core.heap.InstanceReferenceMapEncoder.encodeRun:(II)V
        18: .line 93
            iinc 4 /* entries */ 1
        19: .line 96
      StackMap locals:
      StackMap stack:
            iload 10 /* nextOffset */
            istore 6 /* offset */
        20: .line 97
            iconst_1
            istore 5 /* adjacentReferences */
        21: .line 100
      StackMap locals:
      StackMap stack:
            iload 10 /* nextOffset */
            iload 7 /* referenceSize */
            iadd
            istore 9 /* nextAdjacentOffset */
        end local 10 // int nextOffset
        22: .line 101
            aload 1 /* offsets */
            invokeinterface com.oracle.svm.core.heap.ReferenceMapEncoder$OffsetIterator.hasNext:()Z
            ifne 9
        23: .line 103
            iload 5 /* adjacentReferences */
            ifle 26
        24: .line 104
            aload 0 /* this */
            iload 6 /* offset */
            iload 5 /* adjacentReferences */
            invokevirtual com.oracle.svm.core.heap.InstanceReferenceMapEncoder.encodeRun:(II)V
        25: .line 105
            iinc 4 /* entries */ 1
        end local 9 // int nextAdjacentOffset
        end local 8 // boolean compressed
        end local 7 // int referenceSize
        26: .line 109
      StackMap locals: com.oracle.svm.core.heap.InstanceReferenceMapEncoder com.oracle.svm.core.heap.ReferenceMapEncoder$OffsetIterator long int int int
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.svm.core.heap.InstanceReferenceMapEncoder.writeBuffer:Lorg/graalvm/compiler/core/common/util/UnsafeArrayTypeWriter;
            iload 4 /* entries */
            i2l
            lload 2 /* startIndex */
            invokevirtual org.graalvm.compiler.core.common.util.UnsafeArrayTypeWriter.patchS4:(JJ)V
        27: .line 110
            lload 2 /* startIndex */
            lreturn
        end local 6 // int offset
        end local 5 // int adjacentReferences
        end local 4 // int entries
        end local 2 // long startIndex
        end local 1 // com.oracle.svm.core.heap.ReferenceMapEncoder$OffsetIterator offsets
        end local 0 // com.oracle.svm.core.heap.InstanceReferenceMapEncoder this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   28     0                this  Lcom/oracle/svm/core/heap/InstanceReferenceMapEncoder;
            0   28     1             offsets  Lcom/oracle/svm/core/heap/ReferenceMapEncoder$OffsetIterator;
            1   28     2          startIndex  J
            3   28     4             entries  I
            4   28     5  adjacentReferences  I
            5   28     6              offset  I
            7   26     7       referenceSize  I
            8   26     8          compressed  Z
            9   26     9  nextAdjacentOffset  I
           12   22    10          nextOffset  I
    MethodParameters:
         Name  Flags
      offsets  

  private void encodeRun(int, int);
    descriptor: (II)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.oracle.svm.core.heap.InstanceReferenceMapEncoder this
        start local 1 // int offset
        start local 2 // int refsCount
         0: .line 114
            getstatic com.oracle.svm.core.heap.InstanceReferenceMapEncoder.$assertionsDisabled:Z
            ifne 2
            iload 1 /* offset */
            iflt 1
            iload 2 /* refsCount */
            ifge 2
      StackMap locals:
      StackMap stack:
         1: new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 115
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.svm.core.heap.InstanceReferenceMapEncoder.writeBuffer:Lorg/graalvm/compiler/core/common/util/UnsafeArrayTypeWriter;
            iload 1 /* offset */
            i2l
            invokevirtual org.graalvm.compiler.core.common.util.UnsafeArrayTypeWriter.putS4:(J)V
         3: .line 116
            aload 0 /* this */
            getfield com.oracle.svm.core.heap.InstanceReferenceMapEncoder.writeBuffer:Lorg/graalvm/compiler/core/common/util/UnsafeArrayTypeWriter;
            iload 2 /* refsCount */
            i2l
            invokevirtual org.graalvm.compiler.core.common.util.UnsafeArrayTypeWriter.putU4:(J)V
         4: .line 117
            return
        end local 2 // int refsCount
        end local 1 // int offset
        end local 0 // com.oracle.svm.core.heap.InstanceReferenceMapEncoder this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    5     0       this  Lcom/oracle/svm/core/heap/InstanceReferenceMapEncoder;
            0    5     1     offset  I
            0    5     2  refsCount  I
    MethodParameters:
           Name  Flags
      offset     
      refsCount  
}
SourceFile: "InstanceReferenceMapEncoder.java"
InnerClasses:
  public abstract Input = com.oracle.svm.core.heap.ReferenceMapEncoder$Input of com.oracle.svm.core.heap.ReferenceMapEncoder
  public abstract OffsetIterator = com.oracle.svm.core.heap.ReferenceMapEncoder$OffsetIterator of com.oracle.svm.core.heap.ReferenceMapEncoder
  public abstract Entry = java.util.Map$Entry of java.util.Map