public class com.oracle.svm.hosted.config.HybridLayout<T>
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.svm.hosted.config.HybridLayout
  super_class: java.lang.Object
{
  private final com.oracle.svm.core.config.ObjectLayout layout;
    descriptor: Lcom/oracle/svm/core/config/ObjectLayout;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.oracle.svm.hosted.meta.HostedField arrayField;
    descriptor: Lcom/oracle/svm/hosted/meta/HostedField;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.oracle.svm.hosted.meta.HostedField typeIDSlotsField;
    descriptor: Lcom/oracle/svm/hosted/meta/HostedField;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final int instanceSize;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  public static boolean isHybrid(jdk.vm.ci.meta.ResolvedJavaType);
    descriptor: (Ljdk/vm/ci/meta/ResolvedJavaType;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // jdk.vm.ci.meta.ResolvedJavaType clazz
         0: .line 51
            ldc Lcom/oracle/svm/hosted/config/HybridLayoutSupport;
            invokestatic org.graalvm.nativeimage.ImageSingletons.lookup:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast com.oracle.svm.hosted.config.HybridLayoutSupport
            aload 0 /* clazz */
            invokevirtual com.oracle.svm.hosted.config.HybridLayoutSupport.isHybrid:(Ljdk/vm/ci/meta/ResolvedJavaType;)Z
            ireturn
        end local 0 // jdk.vm.ci.meta.ResolvedJavaType clazz
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0  clazz  Ljdk/vm/ci/meta/ResolvedJavaType;
    MethodParameters:
       Name  Flags
      clazz  

  public static boolean isHybridField(jdk.vm.ci.meta.ResolvedJavaField);
    descriptor: (Ljdk/vm/ci/meta/ResolvedJavaField;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // jdk.vm.ci.meta.ResolvedJavaField field
         0: .line 55
            ldc Lcom/oracle/svm/hosted/config/HybridLayoutSupport;
            invokestatic org.graalvm.nativeimage.ImageSingletons.lookup:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast com.oracle.svm.hosted.config.HybridLayoutSupport
            aload 0 /* field */
            invokevirtual com.oracle.svm.hosted.config.HybridLayoutSupport.isHybridField:(Ljdk/vm/ci/meta/ResolvedJavaField;)Z
            ireturn
        end local 0 // jdk.vm.ci.meta.ResolvedJavaField field
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0  field  Ljdk/vm/ci/meta/ResolvedJavaField;
    MethodParameters:
       Name  Flags
      field  

  public void <init>(java.lang.Class<T>, com.oracle.svm.core.config.ObjectLayout, com.oracle.svm.hosted.meta.HostedMetaAccess);
    descriptor: (Ljava/lang/Class;Lcom/oracle/svm/core/config/ObjectLayout;Lcom/oracle/svm/hosted/meta/HostedMetaAccess;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // com.oracle.svm.hosted.config.HybridLayout this
        start local 1 // java.lang.Class hybridClass
        start local 2 // com.oracle.svm.core.config.ObjectLayout layout
        start local 3 // com.oracle.svm.hosted.meta.HostedMetaAccess metaAccess
         0: .line 64
            aload 0 /* this */
            aload 3 /* metaAccess */
            aload 1 /* hybridClass */
            invokevirtual com.oracle.svm.hosted.meta.HostedMetaAccess.lookupJavaType:(Ljava/lang/Class;)Lcom/oracle/svm/hosted/meta/HostedType;
            checkcast com.oracle.svm.hosted.meta.HostedInstanceClass
            aload 2 /* layout */
            invokespecial com.oracle.svm.hosted.config.HybridLayout.<init>:(Lcom/oracle/svm/hosted/meta/HostedInstanceClass;Lcom/oracle/svm/core/config/ObjectLayout;)V
         1: .line 65
            return
        end local 3 // com.oracle.svm.hosted.meta.HostedMetaAccess metaAccess
        end local 2 // com.oracle.svm.core.config.ObjectLayout layout
        end local 1 // java.lang.Class hybridClass
        end local 0 // com.oracle.svm.hosted.config.HybridLayout this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0         this  Lcom/oracle/svm/hosted/config/HybridLayout<TT;>;
            0    2     1  hybridClass  Ljava/lang/Class<TT;>;
            0    2     2       layout  Lcom/oracle/svm/core/config/ObjectLayout;
            0    2     3   metaAccess  Lcom/oracle/svm/hosted/meta/HostedMetaAccess;
    Signature: (Ljava/lang/Class<TT;>;Lcom/oracle/svm/core/config/ObjectLayout;Lcom/oracle/svm/hosted/meta/HostedMetaAccess;)V
    MethodParameters:
             Name  Flags
      hybridClass  
      layout       
      metaAccess   

  public void <init>(com.oracle.svm.hosted.meta.HostedInstanceClass, com.oracle.svm.core.config.ObjectLayout);
    descriptor: (Lcom/oracle/svm/hosted/meta/HostedInstanceClass;Lcom/oracle/svm/core/config/ObjectLayout;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=3
        start local 0 // com.oracle.svm.hosted.config.HybridLayout this
        start local 1 // com.oracle.svm.hosted.meta.HostedInstanceClass hybridClass
        start local 2 // com.oracle.svm.core.config.ObjectLayout layout
         0: .line 67
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 68
            aload 0 /* this */
            aload 2 /* layout */
            putfield com.oracle.svm.hosted.config.HybridLayout.layout:Lcom/oracle/svm/core/config/ObjectLayout;
         2: .line 69
            ldc Lcom/oracle/svm/hosted/config/HybridLayoutSupport;
            invokestatic org.graalvm.nativeimage.ImageSingletons.lookup:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast com.oracle.svm.hosted.config.HybridLayoutSupport
            astore 3 /* utils */
        start local 3 // com.oracle.svm.hosted.config.HybridLayoutSupport utils
         3: .line 70
            aload 3 /* utils */
            aload 1 /* hybridClass */
            invokevirtual com.oracle.svm.hosted.config.HybridLayoutSupport.findHybridFields:(Lcom/oracle/svm/hosted/meta/HostedInstanceClass;)Lcom/oracle/svm/hosted/config/HybridLayoutSupport$HybridFields;
            astore 4 /* hybridFields */
        start local 4 // com.oracle.svm.hosted.config.HybridLayoutSupport$HybridFields hybridFields
         4: .line 71
            aload 0 /* this */
            aload 4 /* hybridFields */
            getfield com.oracle.svm.hosted.config.HybridLayoutSupport$HybridFields.arrayField:Lcom/oracle/svm/hosted/meta/HostedField;
            putfield com.oracle.svm.hosted.config.HybridLayout.arrayField:Lcom/oracle/svm/hosted/meta/HostedField;
         5: .line 72
            aload 0 /* this */
            aload 4 /* hybridFields */
            getfield com.oracle.svm.hosted.config.HybridLayoutSupport$HybridFields.typeIDSlotsField:Lcom/oracle/svm/hosted/meta/HostedField;
            putfield com.oracle.svm.hosted.config.HybridLayout.typeIDSlotsField:Lcom/oracle/svm/hosted/meta/HostedField;
         6: .line 73
            aload 0 /* this */
            aload 1 /* hybridClass */
            invokevirtual com.oracle.svm.hosted.meta.HostedInstanceClass.getInstanceSize:()I
            putfield com.oracle.svm.hosted.config.HybridLayout.instanceSize:I
         7: .line 74
            return
        end local 4 // com.oracle.svm.hosted.config.HybridLayoutSupport$HybridFields hybridFields
        end local 3 // com.oracle.svm.hosted.config.HybridLayoutSupport utils
        end local 2 // com.oracle.svm.core.config.ObjectLayout layout
        end local 1 // com.oracle.svm.hosted.meta.HostedInstanceClass hybridClass
        end local 0 // com.oracle.svm.hosted.config.HybridLayout this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    8     0          this  Lcom/oracle/svm/hosted/config/HybridLayout<TT;>;
            0    8     1   hybridClass  Lcom/oracle/svm/hosted/meta/HostedInstanceClass;
            0    8     2        layout  Lcom/oracle/svm/core/config/ObjectLayout;
            3    8     3         utils  Lcom/oracle/svm/hosted/config/HybridLayoutSupport;
            4    8     4  hybridFields  Lcom/oracle/svm/hosted/config/HybridLayoutSupport$HybridFields;
    MethodParameters:
             Name  Flags
      hybridClass  
      layout       

  public jdk.vm.ci.meta.JavaKind getArrayElementStorageKind();
    descriptor: ()Ljdk/vm/ci/meta/JavaKind;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.svm.hosted.config.HybridLayout this
         0: .line 77
            aload 0 /* this */
            getfield com.oracle.svm.hosted.config.HybridLayout.arrayField:Lcom/oracle/svm/hosted/meta/HostedField;
            invokevirtual com.oracle.svm.hosted.meta.HostedField.getType:()Lcom/oracle/svm/hosted/meta/HostedType;
            invokevirtual com.oracle.svm.hosted.meta.HostedType.getComponentType:()Lcom/oracle/svm/hosted/meta/HostedType;
            invokevirtual com.oracle.svm.hosted.meta.HostedType.getStorageKind:()Ljdk/vm/ci/meta/JavaKind;
            areturn
        end local 0 // com.oracle.svm.hosted.config.HybridLayout this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/svm/hosted/config/HybridLayout<TT;>;

  public int getArrayBaseOffset();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.svm.hosted.config.HybridLayout this
         0: .line 81
            aload 0 /* this */
            getfield com.oracle.svm.hosted.config.HybridLayout.instanceSize:I
            aload 0 /* this */
            getfield com.oracle.svm.hosted.config.HybridLayout.layout:Lcom/oracle/svm/core/config/ObjectLayout;
            aload 0 /* this */
            invokevirtual com.oracle.svm.hosted.config.HybridLayout.getArrayElementStorageKind:()Ljdk/vm/ci/meta/JavaKind;
            invokevirtual com.oracle.svm.core.config.ObjectLayout.sizeInBytes:(Ljdk/vm/ci/meta/JavaKind;)I
            invokestatic org.graalvm.compiler.core.common.NumUtil.roundUp:(II)I
            ireturn
        end local 0 // com.oracle.svm.hosted.config.HybridLayout this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/svm/hosted/config/HybridLayout<TT;>;

  public long getArrayElementOffset(int);
    descriptor: (I)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.oracle.svm.hosted.config.HybridLayout this
        start local 1 // int index
         0: .line 85
            aload 0 /* this */
            invokevirtual com.oracle.svm.hosted.config.HybridLayout.getArrayBaseOffset:()I
            iload 1 /* index */
            aload 0 /* this */
            getfield com.oracle.svm.hosted.config.HybridLayout.layout:Lcom/oracle/svm/core/config/ObjectLayout;
            aload 0 /* this */
            invokevirtual com.oracle.svm.hosted.config.HybridLayout.getArrayElementStorageKind:()Ljdk/vm/ci/meta/JavaKind;
            invokevirtual com.oracle.svm.core.config.ObjectLayout.sizeInBytes:(Ljdk/vm/ci/meta/JavaKind;)I
            imul
            iadd
            i2l
            lreturn
        end local 1 // int index
        end local 0 // com.oracle.svm.hosted.config.HybridLayout this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/oracle/svm/hosted/config/HybridLayout<TT;>;
            0    1     1  index  I
    MethodParameters:
       Name  Flags
      index  

  public long getTotalSize(int);
    descriptor: (I)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.svm.hosted.config.HybridLayout this
        start local 1 // int length
         0: .line 89
            aload 0 /* this */
            getfield com.oracle.svm.hosted.config.HybridLayout.layout:Lcom/oracle/svm/core/config/ObjectLayout;
            aload 0 /* this */
            iload 1 /* length */
            invokevirtual com.oracle.svm.hosted.config.HybridLayout.getArrayElementOffset:(I)J
            invokevirtual com.oracle.svm.core.config.ObjectLayout.alignUp:(J)J
            lreturn
        end local 1 // int length
        end local 0 // com.oracle.svm.hosted.config.HybridLayout this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lcom/oracle/svm/hosted/config/HybridLayout<TT;>;
            0    1     1  length  I
    MethodParameters:
        Name  Flags
      length  

  public com.oracle.svm.hosted.meta.HostedField getArrayField();
    descriptor: ()Lcom/oracle/svm/hosted/meta/HostedField;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.svm.hosted.config.HybridLayout this
         0: .line 93
            aload 0 /* this */
            getfield com.oracle.svm.hosted.config.HybridLayout.arrayField:Lcom/oracle/svm/hosted/meta/HostedField;
            areturn
        end local 0 // com.oracle.svm.hosted.config.HybridLayout this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/svm/hosted/config/HybridLayout<TT;>;

  public com.oracle.svm.hosted.meta.HostedField getTypeIDSlotsField();
    descriptor: ()Lcom/oracle/svm/hosted/meta/HostedField;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.svm.hosted.config.HybridLayout this
         0: .line 97
            aload 0 /* this */
            getfield com.oracle.svm.hosted.config.HybridLayout.typeIDSlotsField:Lcom/oracle/svm/hosted/meta/HostedField;
            areturn
        end local 0 // com.oracle.svm.hosted.config.HybridLayout this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/svm/hosted/config/HybridLayout<TT;>;

  public int getInstanceSize();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.svm.hosted.config.HybridLayout this
         0: .line 101
            aload 0 /* this */
            getfield com.oracle.svm.hosted.config.HybridLayout.instanceSize:I
            ireturn
        end local 0 // com.oracle.svm.hosted.config.HybridLayout this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/svm/hosted/config/HybridLayout<TT;>;

  public static int getTypeIDSlotsFieldOffset(com.oracle.svm.core.config.ObjectLayout);
    descriptor: (Lcom/oracle/svm/core/config/ObjectLayout;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.svm.core.config.ObjectLayout layout
         0: .line 108
            aload 0 /* layout */
            invokevirtual com.oracle.svm.core.config.ObjectLayout.getArrayLengthOffset:()I
            aload 0 /* layout */
            getstatic jdk.vm.ci.meta.JavaKind.Int:Ljdk/vm/ci/meta/JavaKind;
            invokevirtual com.oracle.svm.core.config.ObjectLayout.sizeInBytes:(Ljdk/vm/ci/meta/JavaKind;)I
            iadd
            ireturn
        end local 0 // com.oracle.svm.core.config.ObjectLayout layout
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  layout  Lcom/oracle/svm/core/config/ObjectLayout;
    MethodParameters:
        Name  Flags
      layout  
}
Signature: <T:Ljava/lang/Object;>Ljava/lang/Object;
SourceFile: "HybridLayout.java"
InnerClasses:
  public HybridFields = com.oracle.svm.hosted.config.HybridLayoutSupport$HybridFields of com.oracle.svm.hosted.config.HybridLayoutSupport