public final class com.oracle.svm.hosted.phases.ConstantFoldLoadFieldPlugin implements org.graalvm.compiler.nodes.graphbuilderconf.NodePlugin
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.oracle.svm.hosted.phases.ConstantFoldLoadFieldPlugin
  super_class: java.lang.Object
{
  private com.oracle.svm.hosted.classinitialization.ClassInitializationSupport classInitializationSupport;
    descriptor: Lcom/oracle/svm/hosted/classinitialization/ClassInitializationSupport;
    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 38
            ldc Lcom/oracle/svm/hosted/phases/ConstantFoldLoadFieldPlugin;
            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.hosted.phases.ConstantFoldLoadFieldPlugin.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

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

  public boolean handleLoadField(org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext, org.graalvm.compiler.nodes.ValueNode, jdk.vm.ci.meta.ResolvedJavaField);
    descriptor: (Lorg/graalvm/compiler/nodes/graphbuilderconf/GraphBuilderContext;Lorg/graalvm/compiler/nodes/ValueNode;Ljdk/vm/ci/meta/ResolvedJavaField;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=4
        start local 0 // com.oracle.svm.hosted.phases.ConstantFoldLoadFieldPlugin this
        start local 1 // org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext b
        start local 2 // org.graalvm.compiler.nodes.ValueNode receiver
        start local 3 // jdk.vm.ci.meta.ResolvedJavaField field
         0: .line 48
            aload 2 /* receiver */
            invokevirtual org.graalvm.compiler.nodes.ValueNode.isConstant:()Z
            ifeq 3
         1: .line 49
            aload 2 /* receiver */
            invokevirtual org.graalvm.compiler.nodes.ValueNode.asJavaConstant:()Ljdk/vm/ci/meta/JavaConstant;
            astore 4 /* asJavaConstant */
        start local 4 // jdk.vm.ci.meta.JavaConstant asJavaConstant
         2: .line 50
            aload 0 /* this */
            aload 1 /* b */
            aload 3 /* field */
            aload 4 /* asJavaConstant */
            invokevirtual com.oracle.svm.hosted.phases.ConstantFoldLoadFieldPlugin.tryConstantFold:(Lorg/graalvm/compiler/nodes/graphbuilderconf/GraphBuilderContext;Ljdk/vm/ci/meta/ResolvedJavaField;Ljdk/vm/ci/meta/JavaConstant;)Z
            ireturn
        end local 4 // jdk.vm.ci.meta.JavaConstant asJavaConstant
         3: .line 52
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 3 // jdk.vm.ci.meta.ResolvedJavaField field
        end local 2 // org.graalvm.compiler.nodes.ValueNode receiver
        end local 1 // org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext b
        end local 0 // com.oracle.svm.hosted.phases.ConstantFoldLoadFieldPlugin this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    4     0            this  Lcom/oracle/svm/hosted/phases/ConstantFoldLoadFieldPlugin;
            0    4     1               b  Lorg/graalvm/compiler/nodes/graphbuilderconf/GraphBuilderContext;
            0    4     2        receiver  Lorg/graalvm/compiler/nodes/ValueNode;
            0    4     3           field  Ljdk/vm/ci/meta/ResolvedJavaField;
            2    3     4  asJavaConstant  Ljdk/vm/ci/meta/JavaConstant;
    MethodParameters:
          Name  Flags
      b         
      receiver  
      field     

  public boolean handleLoadStaticField(org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext, jdk.vm.ci.meta.ResolvedJavaField);
    descriptor: (Lorg/graalvm/compiler/nodes/graphbuilderconf/GraphBuilderContext;Ljdk/vm/ci/meta/ResolvedJavaField;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.oracle.svm.hosted.phases.ConstantFoldLoadFieldPlugin this
        start local 1 // org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext b
        start local 2 // jdk.vm.ci.meta.ResolvedJavaField staticField
         0: .line 57
            aload 0 /* this */
            aload 1 /* b */
            aload 2 /* staticField */
            aconst_null
            invokevirtual com.oracle.svm.hosted.phases.ConstantFoldLoadFieldPlugin.tryConstantFold:(Lorg/graalvm/compiler/nodes/graphbuilderconf/GraphBuilderContext;Ljdk/vm/ci/meta/ResolvedJavaField;Ljdk/vm/ci/meta/JavaConstant;)Z
            ireturn
        end local 2 // jdk.vm.ci.meta.ResolvedJavaField staticField
        end local 1 // org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext b
        end local 0 // com.oracle.svm.hosted.phases.ConstantFoldLoadFieldPlugin this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0         this  Lcom/oracle/svm/hosted/phases/ConstantFoldLoadFieldPlugin;
            0    1     1            b  Lorg/graalvm/compiler/nodes/graphbuilderconf/GraphBuilderContext;
            0    1     2  staticField  Ljdk/vm/ci/meta/ResolvedJavaField;
    MethodParameters:
             Name  Flags
      b            
      staticField  

  private boolean tryConstantFold(org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext, jdk.vm.ci.meta.ResolvedJavaField, jdk.vm.ci.meta.JavaConstant);
    descriptor: (Lorg/graalvm/compiler/nodes/graphbuilderconf/GraphBuilderContext;Ljdk/vm/ci/meta/ResolvedJavaField;Ljdk/vm/ci/meta/JavaConstant;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=6, args_size=4
        start local 0 // com.oracle.svm.hosted.phases.ConstantFoldLoadFieldPlugin this
        start local 1 // org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext b
        start local 2 // jdk.vm.ci.meta.ResolvedJavaField field
        start local 3 // jdk.vm.ci.meta.JavaConstant receiver
         0: .line 61
            aload 1 /* b */
            invokeinterface org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext.getConstantFieldProvider:()Lorg/graalvm/compiler/core/common/spi/ConstantFieldProvider;
            aload 1 /* b */
            invokeinterface org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext.getConstantReflection:()Ljdk/vm/ci/meta/ConstantReflectionProvider;
            aload 1 /* b */
            invokeinterface org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext.getMetaAccess:()Ljdk/vm/ci/meta/MetaAccessProvider;
            aload 2 /* field */
            aload 3 /* receiver */
            aload 1 /* b */
            invokeinterface org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext.getOptions:()Lorg/graalvm/compiler/options/OptionValues;
            invokestatic org.graalvm.compiler.nodes.util.ConstantFoldUtil.tryConstantFold:(Lorg/graalvm/compiler/core/common/spi/ConstantFieldProvider;Ljdk/vm/ci/meta/ConstantReflectionProvider;Ljdk/vm/ci/meta/MetaAccessProvider;Ljdk/vm/ci/meta/ResolvedJavaField;Ljdk/vm/ci/meta/JavaConstant;Lorg/graalvm/compiler/options/OptionValues;)Lorg/graalvm/compiler/nodes/ConstantNode;
            astore 4 /* result */
        start local 4 // org.graalvm.compiler.nodes.ConstantNode result
         1: .line 63
            aload 4 /* result */
            ifnull 10
         2: .line 64
            getstatic com.oracle.svm.hosted.phases.ConstantFoldLoadFieldPlugin.$assertionsDisabled:Z
            ifne 3
            aload 4 /* result */
            invokevirtual org.graalvm.compiler.nodes.ConstantNode.asJavaConstant:()Ljdk/vm/ci/meta/JavaConstant;
            ifnonnull 3
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         3: .line 65
      StackMap locals: org.graalvm.compiler.nodes.ConstantNode
      StackMap stack:
            aload 4 /* result */
            invokevirtual org.graalvm.compiler.nodes.ConstantNode.asJavaConstant:()Ljdk/vm/ci/meta/JavaConstant;
            astore 5 /* value */
        start local 5 // jdk.vm.ci.meta.JavaConstant value
         4: .line 66
            getstatic com.oracle.svm.hosted.phases.ConstantFoldLoadFieldPlugin.$assertionsDisabled:Z
            ifne 7
            aload 0 /* this */
            getfield com.oracle.svm.hosted.phases.ConstantFoldLoadFieldPlugin.classInitializationSupport:Lcom/oracle/svm/hosted/classinitialization/ClassInitializationSupport;
            aload 2 /* field */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaField.getDeclaringClass:()Ljdk/vm/ci/meta/ResolvedJavaType;
            invokeinterface com.oracle.svm.hosted.classinitialization.ClassInitializationSupport.shouldInitializeAtRuntime:(Ljdk/vm/ci/meta/ResolvedJavaType;)Z
            ifeq 7
         5: .line 67
            aload 5 /* value */
            invokeinterface jdk.vm.ci.meta.JavaConstant.isDefaultForKind:()Z
            ifne 7
            new java.lang.AssertionError
            dup
            new java.lang.StringBuilder
            dup
            ldc "Fields in classes that are marked for initialization at run time must not be constant folded, unless they are not written in the static initializer, i.e., have the default value: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         6: .line 68
            aload 2 /* field */
            ldc "%H.%n"
            invokeinterface jdk.vm.ci.meta.ResolvedJavaField.format:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         7: .line 70
      StackMap locals: jdk.vm.ci.meta.JavaConstant
      StackMap stack:
            aload 1 /* b */
            invokeinterface org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext.getGraph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            aload 4 /* result */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.unique:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
            checkcast org.graalvm.compiler.nodes.ConstantNode
            astore 4 /* result */
         8: .line 71
            aload 1 /* b */
            aload 2 /* field */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaField.getJavaKind:()Ljdk/vm/ci/meta/JavaKind;
            aload 4 /* result */
            invokeinterface org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext.push:(Ljdk/vm/ci/meta/JavaKind;Lorg/graalvm/compiler/nodes/ValueNode;)V
         9: .line 72
            iconst_1
            ireturn
        end local 5 // jdk.vm.ci.meta.JavaConstant value
        10: .line 74
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 4 // org.graalvm.compiler.nodes.ConstantNode result
        end local 3 // jdk.vm.ci.meta.JavaConstant receiver
        end local 2 // jdk.vm.ci.meta.ResolvedJavaField field
        end local 1 // org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext b
        end local 0 // com.oracle.svm.hosted.phases.ConstantFoldLoadFieldPlugin this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   11     0      this  Lcom/oracle/svm/hosted/phases/ConstantFoldLoadFieldPlugin;
            0   11     1         b  Lorg/graalvm/compiler/nodes/graphbuilderconf/GraphBuilderContext;
            0   11     2     field  Ljdk/vm/ci/meta/ResolvedJavaField;
            0   11     3  receiver  Ljdk/vm/ci/meta/JavaConstant;
            1   11     4    result  Lorg/graalvm/compiler/nodes/ConstantNode;
            4   10     5     value  Ljdk/vm/ci/meta/JavaConstant;
    MethodParameters:
          Name  Flags
      b         
      field     
      receiver  
}
SourceFile: "ConstantFoldLoadFieldPlugin.java"
InnerClasses:
  public abstract ValueNumberable = org.graalvm.compiler.graph.Node$ValueNumberable of org.graalvm.compiler.graph.Node