class jdk.nashorn.internal.ir.debug.ObjectSizeCalculator$ClassSizeInfo
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: jdk.nashorn.internal.ir.debug.ObjectSizeCalculator$ClassSizeInfo
  super_class: java.lang.Object
{
  private final long objectSize;
    descriptor: J
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  private final java.lang.reflect.Field[] referenceFields;
    descriptor: [Ljava/lang/reflect/Field;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  final jdk.nashorn.internal.ir.debug.ObjectSizeCalculator this$0;
    descriptor: Ljdk/nashorn/internal/ir/debug/ObjectSizeCalculator;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  public void <init>(java.lang.Class<?>);
    descriptor: (Ljdk/nashorn/internal/ir/debug/ObjectSizeCalculator;Ljava/lang/Class;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=11, args_size=3
        start local 0 // jdk.nashorn.internal.ir.debug.ObjectSizeCalculator$ClassSizeInfo this
        start local 2 // java.lang.Class clazz
         0: .line 306
            aload 0 /* this */
            aload 1
            putfield jdk.nashorn.internal.ir.debug.ObjectSizeCalculator$ClassSizeInfo.this$0:Ljdk/nashorn/internal/ir/debug/ObjectSizeCalculator;
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 307
            lconst_0
            lstore 3 /* newFieldsSize */
        start local 3 // long newFieldsSize
         2: .line 308
            new java.util.LinkedList
            dup
            invokespecial java.util.LinkedList.<init>:()V
            astore 5 /* newReferenceFields */
        start local 5 // java.util.List newReferenceFields
         3: .line 309
            aload 2 /* clazz */
            invokevirtual java.lang.Class.getDeclaredFields:()[Ljava/lang/reflect/Field;
            dup
            astore 9
            arraylength
            istore 8
            iconst_0
            istore 7
            goto 15
      StackMap locals: jdk.nashorn.internal.ir.debug.ObjectSizeCalculator$ClassSizeInfo jdk.nashorn.internal.ir.debug.ObjectSizeCalculator java.lang.Class long java.util.List top int int java.lang.reflect.Field[]
      StackMap stack:
         4: aload 9
            iload 7
            aaload
            astore 6 /* f */
        start local 6 // java.lang.reflect.Field f
         5: .line 310
            aload 6 /* f */
            invokevirtual java.lang.reflect.Field.getModifiers:()I
            invokestatic java.lang.reflect.Modifier.isStatic:(I)Z
            ifeq 7
         6: .line 311
            goto 14
         7: .line 313
      StackMap locals: jdk.nashorn.internal.ir.debug.ObjectSizeCalculator$ClassSizeInfo jdk.nashorn.internal.ir.debug.ObjectSizeCalculator java.lang.Class long java.util.List java.lang.reflect.Field int int java.lang.reflect.Field[]
      StackMap stack:
            aload 6 /* f */
            invokevirtual java.lang.reflect.Field.getType:()Ljava/lang/Class;
            astore 10 /* type */
        start local 10 // java.lang.Class type
         8: .line 314
            aload 10 /* type */
            invokevirtual java.lang.Class.isPrimitive:()Z
            ifeq 11
         9: .line 315
            lload 3 /* newFieldsSize */
            aload 10 /* type */
            invokestatic jdk.nashorn.internal.ir.debug.ObjectSizeCalculator.getPrimitiveFieldSize:(Ljava/lang/Class;)J
            ladd
            lstore 3 /* newFieldsSize */
        10: .line 316
            goto 14
        11: .line 317
      StackMap locals: java.lang.Class
      StackMap stack:
            aload 6 /* f */
            iconst_1
            invokevirtual java.lang.reflect.Field.setAccessible:(Z)V
        12: .line 318
            aload 5 /* newReferenceFields */
            aload 6 /* f */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        13: .line 319
            lload 3 /* newFieldsSize */
            aload 1
            getfield jdk.nashorn.internal.ir.debug.ObjectSizeCalculator.referenceSize:I
            i2l
            ladd
            lstore 3 /* newFieldsSize */
        end local 10 // java.lang.Class type
        end local 6 // java.lang.reflect.Field f
        14: .line 309
      StackMap locals: jdk.nashorn.internal.ir.debug.ObjectSizeCalculator$ClassSizeInfo jdk.nashorn.internal.ir.debug.ObjectSizeCalculator java.lang.Class long java.util.List top int int java.lang.reflect.Field[]
      StackMap stack:
            iinc 7 1
      StackMap locals:
      StackMap stack:
        15: iload 7
            iload 8
            if_icmplt 4
        16: .line 322
            aload 2 /* clazz */
            invokevirtual java.lang.Class.getSuperclass:()Ljava/lang/Class;
            astore 6 /* superClass */
        start local 6 // java.lang.Class superClass
        17: .line 323
            aload 6 /* superClass */
            ifnull 21
        18: .line 324
            aload 1
            aload 6 /* superClass */
            invokevirtual jdk.nashorn.internal.ir.debug.ObjectSizeCalculator.getClassSizeInfo:(Ljava/lang/Class;)Ljdk/nashorn/internal/ir/debug/ObjectSizeCalculator$ClassSizeInfo;
            astore 7 /* superClassInfo */
        start local 7 // jdk.nashorn.internal.ir.debug.ObjectSizeCalculator$ClassSizeInfo superClassInfo
        19: .line 325
            lload 3 /* newFieldsSize */
            aload 7 /* superClassInfo */
            getfield jdk.nashorn.internal.ir.debug.ObjectSizeCalculator$ClassSizeInfo.fieldsSize:J
            aload 1
            getfield jdk.nashorn.internal.ir.debug.ObjectSizeCalculator.superclassFieldPadding:I
            invokestatic jdk.nashorn.internal.ir.debug.ObjectSizeCalculator.roundTo:(JI)J
            ladd
            lstore 3 /* newFieldsSize */
        20: .line 326
            aload 5 /* newReferenceFields */
            aload 7 /* superClassInfo */
            getfield jdk.nashorn.internal.ir.debug.ObjectSizeCalculator$ClassSizeInfo.referenceFields:[Ljava/lang/reflect/Field;
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            invokeinterface java.util.List.addAll:(Ljava/util/Collection;)Z
            pop
        end local 7 // jdk.nashorn.internal.ir.debug.ObjectSizeCalculator$ClassSizeInfo superClassInfo
        21: .line 328
      StackMap locals: jdk.nashorn.internal.ir.debug.ObjectSizeCalculator$ClassSizeInfo jdk.nashorn.internal.ir.debug.ObjectSizeCalculator java.lang.Class long java.util.List java.lang.Class
      StackMap stack:
            aload 0 /* this */
            lload 3 /* newFieldsSize */
            putfield jdk.nashorn.internal.ir.debug.ObjectSizeCalculator$ClassSizeInfo.fieldsSize:J
        22: .line 329
            aload 0 /* this */
            aload 1
            getfield jdk.nashorn.internal.ir.debug.ObjectSizeCalculator.objectHeaderSize:I
            i2l
            lload 3 /* newFieldsSize */
            ladd
            aload 1
            getfield jdk.nashorn.internal.ir.debug.ObjectSizeCalculator.objectPadding:I
            invokestatic jdk.nashorn.internal.ir.debug.ObjectSizeCalculator.roundTo:(JI)J
            putfield jdk.nashorn.internal.ir.debug.ObjectSizeCalculator$ClassSizeInfo.objectSize:J
        23: .line 330
            aload 0 /* this */
            aload 5 /* newReferenceFields */
        24: .line 331
            iconst_0
            anewarray java.lang.reflect.Field
        25: .line 330
            invokeinterface java.util.List.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast java.lang.reflect.Field[]
            putfield jdk.nashorn.internal.ir.debug.ObjectSizeCalculator$ClassSizeInfo.referenceFields:[Ljava/lang/reflect/Field;
        26: .line 332
            return
        end local 6 // java.lang.Class superClass
        end local 5 // java.util.List newReferenceFields
        end local 3 // long newFieldsSize
        end local 2 // java.lang.Class clazz
        end local 0 // jdk.nashorn.internal.ir.debug.ObjectSizeCalculator$ClassSizeInfo this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   27     0                this  Ljdk/nashorn/internal/ir/debug/ObjectSizeCalculator$ClassSizeInfo;
            0   27     2               clazz  Ljava/lang/Class<*>;
            2   27     3       newFieldsSize  J
            3   27     5  newReferenceFields  Ljava/util/List<Ljava/lang/reflect/Field;>;
            5   14     6                   f  Ljava/lang/reflect/Field;
            8   14    10                type  Ljava/lang/Class<*>;
           17   27     6          superClass  Ljava/lang/Class<*>;
           19   21     7      superClassInfo  Ljdk/nashorn/internal/ir/debug/ObjectSizeCalculator$ClassSizeInfo;
    Signature: (Ljava/lang/Class<*>;)V
    MethodParameters:
        Name  Flags
      this$0  final
      clazz   final

  void visit(java.lang.Object, jdk.nashorn.internal.ir.debug.ObjectSizeCalculator);
    descriptor: (Ljava/lang/Object;Ljdk/nashorn/internal/ir/debug/ObjectSizeCalculator;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // jdk.nashorn.internal.ir.debug.ObjectSizeCalculator$ClassSizeInfo this
        start local 1 // java.lang.Object obj
        start local 2 // jdk.nashorn.internal.ir.debug.ObjectSizeCalculator calc
         0: .line 335
            aload 2 /* calc */
            aload 1 /* obj */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            aload 0 /* this */
            getfield jdk.nashorn.internal.ir.debug.ObjectSizeCalculator$ClassSizeInfo.objectSize:J
            invokevirtual jdk.nashorn.internal.ir.debug.ObjectSizeCalculator.increaseSize:(Ljava/lang/Class;J)V
         1: .line 336
            aload 0 /* this */
            aload 1 /* obj */
            aload 2 /* calc */
            invokevirtual jdk.nashorn.internal.ir.debug.ObjectSizeCalculator$ClassSizeInfo.enqueueReferencedObjects:(Ljava/lang/Object;Ljdk/nashorn/internal/ir/debug/ObjectSizeCalculator;)V
         2: .line 337
            return
        end local 2 // jdk.nashorn.internal.ir.debug.ObjectSizeCalculator calc
        end local 1 // java.lang.Object obj
        end local 0 // jdk.nashorn.internal.ir.debug.ObjectSizeCalculator$ClassSizeInfo this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljdk/nashorn/internal/ir/debug/ObjectSizeCalculator$ClassSizeInfo;
            0    3     1   obj  Ljava/lang/Object;
            0    3     2  calc  Ljdk/nashorn/internal/ir/debug/ObjectSizeCalculator;
    MethodParameters:
      Name  Flags
      obj   final
      calc  final

  public void enqueueReferencedObjects(java.lang.Object, jdk.nashorn.internal.ir.debug.ObjectSizeCalculator);
    descriptor: (Ljava/lang/Object;Ljdk/nashorn/internal/ir/debug/ObjectSizeCalculator;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=9, args_size=3
        start local 0 // jdk.nashorn.internal.ir.debug.ObjectSizeCalculator$ClassSizeInfo this
        start local 1 // java.lang.Object obj
        start local 2 // jdk.nashorn.internal.ir.debug.ObjectSizeCalculator calc
         0: .line 340
            aload 0 /* this */
            getfield jdk.nashorn.internal.ir.debug.ObjectSizeCalculator$ClassSizeInfo.referenceFields:[Ljava/lang/reflect/Field;
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 11
      StackMap locals: jdk.nashorn.internal.ir.debug.ObjectSizeCalculator$ClassSizeInfo java.lang.Object jdk.nashorn.internal.ir.debug.ObjectSizeCalculator top int int java.lang.reflect.Field[]
      StackMap stack:
         1: aload 6
            iload 4
            aaload
            astore 3 /* f */
        start local 3 // java.lang.reflect.Field f
         2: .line 342
            aload 2 /* calc */
            aload 3 /* f */
            aload 1 /* obj */
            invokevirtual java.lang.reflect.Field.get:(Ljava/lang/Object;)Ljava/lang/Object;
            invokevirtual jdk.nashorn.internal.ir.debug.ObjectSizeCalculator.enqueue:(Ljava/lang/Object;)V
         3: .line 343
            goto 10
      StackMap locals: jdk.nashorn.internal.ir.debug.ObjectSizeCalculator$ClassSizeInfo java.lang.Object jdk.nashorn.internal.ir.debug.ObjectSizeCalculator java.lang.reflect.Field int int java.lang.reflect.Field[]
      StackMap stack: java.lang.IllegalAccessException
         4: astore 7 /* e */
        start local 7 // java.lang.IllegalAccessException e
         5: .line 344
            new java.lang.AssertionError
            dup
         6: .line 345
            new java.lang.StringBuilder
            dup
            ldc "Unexpected denial of access to "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* f */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         7: .line 344
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            astore 8 /* ae */
        start local 8 // java.lang.AssertionError ae
         8: .line 346
            aload 8 /* ae */
            aload 7 /* e */
            invokevirtual java.lang.AssertionError.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
            pop
         9: .line 347
            aload 8 /* ae */
            athrow
        end local 8 // java.lang.AssertionError ae
        end local 7 // java.lang.IllegalAccessException e
        end local 3 // java.lang.reflect.Field f
        10: .line 340
      StackMap locals: jdk.nashorn.internal.ir.debug.ObjectSizeCalculator$ClassSizeInfo java.lang.Object jdk.nashorn.internal.ir.debug.ObjectSizeCalculator top int int java.lang.reflect.Field[]
      StackMap stack:
            iinc 4 1
      StackMap locals:
      StackMap stack:
        11: iload 4
            iload 5
            if_icmplt 1
        12: .line 350
            return
        end local 2 // jdk.nashorn.internal.ir.debug.ObjectSizeCalculator calc
        end local 1 // java.lang.Object obj
        end local 0 // jdk.nashorn.internal.ir.debug.ObjectSizeCalculator$ClassSizeInfo this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   13     0  this  Ljdk/nashorn/internal/ir/debug/ObjectSizeCalculator$ClassSizeInfo;
            0   13     1   obj  Ljava/lang/Object;
            0   13     2  calc  Ljdk/nashorn/internal/ir/debug/ObjectSizeCalculator;
            2   10     3     f  Ljava/lang/reflect/Field;
            5   10     7     e  Ljava/lang/IllegalAccessException;
            8   10     8    ae  Ljava/lang/AssertionError;
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.IllegalAccessException
    MethodParameters:
      Name  Flags
      obj   final
      calc  final
}
SourceFile: "ObjectSizeCalculator.java"
NestHost: jdk.nashorn.internal.ir.debug.ObjectSizeCalculator
InnerClasses:
  private ClassSizeInfo = jdk.nashorn.internal.ir.debug.ObjectSizeCalculator$ClassSizeInfo of jdk.nashorn.internal.ir.debug.ObjectSizeCalculator