public class com.oracle.svm.hosted.phases.SubstrateClassInitializationPlugin implements org.graalvm.compiler.nodes.graphbuilderconf.ClassInitializationPlugin
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.svm.hosted.phases.SubstrateClassInitializationPlugin
  super_class: java.lang.Object
{
  private final com.oracle.svm.hosted.SVMHost host;
    descriptor: Lcom/oracle/svm/hosted/SVMHost;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  public void <init>(com.oracle.svm.hosted.SVMHost);
    descriptor: (Lcom/oracle/svm/hosted/SVMHost;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.svm.hosted.phases.SubstrateClassInitializationPlugin this
        start local 1 // com.oracle.svm.hosted.SVMHost host
         0: .line 47
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 48
            aload 0 /* this */
            aload 1 /* host */
            putfield com.oracle.svm.hosted.phases.SubstrateClassInitializationPlugin.host:Lcom/oracle/svm/hosted/SVMHost;
         2: .line 49
            return
        end local 1 // com.oracle.svm.hosted.SVMHost host
        end local 0 // com.oracle.svm.hosted.phases.SubstrateClassInitializationPlugin this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/svm/hosted/phases/SubstrateClassInitializationPlugin;
            0    3     1  host  Lcom/oracle/svm/hosted/SVMHost;
    MethodParameters:
      Name  Flags
      host  

  public boolean supportsLazyInitialization(jdk.vm.ci.meta.ConstantPool);
    descriptor: (Ljdk/vm/ci/meta/ConstantPool;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // com.oracle.svm.hosted.phases.SubstrateClassInitializationPlugin this
        start local 1 // jdk.vm.ci.meta.ConstantPool cp
         0: .line 53
            iconst_1
            ireturn
        end local 1 // jdk.vm.ci.meta.ConstantPool cp
        end local 0 // com.oracle.svm.hosted.phases.SubstrateClassInitializationPlugin this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/svm/hosted/phases/SubstrateClassInitializationPlugin;
            0    1     1    cp  Ljdk/vm/ci/meta/ConstantPool;
    MethodParameters:
      Name  Flags
      cp    

  public void loadReferencedType(org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext, jdk.vm.ci.meta.ConstantPool, int, int);
    descriptor: (Lorg/graalvm/compiler/nodes/graphbuilderconf/GraphBuilderContext;Ljdk/vm/ci/meta/ConstantPool;II)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=5
        start local 0 // com.oracle.svm.hosted.phases.SubstrateClassInitializationPlugin this
        start local 1 // org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext builder
        start local 2 // jdk.vm.ci.meta.ConstantPool constantPool
        start local 3 // int cpi
        start local 4 // int bytecode
         0: .line 58
            aload 2 /* constantPool */
            iload 3 /* cpi */
            iload 4 /* bytecode */
            invokeinterface jdk.vm.ci.meta.ConstantPool.loadReferencedType:(II)V
         1: .line 59
            return
        end local 4 // int bytecode
        end local 3 // int cpi
        end local 2 // jdk.vm.ci.meta.ConstantPool constantPool
        end local 1 // org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext builder
        end local 0 // com.oracle.svm.hosted.phases.SubstrateClassInitializationPlugin this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    2     0          this  Lcom/oracle/svm/hosted/phases/SubstrateClassInitializationPlugin;
            0    2     1       builder  Lorg/graalvm/compiler/nodes/graphbuilderconf/GraphBuilderContext;
            0    2     2  constantPool  Ljdk/vm/ci/meta/ConstantPool;
            0    2     3           cpi  I
            0    2     4      bytecode  I
    MethodParameters:
              Name  Flags
      builder       
      constantPool  
      cpi           
      bytecode      

  public boolean apply(org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext, jdk.vm.ci.meta.ResolvedJavaType, java.util.function.Supplier<org.graalvm.compiler.nodes.FrameState>, org.graalvm.compiler.nodes.ValueNode[]);
    descriptor: (Lorg/graalvm/compiler/nodes/graphbuilderconf/GraphBuilderContext;Ljdk/vm/ci/meta/ResolvedJavaType;Ljava/util/function/Supplier;[Lorg/graalvm/compiler/nodes/ValueNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=5
        start local 0 // com.oracle.svm.hosted.phases.SubstrateClassInitializationPlugin this
        start local 1 // org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext builder
        start local 2 // jdk.vm.ci.meta.ResolvedJavaType type
        start local 3 // java.util.function.Supplier frameState
        start local 4 // org.graalvm.compiler.nodes.ValueNode[] classInit
         0: .line 63
            aload 1 /* builder */
            invokeinterface org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext.getMethod:()Ljdk/vm/ci/meta/ResolvedJavaMethod;
            invokeinterface jdk.vm.ci.meta.ResolvedJavaMethod.getDeclaringClass:()Ljdk/vm/ci/meta/ResolvedJavaType;
            aload 2 /* type */
            invokestatic com.oracle.svm.hosted.phases.SubstrateClassInitializationPlugin.needsRuntimeInitialization:(Ljdk/vm/ci/meta/ResolvedJavaType;Ljdk/vm/ci/meta/ResolvedJavaType;)Z
            ifeq 5
         1: .line 64
            aload 1 /* builder */
            aload 0 /* this */
            getfield com.oracle.svm.hosted.phases.SubstrateClassInitializationPlugin.host:Lcom/oracle/svm/hosted/SVMHost;
            aload 2 /* type */
            invokevirtual com.oracle.svm.hosted.SVMHost.dynamicHub:(Ljdk/vm/ci/meta/ResolvedJavaType;)Lcom/oracle/svm/core/hub/DynamicHub;
            invokestatic com.oracle.svm.core.meta.SubstrateObjectConstant.forObject:(Ljava/lang/Object;)Ljdk/vm/ci/meta/JavaConstant;
            invokestatic com.oracle.svm.hosted.phases.SubstrateClassInitializationPlugin.emitEnsureClassInitialized:(Lorg/graalvm/compiler/nodes/graphbuilderconf/GraphBuilderContext;Ljdk/vm/ci/meta/JavaConstant;)V
         2: .line 69
            aload 4 /* classInit */
            ifnull 4
         3: .line 70
            aload 4 /* classInit */
            iconst_0
            aconst_null
            aastore
         4: .line 72
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
         5: .line 74
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 4 // org.graalvm.compiler.nodes.ValueNode[] classInit
        end local 3 // java.util.function.Supplier frameState
        end local 2 // jdk.vm.ci.meta.ResolvedJavaType type
        end local 1 // org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext builder
        end local 0 // com.oracle.svm.hosted.phases.SubstrateClassInitializationPlugin this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    6     0        this  Lcom/oracle/svm/hosted/phases/SubstrateClassInitializationPlugin;
            0    6     1     builder  Lorg/graalvm/compiler/nodes/graphbuilderconf/GraphBuilderContext;
            0    6     2        type  Ljdk/vm/ci/meta/ResolvedJavaType;
            0    6     3  frameState  Ljava/util/function/Supplier<Lorg/graalvm/compiler/nodes/FrameState;>;
            0    6     4   classInit  [Lorg/graalvm/compiler/nodes/ValueNode;
    Signature: (Lorg/graalvm/compiler/nodes/graphbuilderconf/GraphBuilderContext;Ljdk/vm/ci/meta/ResolvedJavaType;Ljava/util/function/Supplier<Lorg/graalvm/compiler/nodes/FrameState;>;[Lorg/graalvm/compiler/nodes/ValueNode;)Z
    MethodParameters:
            Name  Flags
      builder     
      type        
      frameState  
      classInit   

  public static void emitEnsureClassInitialized(org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext, jdk.vm.ci.meta.JavaConstant);
    descriptor: (Lorg/graalvm/compiler/nodes/graphbuilderconf/GraphBuilderContext;Ljdk/vm/ci/meta/JavaConstant;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext builder
        start local 1 // jdk.vm.ci.meta.JavaConstant hubConstant
         0: .line 78
            aload 1 /* hubConstant */
            aload 0 /* builder */
            invokeinterface org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext.getMetaAccess:()Ljdk/vm/ci/meta/MetaAccessProvider;
            aload 0 /* builder */
            invokeinterface org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext.getGraph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            invokestatic org.graalvm.compiler.nodes.ConstantNode.forConstant:(Ljdk/vm/ci/meta/JavaConstant;Ljdk/vm/ci/meta/MetaAccessProvider;Lorg/graalvm/compiler/nodes/StructuredGraph;)Lorg/graalvm/compiler/nodes/ConstantNode;
            astore 2 /* hub */
        start local 2 // org.graalvm.compiler.nodes.ValueNode hub
         1: .line 79
            aload 0 /* builder */
            new com.oracle.svm.core.classinitialization.EnsureClassInitializedNode
            dup
            aload 2 /* hub */
            invokespecial com.oracle.svm.core.classinitialization.EnsureClassInitializedNode.<init>:(Lorg/graalvm/compiler/nodes/ValueNode;)V
            invokeinterface org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext.add:(Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/ValueNode;
            pop
         2: .line 80
            return
        end local 2 // org.graalvm.compiler.nodes.ValueNode hub
        end local 1 // jdk.vm.ci.meta.JavaConstant hubConstant
        end local 0 // org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext builder
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    3     0      builder  Lorg/graalvm/compiler/nodes/graphbuilderconf/GraphBuilderContext;
            0    3     1  hubConstant  Ljdk/vm/ci/meta/JavaConstant;
            1    3     2          hub  Lorg/graalvm/compiler/nodes/ValueNode;
    MethodParameters:
             Name  Flags
      builder      
      hubConstant  

  static boolean needsRuntimeInitialization(jdk.vm.ci.meta.ResolvedJavaType, jdk.vm.ci.meta.ResolvedJavaType);
    descriptor: (Ljdk/vm/ci/meta/ResolvedJavaType;Ljdk/vm/ci/meta/ResolvedJavaType;)Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.vm.ci.meta.ResolvedJavaType declaringClass
        start local 1 // jdk.vm.ci.meta.ResolvedJavaType type
         0: .line 87
            aload 0 /* declaringClass */
            aload 1 /* type */
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifne 1
            aload 1 /* type */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.isInitialized:()Z
            ifne 1
            aload 1 /* type */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.isArray:()Z
            ifne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // jdk.vm.ci.meta.ResolvedJavaType type
        end local 0 // jdk.vm.ci.meta.ResolvedJavaType declaringClass
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    2     0  declaringClass  Ljdk/vm/ci/meta/ResolvedJavaType;
            0    2     1            type  Ljdk/vm/ci/meta/ResolvedJavaType;
    MethodParameters:
                Name  Flags
      declaringClass  
      type            
}
SourceFile: "SubstrateClassInitializationPlugin.java"