public class org.graalvm.compiler.nodes.memory.ReadNode extends org.graalvm.compiler.nodes.memory.FloatableAccessNode implements org.graalvm.compiler.nodes.memory.LIRLowerableAccess, org.graalvm.compiler.graph.spi.Canonicalizable, org.graalvm.compiler.nodes.spi.Virtualizable, org.graalvm.compiler.nodes.extended.GuardingNode
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.graalvm.compiler.nodes.memory.ReadNode
  super_class: org.graalvm.compiler.nodes.memory.FloatableAccessNode
{
  public static final org.graalvm.compiler.graph.NodeClass<org.graalvm.compiler.nodes.memory.ReadNode> TYPE;
    descriptor: Lorg/graalvm/compiler/graph/NodeClass;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    Signature: Lorg/graalvm/compiler/graph/NodeClass<Lorg/graalvm/compiler/nodes/memory/ReadNode;>;

  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 63
            ldc Lorg/graalvm/compiler/nodes/memory/ReadNode;
            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 org.graalvm.compiler.nodes.memory.ReadNode.$assertionsDisabled:Z
         3: .line 65
            ldc Lorg/graalvm/compiler/nodes/memory/ReadNode;
            invokestatic org.graalvm.compiler.graph.NodeClass.create:(Ljava/lang/Class;)Lorg/graalvm/compiler/graph/NodeClass;
            putstatic org.graalvm.compiler.nodes.memory.ReadNode.TYPE:Lorg/graalvm/compiler/graph/NodeClass;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(org.graalvm.compiler.nodes.memory.address.AddressNode, jdk.internal.vm.compiler.word.LocationIdentity, org.graalvm.compiler.core.common.type.Stamp, org.graalvm.compiler.nodes.memory.OnHeapMemoryAccess$BarrierType);
    descriptor: (Lorg/graalvm/compiler/nodes/memory/address/AddressNode;Ljdk/internal/vm/compiler/word/LocationIdentity;Lorg/graalvm/compiler/core/common/type/Stamp;Lorg/graalvm/compiler/nodes/memory/OnHeapMemoryAccess$BarrierType;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=9, locals=5, args_size=5
        start local 0 // org.graalvm.compiler.nodes.memory.ReadNode this
        start local 1 // org.graalvm.compiler.nodes.memory.address.AddressNode address
        start local 2 // jdk.internal.vm.compiler.word.LocationIdentity location
        start local 3 // org.graalvm.compiler.core.common.type.Stamp stamp
        start local 4 // org.graalvm.compiler.nodes.memory.OnHeapMemoryAccess$BarrierType barrierType
         0: .line 68
            aload 0 /* this */
            getstatic org.graalvm.compiler.nodes.memory.ReadNode.TYPE:Lorg/graalvm/compiler/graph/NodeClass;
            aload 1 /* address */
            aload 2 /* location */
            aload 3 /* stamp */
            aconst_null
            aload 4 /* barrierType */
            iconst_0
            aconst_null
            invokespecial org.graalvm.compiler.nodes.memory.ReadNode.<init>:(Lorg/graalvm/compiler/graph/NodeClass;Lorg/graalvm/compiler/nodes/memory/address/AddressNode;Ljdk/internal/vm/compiler/word/LocationIdentity;Lorg/graalvm/compiler/core/common/type/Stamp;Lorg/graalvm/compiler/nodes/extended/GuardingNode;Lorg/graalvm/compiler/nodes/memory/OnHeapMemoryAccess$BarrierType;ZLorg/graalvm/compiler/nodes/FrameState;)V
         1: .line 69
            return
        end local 4 // org.graalvm.compiler.nodes.memory.OnHeapMemoryAccess$BarrierType barrierType
        end local 3 // org.graalvm.compiler.core.common.type.Stamp stamp
        end local 2 // jdk.internal.vm.compiler.word.LocationIdentity location
        end local 1 // org.graalvm.compiler.nodes.memory.address.AddressNode address
        end local 0 // org.graalvm.compiler.nodes.memory.ReadNode this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0         this  Lorg/graalvm/compiler/nodes/memory/ReadNode;
            0    2     1      address  Lorg/graalvm/compiler/nodes/memory/address/AddressNode;
            0    2     2     location  Ljdk/internal/vm/compiler/word/LocationIdentity;
            0    2     3        stamp  Lorg/graalvm/compiler/core/common/type/Stamp;
            0    2     4  barrierType  Lorg/graalvm/compiler/nodes/memory/OnHeapMemoryAccess$BarrierType;
    MethodParameters:
             Name  Flags
      address      
      location     
      stamp        
      barrierType  

  protected void <init>(org.graalvm.compiler.graph.NodeClass<? extends org.graalvm.compiler.nodes.memory.ReadNode>, org.graalvm.compiler.nodes.memory.address.AddressNode, jdk.internal.vm.compiler.word.LocationIdentity, org.graalvm.compiler.core.common.type.Stamp, org.graalvm.compiler.nodes.extended.GuardingNode, org.graalvm.compiler.nodes.memory.OnHeapMemoryAccess$BarrierType, boolean, org.graalvm.compiler.nodes.FrameState);
    descriptor: (Lorg/graalvm/compiler/graph/NodeClass;Lorg/graalvm/compiler/nodes/memory/address/AddressNode;Ljdk/internal/vm/compiler/word/LocationIdentity;Lorg/graalvm/compiler/core/common/type/Stamp;Lorg/graalvm/compiler/nodes/extended/GuardingNode;Lorg/graalvm/compiler/nodes/memory/OnHeapMemoryAccess$BarrierType;ZLorg/graalvm/compiler/nodes/FrameState;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=9, locals=9, args_size=9
        start local 0 // org.graalvm.compiler.nodes.memory.ReadNode this
        start local 1 // org.graalvm.compiler.graph.NodeClass c
        start local 2 // org.graalvm.compiler.nodes.memory.address.AddressNode address
        start local 3 // jdk.internal.vm.compiler.word.LocationIdentity location
        start local 4 // org.graalvm.compiler.core.common.type.Stamp stamp
        start local 5 // org.graalvm.compiler.nodes.extended.GuardingNode guard
        start local 6 // org.graalvm.compiler.nodes.memory.OnHeapMemoryAccess$BarrierType barrierType
        start local 7 // boolean nullCheck
        start local 8 // org.graalvm.compiler.nodes.FrameState stateBefore
         0: .line 73
            aload 0 /* this */
            aload 1 /* c */
            aload 2 /* address */
            aload 3 /* location */
            aload 4 /* stamp */
            aload 5 /* guard */
            aload 6 /* barrierType */
            iload 7 /* nullCheck */
            aload 8 /* stateBefore */
            invokespecial org.graalvm.compiler.nodes.memory.FloatableAccessNode.<init>:(Lorg/graalvm/compiler/graph/NodeClass;Lorg/graalvm/compiler/nodes/memory/address/AddressNode;Ljdk/internal/vm/compiler/word/LocationIdentity;Lorg/graalvm/compiler/core/common/type/Stamp;Lorg/graalvm/compiler/nodes/extended/GuardingNode;Lorg/graalvm/compiler/nodes/memory/OnHeapMemoryAccess$BarrierType;ZLorg/graalvm/compiler/nodes/FrameState;)V
         1: .line 74
            aload 0 /* this */
            aconst_null
            putfield org.graalvm.compiler.nodes.memory.ReadNode.lastLocationAccess:Lorg/graalvm/compiler/nodes/memory/MemoryKill;
         2: .line 75
            return
        end local 8 // org.graalvm.compiler.nodes.FrameState stateBefore
        end local 7 // boolean nullCheck
        end local 6 // org.graalvm.compiler.nodes.memory.OnHeapMemoryAccess$BarrierType barrierType
        end local 5 // org.graalvm.compiler.nodes.extended.GuardingNode guard
        end local 4 // org.graalvm.compiler.core.common.type.Stamp stamp
        end local 3 // jdk.internal.vm.compiler.word.LocationIdentity location
        end local 2 // org.graalvm.compiler.nodes.memory.address.AddressNode address
        end local 1 // org.graalvm.compiler.graph.NodeClass c
        end local 0 // org.graalvm.compiler.nodes.memory.ReadNode this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    3     0         this  Lorg/graalvm/compiler/nodes/memory/ReadNode;
            0    3     1            c  Lorg/graalvm/compiler/graph/NodeClass<+Lorg/graalvm/compiler/nodes/memory/ReadNode;>;
            0    3     2      address  Lorg/graalvm/compiler/nodes/memory/address/AddressNode;
            0    3     3     location  Ljdk/internal/vm/compiler/word/LocationIdentity;
            0    3     4        stamp  Lorg/graalvm/compiler/core/common/type/Stamp;
            0    3     5        guard  Lorg/graalvm/compiler/nodes/extended/GuardingNode;
            0    3     6  barrierType  Lorg/graalvm/compiler/nodes/memory/OnHeapMemoryAccess$BarrierType;
            0    3     7    nullCheck  Z
            0    3     8  stateBefore  Lorg/graalvm/compiler/nodes/FrameState;
    Signature: (Lorg/graalvm/compiler/graph/NodeClass<+Lorg/graalvm/compiler/nodes/memory/ReadNode;>;Lorg/graalvm/compiler/nodes/memory/address/AddressNode;Ljdk/internal/vm/compiler/word/LocationIdentity;Lorg/graalvm/compiler/core/common/type/Stamp;Lorg/graalvm/compiler/nodes/extended/GuardingNode;Lorg/graalvm/compiler/nodes/memory/OnHeapMemoryAccess$BarrierType;ZLorg/graalvm/compiler/nodes/FrameState;)V
    MethodParameters:
             Name  Flags
      c            
      address      
      location     
      stamp        
      guard        
      barrierType  
      nullCheck    
      stateBefore  

  public void generate(org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool);
    descriptor: (Lorg/graalvm/compiler/nodes/spi/NodeLIRBuilderTool;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=3, args_size=2
        start local 0 // org.graalvm.compiler.nodes.memory.ReadNode this
        start local 1 // org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool gen
         0: .line 79
            aload 1 /* gen */
            invokeinterface org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool.getLIRGeneratorTool:()Lorg/graalvm/compiler/lir/gen/LIRGeneratorTool;
            aload 0 /* this */
            getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
            invokevirtual org.graalvm.compiler.nodes.memory.ReadNode.getAccessStamp:(Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/core/common/type/Stamp;
            invokeinterface org.graalvm.compiler.lir.gen.LIRGeneratorTool.getLIRKind:(Lorg/graalvm/compiler/core/common/type/Stamp;)Lorg/graalvm/compiler/core/common/LIRKind;
            astore 2 /* readKind */
        start local 2 // org.graalvm.compiler.core.common.LIRKind readKind
         1: .line 80
            aload 1 /* gen */
            aload 0 /* this */
            aload 1 /* gen */
            invokeinterface org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool.getLIRGeneratorTool:()Lorg/graalvm/compiler/lir/gen/LIRGeneratorTool;
            invokeinterface org.graalvm.compiler.lir.gen.LIRGeneratorTool.getArithmetic:()Lorg/graalvm/compiler/lir/gen/ArithmeticLIRGeneratorTool;
            aload 2 /* readKind */
            aload 1 /* gen */
            aload 0 /* this */
            getfield org.graalvm.compiler.nodes.memory.ReadNode.address:Lorg/graalvm/compiler/nodes/memory/address/AddressNode;
            invokeinterface org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool.operand:(Lorg/graalvm/compiler/graph/Node;)Ljdk/vm/ci/meta/Value;
            aload 1 /* gen */
            aload 0 /* this */
            invokeinterface org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool.state:(Lorg/graalvm/compiler/nodes/DeoptimizingNode;)Lorg/graalvm/compiler/lir/LIRFrameState;
            invokeinterface org.graalvm.compiler.lir.gen.ArithmeticLIRGeneratorTool.emitLoad:(Lorg/graalvm/compiler/core/common/LIRKind;Ljdk/vm/ci/meta/Value;Lorg/graalvm/compiler/lir/LIRFrameState;)Lorg/graalvm/compiler/lir/Variable;
            invokeinterface org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool.setResult:(Lorg/graalvm/compiler/nodes/ValueNode;Ljdk/vm/ci/meta/Value;)Ljdk/vm/ci/meta/Value;
            pop
         2: .line 81
            return
        end local 2 // org.graalvm.compiler.core.common.LIRKind readKind
        end local 1 // org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool gen
        end local 0 // org.graalvm.compiler.nodes.memory.ReadNode this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lorg/graalvm/compiler/nodes/memory/ReadNode;
            0    3     1       gen  Lorg/graalvm/compiler/nodes/spi/NodeLIRBuilderTool;
            1    3     2  readKind  Lorg/graalvm/compiler/core/common/LIRKind;
    MethodParameters:
      Name  Flags
      gen   

  public org.graalvm.compiler.graph.Node canonical(org.graalvm.compiler.graph.spi.CanonicalizerTool);
    descriptor: (Lorg/graalvm/compiler/graph/spi/CanonicalizerTool;)Lorg/graalvm/compiler/graph/Node;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.graalvm.compiler.nodes.memory.ReadNode this
        start local 1 // org.graalvm.compiler.graph.spi.CanonicalizerTool tool
         0: .line 85
            aload 1 /* tool */
            invokeinterface org.graalvm.compiler.graph.spi.CanonicalizerTool.allUsagesAvailable:()Z
            ifeq 2
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.nodes.memory.ReadNode.hasNoUsages:()Z
            ifeq 2
         1: .line 87
            aconst_null
            areturn
         2: .line 89
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.nodes.memory.ReadNode.getNullCheck:()Z
            ifne 4
         3: .line 90
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.nodes.memory.ReadNode.getAddress:()Lorg/graalvm/compiler/nodes/memory/address/AddressNode;
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.nodes.memory.ReadNode.getLocationIdentity:()Ljdk/internal/vm/compiler/word/LocationIdentity;
            aload 1 /* tool */
            invokestatic org.graalvm.compiler.nodes.memory.ReadNode.canonicalizeRead:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/memory/address/AddressNode;Ljdk/internal/vm/compiler/word/LocationIdentity;Lorg/graalvm/compiler/graph/spi/CanonicalizerTool;)Lorg/graalvm/compiler/nodes/ValueNode;
            areturn
         4: .line 94
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            areturn
        end local 1 // org.graalvm.compiler.graph.spi.CanonicalizerTool tool
        end local 0 // org.graalvm.compiler.nodes.memory.ReadNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/graalvm/compiler/nodes/memory/ReadNode;
            0    5     1  tool  Lorg/graalvm/compiler/graph/spi/CanonicalizerTool;
    MethodParameters:
      Name  Flags
      tool  

  public org.graalvm.compiler.nodes.memory.FloatingAccessNode asFloatingNode();
    descriptor: ()Lorg/graalvm/compiler/nodes/memory/FloatingAccessNode;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=9, locals=4, args_size=1
        start local 0 // org.graalvm.compiler.nodes.memory.ReadNode this
         0: .line 101
            aconst_null
            astore 1
            aconst_null
            astore 2
         1: aload 0 /* this */
            invokevirtual org.graalvm.compiler.nodes.memory.ReadNode.withNodeSourcePosition:()Lorg/graalvm/compiler/debug/DebugCloseable;
            astore 3 /* position */
        start local 3 // org.graalvm.compiler.debug.DebugCloseable position
         2: .line 102
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.nodes.memory.ReadNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            new org.graalvm.compiler.nodes.memory.FloatingReadNode
            dup
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.nodes.memory.ReadNode.getAddress:()Lorg/graalvm/compiler/nodes/memory/address/AddressNode;
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.nodes.memory.ReadNode.getLocationIdentity:()Ljdk/internal/vm/compiler/word/LocationIdentity;
            aload 0 /* this */
            getfield org.graalvm.compiler.nodes.memory.ReadNode.lastLocationAccess:Lorg/graalvm/compiler/nodes/memory/MemoryKill;
            aload 0 /* this */
            getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
            invokevirtual org.graalvm.compiler.nodes.memory.ReadNode.stamp:(Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/core/common/type/Stamp;
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.nodes.memory.ReadNode.getGuard:()Lorg/graalvm/compiler/nodes/extended/GuardingNode;
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.nodes.memory.ReadNode.getBarrierType:()Lorg/graalvm/compiler/nodes/memory/OnHeapMemoryAccess$BarrierType;
            invokespecial org.graalvm.compiler.nodes.memory.FloatingReadNode.<init>:(Lorg/graalvm/compiler/nodes/memory/address/AddressNode;Ljdk/internal/vm/compiler/word/LocationIdentity;Lorg/graalvm/compiler/nodes/memory/MemoryKill;Lorg/graalvm/compiler/core/common/type/Stamp;Lorg/graalvm/compiler/nodes/extended/GuardingNode;Lorg/graalvm/compiler/nodes/memory/OnHeapMemoryAccess$BarrierType;)V
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.unique:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
            checkcast org.graalvm.compiler.nodes.memory.FloatingAccessNode
         3: .line 103
            aload 3 /* position */
            ifnull 4
            aload 3 /* position */
            invokeinterface org.graalvm.compiler.debug.DebugCloseable.close:()V
         4: .line 102
      StackMap locals: org.graalvm.compiler.nodes.memory.ReadNode java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.DebugCloseable
      StackMap stack: org.graalvm.compiler.nodes.memory.FloatingAccessNode
            areturn
      StackMap locals:
      StackMap stack: java.lang.Throwable
         5: astore 1
         6: .line 103
            aload 3 /* position */
            ifnull 7
            aload 3 /* position */
            invokeinterface org.graalvm.compiler.debug.DebugCloseable.close:()V
        end local 3 // org.graalvm.compiler.debug.DebugCloseable position
      StackMap locals:
      StackMap stack:
         7: aload 1
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
         8: astore 2
            aload 1
            ifnonnull 9
            aload 2
            astore 1
            goto 10
      StackMap locals:
      StackMap stack:
         9: aload 1
            aload 2
            if_acmpeq 10
            aload 1
            aload 2
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        10: aload 1
            athrow
        end local 0 // org.graalvm.compiler.nodes.memory.ReadNode this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   11     0      this  Lorg/graalvm/compiler/nodes/memory/ReadNode;
            2    7     3  position  Lorg/graalvm/compiler/debug/DebugCloseable;
      Exception table:
        from    to  target  type
           2     3       5  any
           1     4       8  any
           5     8       8  any

  public boolean isAllowedUsageType(org.graalvm.compiler.nodeinfo.InputType);
    descriptor: (Lorg/graalvm/compiler/nodeinfo/InputType;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.graalvm.compiler.nodes.memory.ReadNode this
        start local 1 // org.graalvm.compiler.nodeinfo.InputType type
         0: .line 108
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.nodes.memory.ReadNode.getNullCheck:()Z
            ifeq 1
            aload 1 /* type */
            getstatic org.graalvm.compiler.nodeinfo.InputType.Guard:Lorg/graalvm/compiler/nodeinfo/InputType;
            if_acmpne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: aload 0 /* this */
            aload 1 /* type */
            invokespecial org.graalvm.compiler.nodes.memory.FloatableAccessNode.isAllowedUsageType:(Lorg/graalvm/compiler/nodeinfo/InputType;)Z
      StackMap locals:
      StackMap stack: int
         2: ireturn
        end local 1 // org.graalvm.compiler.nodeinfo.InputType type
        end local 0 // org.graalvm.compiler.nodes.memory.ReadNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/graalvm/compiler/nodes/memory/ReadNode;
            0    3     1  type  Lorg/graalvm/compiler/nodeinfo/InputType;
    MethodParameters:
      Name  Flags
      type  

  public static org.graalvm.compiler.nodes.ValueNode canonicalizeRead(org.graalvm.compiler.nodes.ValueNode, org.graalvm.compiler.nodes.memory.address.AddressNode, jdk.internal.vm.compiler.word.LocationIdentity, org.graalvm.compiler.graph.spi.CanonicalizerTool);
    descriptor: (Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/memory/address/AddressNode;Ljdk/internal/vm/compiler/word/LocationIdentity;Lorg/graalvm/compiler/graph/spi/CanonicalizerTool;)Lorg/graalvm/compiler/nodes/ValueNode;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=13, args_size=4
        start local 0 // org.graalvm.compiler.nodes.ValueNode read
        start local 1 // org.graalvm.compiler.nodes.memory.address.AddressNode address
        start local 2 // jdk.internal.vm.compiler.word.LocationIdentity locationIdentity
        start local 3 // org.graalvm.compiler.graph.spi.CanonicalizerTool tool
         0: .line 112
            aload 3 /* tool */
            invokestatic org.graalvm.compiler.nodes.NodeView.from:(Lorg/graalvm/compiler/graph/spi/CanonicalizerTool;)Lorg/graalvm/compiler/nodes/NodeView;
            astore 4 /* view */
        start local 4 // org.graalvm.compiler.nodes.NodeView view
         1: .line 113
            aload 3 /* tool */
            invokeinterface org.graalvm.compiler.graph.spi.CanonicalizerTool.getMetaAccess:()Ljdk/vm/ci/meta/MetaAccessProvider;
            astore 5 /* metaAccess */
        start local 5 // jdk.vm.ci.meta.MetaAccessProvider metaAccess
         2: .line 114
            aload 3 /* tool */
            invokeinterface org.graalvm.compiler.graph.spi.CanonicalizerTool.canonicalizeReads:()Z
            ifeq 25
            aload 1 /* address */
            instanceof org.graalvm.compiler.nodes.memory.address.OffsetAddressNode
            ifeq 25
         3: .line 115
            aload 1 /* address */
            checkcast org.graalvm.compiler.nodes.memory.address.OffsetAddressNode
            astore 6 /* objAddress */
        start local 6 // org.graalvm.compiler.nodes.memory.address.OffsetAddressNode objAddress
         4: .line 116
            aload 6 /* objAddress */
            invokevirtual org.graalvm.compiler.nodes.memory.address.OffsetAddressNode.getBase:()Lorg/graalvm/compiler/nodes/ValueNode;
            astore 7 /* object */
        start local 7 // org.graalvm.compiler.nodes.ValueNode object
         5: .line 117
            aload 5 /* metaAccess */
            ifnull 15
            aload 7 /* object */
            invokevirtual org.graalvm.compiler.nodes.ValueNode.isConstant:()Z
            ifeq 15
            aload 7 /* object */
            invokevirtual org.graalvm.compiler.nodes.ValueNode.isNullConstant:()Z
            ifne 15
            aload 6 /* objAddress */
            invokevirtual org.graalvm.compiler.nodes.memory.address.OffsetAddressNode.getOffset:()Lorg/graalvm/compiler/nodes/ValueNode;
            invokevirtual org.graalvm.compiler.nodes.ValueNode.isConstant:()Z
            ifeq 15
         6: .line 118
            aload 6 /* objAddress */
            invokevirtual org.graalvm.compiler.nodes.memory.address.OffsetAddressNode.getOffset:()Lorg/graalvm/compiler/nodes/ValueNode;
            invokevirtual org.graalvm.compiler.nodes.ValueNode.asJavaConstant:()Ljdk/vm/ci/meta/JavaConstant;
            invokeinterface jdk.vm.ci.meta.JavaConstant.asLong:()J
            lstore 8 /* displacement */
        start local 8 // long displacement
         7: .line 119
            aload 7 /* object */
            checkcast org.graalvm.compiler.nodes.ConstantNode
            invokevirtual org.graalvm.compiler.nodes.ConstantNode.getStableDimension:()I
            istore 10 /* stableDimension */
        start local 10 // int stableDimension
         8: .line 120
            aload 2 /* locationIdentity */
            invokevirtual jdk.internal.vm.compiler.word.LocationIdentity.isImmutable:()Z
            ifne 9
            iload 10 /* stableDimension */
            ifle 15
         9: .line 121
      StackMap locals: org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.memory.address.AddressNode jdk.internal.vm.compiler.word.LocationIdentity org.graalvm.compiler.graph.spi.CanonicalizerTool org.graalvm.compiler.nodes.NodeView jdk.vm.ci.meta.MetaAccessProvider org.graalvm.compiler.nodes.memory.address.OffsetAddressNode org.graalvm.compiler.nodes.ValueNode long int
      StackMap stack:
            aload 0 /* read */
            aload 4 /* view */
            invokevirtual org.graalvm.compiler.nodes.ValueNode.stamp:(Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/core/common/type/Stamp;
            aload 3 /* tool */
            invokeinterface org.graalvm.compiler.graph.spi.CanonicalizerTool.getConstantReflection:()Ljdk/vm/ci/meta/ConstantReflectionProvider;
            invokeinterface jdk.vm.ci.meta.ConstantReflectionProvider.getMemoryAccessProvider:()Ljdk/vm/ci/meta/MemoryAccessProvider;
            aload 7 /* object */
            invokevirtual org.graalvm.compiler.nodes.ValueNode.asConstant:()Ljdk/vm/ci/meta/Constant;
            lload 8 /* displacement */
            invokevirtual org.graalvm.compiler.core.common.type.Stamp.readConstant:(Ljdk/vm/ci/meta/MemoryAccessProvider;Ljdk/vm/ci/meta/Constant;J)Ljdk/vm/ci/meta/Constant;
            astore 11 /* constant */
        start local 11 // jdk.vm.ci.meta.Constant constant
        10: .line 122
            aload 2 /* locationIdentity */
            invokevirtual jdk.internal.vm.compiler.word.LocationIdentity.isImmutable:()Z
            ifne 11
            aload 7 /* object */
            checkcast org.graalvm.compiler.nodes.ConstantNode
            invokevirtual org.graalvm.compiler.nodes.ConstantNode.isDefaultStable:()Z
            ifne 11
            iconst_0
            goto 12
      StackMap locals: jdk.vm.ci.meta.Constant
      StackMap stack:
        11: iconst_1
      StackMap locals:
      StackMap stack: int
        12: istore 12 /* isDefaultStable */
        start local 12 // boolean isDefaultStable
        13: .line 123
            aload 11 /* constant */
            ifnull 15
            iload 12 /* isDefaultStable */
            ifne 14
            aload 11 /* constant */
            invokeinterface jdk.vm.ci.meta.Constant.isDefaultForKind:()Z
            ifne 15
        14: .line 124
      StackMap locals: int
      StackMap stack:
            aload 0 /* read */
            aload 4 /* view */
            invokevirtual org.graalvm.compiler.nodes.ValueNode.stamp:(Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/core/common/type/Stamp;
            aload 11 /* constant */
            iload 10 /* stableDimension */
            iconst_1
            isub
            iconst_0
            invokestatic java.lang.Math.max:(II)I
            iload 12 /* isDefaultStable */
            aload 5 /* metaAccess */
            invokestatic org.graalvm.compiler.nodes.ConstantNode.forConstant:(Lorg/graalvm/compiler/core/common/type/Stamp;Ljdk/vm/ci/meta/Constant;IZLjdk/vm/ci/meta/MetaAccessProvider;)Lorg/graalvm/compiler/nodes/ConstantNode;
            areturn
        end local 12 // boolean isDefaultStable
        end local 11 // jdk.vm.ci.meta.Constant constant
        end local 10 // int stableDimension
        end local 8 // long displacement
        15: .line 128
      StackMap locals: org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.memory.address.AddressNode jdk.internal.vm.compiler.word.LocationIdentity org.graalvm.compiler.graph.spi.CanonicalizerTool org.graalvm.compiler.nodes.NodeView jdk.vm.ci.meta.MetaAccessProvider org.graalvm.compiler.nodes.memory.address.OffsetAddressNode org.graalvm.compiler.nodes.ValueNode
      StackMap stack:
            aload 2 /* locationIdentity */
            getstatic org.graalvm.compiler.nodes.NamedLocationIdentity.ARRAY_LENGTH_LOCATION:Ljdk/internal/vm/compiler/word/LocationIdentity;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 19
        16: .line 129
            aload 7 /* object */
            getstatic org.graalvm.compiler.nodes.spi.ArrayLengthProvider$FindLengthMode.CANONICALIZE_READ:Lorg/graalvm/compiler/nodes/spi/ArrayLengthProvider$FindLengthMode;
            aload 3 /* tool */
            invokeinterface org.graalvm.compiler.graph.spi.CanonicalizerTool.getConstantReflection:()Ljdk/vm/ci/meta/ConstantReflectionProvider;
            invokestatic org.graalvm.compiler.nodes.util.GraphUtil.arrayLength:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/spi/ArrayLengthProvider$FindLengthMode;Ljdk/vm/ci/meta/ConstantReflectionProvider;)Lorg/graalvm/compiler/nodes/ValueNode;
            astore 8 /* length */
        start local 8 // org.graalvm.compiler.nodes.ValueNode length
        17: .line 130
            aload 8 /* length */
            ifnull 19
        18: .line 131
            aload 8 /* length */
            areturn
        end local 8 // org.graalvm.compiler.nodes.ValueNode length
        19: .line 134
      StackMap locals:
      StackMap stack:
            aload 2 /* locationIdentity */
            instanceof org.graalvm.compiler.nodes.CanonicalizableLocation
            ifeq 25
        20: .line 135
            aload 2 /* locationIdentity */
            checkcast org.graalvm.compiler.nodes.CanonicalizableLocation
            astore 8 /* canonicalize */
        start local 8 // org.graalvm.compiler.nodes.CanonicalizableLocation canonicalize
        21: .line 136
            aload 8 /* canonicalize */
            aload 0 /* read */
            aload 1 /* address */
            aload 7 /* object */
            aload 3 /* tool */
            invokeinterface org.graalvm.compiler.nodes.CanonicalizableLocation.canonicalizeRead:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/memory/address/AddressNode;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/graph/spi/CanonicalizerTool;)Lorg/graalvm/compiler/nodes/ValueNode;
            astore 9 /* result */
        start local 9 // org.graalvm.compiler.nodes.ValueNode result
        22: .line 137
            getstatic org.graalvm.compiler.nodes.memory.ReadNode.$assertionsDisabled:Z
            ifne 24
            aload 9 /* result */
            ifnull 23
            aload 9 /* result */
            aload 4 /* view */
            invokevirtual org.graalvm.compiler.nodes.ValueNode.stamp:(Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/core/common/type/Stamp;
            aload 0 /* read */
            aload 4 /* view */
            invokevirtual org.graalvm.compiler.nodes.ValueNode.stamp:(Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/core/common/type/Stamp;
            invokevirtual org.graalvm.compiler.core.common.type.Stamp.isCompatible:(Lorg/graalvm/compiler/core/common/type/Stamp;)Z
            ifne 24
      StackMap locals: org.graalvm.compiler.nodes.CanonicalizableLocation org.graalvm.compiler.nodes.ValueNode
      StackMap stack:
        23: new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        24: .line 138
      StackMap locals:
      StackMap stack:
            aload 9 /* result */
            areturn
        end local 9 // org.graalvm.compiler.nodes.ValueNode result
        end local 8 // org.graalvm.compiler.nodes.CanonicalizableLocation canonicalize
        end local 7 // org.graalvm.compiler.nodes.ValueNode object
        end local 6 // org.graalvm.compiler.nodes.memory.address.OffsetAddressNode objAddress
        25: .line 142
      StackMap locals: org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.memory.address.AddressNode jdk.internal.vm.compiler.word.LocationIdentity org.graalvm.compiler.graph.spi.CanonicalizerTool org.graalvm.compiler.nodes.NodeView jdk.vm.ci.meta.MetaAccessProvider
      StackMap stack:
            aload 0 /* read */
            areturn
        end local 5 // jdk.vm.ci.meta.MetaAccessProvider metaAccess
        end local 4 // org.graalvm.compiler.nodes.NodeView view
        end local 3 // org.graalvm.compiler.graph.spi.CanonicalizerTool tool
        end local 2 // jdk.internal.vm.compiler.word.LocationIdentity locationIdentity
        end local 1 // org.graalvm.compiler.nodes.memory.address.AddressNode address
        end local 0 // org.graalvm.compiler.nodes.ValueNode read
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   26     0              read  Lorg/graalvm/compiler/nodes/ValueNode;
            0   26     1           address  Lorg/graalvm/compiler/nodes/memory/address/AddressNode;
            0   26     2  locationIdentity  Ljdk/internal/vm/compiler/word/LocationIdentity;
            0   26     3              tool  Lorg/graalvm/compiler/graph/spi/CanonicalizerTool;
            1   26     4              view  Lorg/graalvm/compiler/nodes/NodeView;
            2   26     5        metaAccess  Ljdk/vm/ci/meta/MetaAccessProvider;
            4   25     6        objAddress  Lorg/graalvm/compiler/nodes/memory/address/OffsetAddressNode;
            5   25     7            object  Lorg/graalvm/compiler/nodes/ValueNode;
            7   15     8      displacement  J
            8   15    10   stableDimension  I
           10   15    11          constant  Ljdk/vm/ci/meta/Constant;
           13   15    12   isDefaultStable  Z
           17   19     8            length  Lorg/graalvm/compiler/nodes/ValueNode;
           21   25     8      canonicalize  Lorg/graalvm/compiler/nodes/CanonicalizableLocation;
           22   25     9            result  Lorg/graalvm/compiler/nodes/ValueNode;
    MethodParameters:
                  Name  Flags
      read              
      address           
      locationIdentity  
      tool              

  public void virtualize(org.graalvm.compiler.nodes.spi.VirtualizerTool);
    descriptor: (Lorg/graalvm/compiler/nodes/spi/VirtualizerTool;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.graalvm.compiler.nodes.memory.ReadNode this
        start local 1 // org.graalvm.compiler.nodes.spi.VirtualizerTool tool
         0: .line 147
            ldc "unexpected ReadNode before PEA"
            invokestatic org.graalvm.compiler.debug.GraalError.shouldNotReachHere:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
        end local 1 // org.graalvm.compiler.nodes.spi.VirtualizerTool tool
        end local 0 // org.graalvm.compiler.nodes.memory.ReadNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/nodes/memory/ReadNode;
            0    1     1  tool  Lorg/graalvm/compiler/nodes/spi/VirtualizerTool;
    MethodParameters:
      Name  Flags
      tool  

  public boolean canNullCheck();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.nodes.memory.ReadNode this
         0: .line 152
            iconst_1
            ireturn
        end local 0 // org.graalvm.compiler.nodes.memory.ReadNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/nodes/memory/ReadNode;

  public org.graalvm.compiler.core.common.type.Stamp getAccessStamp(org.graalvm.compiler.nodes.NodeView);
    descriptor: (Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/core/common/type/Stamp;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.graalvm.compiler.nodes.memory.ReadNode this
        start local 1 // org.graalvm.compiler.nodes.NodeView view
         0: .line 157
            aload 0 /* this */
            aload 1 /* view */
            invokevirtual org.graalvm.compiler.nodes.memory.ReadNode.stamp:(Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/core/common/type/Stamp;
            areturn
        end local 1 // org.graalvm.compiler.nodes.NodeView view
        end local 0 // org.graalvm.compiler.nodes.memory.ReadNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/nodes/memory/ReadNode;
            0    1     1  view  Lorg/graalvm/compiler/nodes/NodeView;
    MethodParameters:
      Name  Flags
      view  
}
SourceFile: "ReadNode.java"
InnerClasses:
  public abstract ValueNumberable = org.graalvm.compiler.graph.Node$ValueNumberable of org.graalvm.compiler.graph.Node
  public final BarrierType = org.graalvm.compiler.nodes.memory.OnHeapMemoryAccess$BarrierType of org.graalvm.compiler.nodes.memory.OnHeapMemoryAccess
  public final FindLengthMode = org.graalvm.compiler.nodes.spi.ArrayLengthProvider$FindLengthMode of org.graalvm.compiler.nodes.spi.ArrayLengthProvider
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.nodeinfo.NodeInfo(nameTemplate = "Read#{p#location/s}", cycles = org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_2:Lorg/graalvm/compiler/nodeinfo/NodeCycles;, size = org.graalvm.compiler.nodeinfo.NodeSize.SIZE_1:Lorg/graalvm/compiler/nodeinfo/NodeSize;)