public class org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering extends org.graalvm.compiler.core.amd64.AMD64AddressLowering
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering
  super_class: org.graalvm.compiler.core.amd64.AMD64AddressLowering
{
  private final long heapBase;
    descriptor: J
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final jdk.vm.ci.code.Register heapBaseRegister;
    descriptor: Ljdk/vm/ci/code/Register;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.graalvm.compiler.hotspot.GraalHotSpotVMConfig config;
    descriptor: Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  public void <init>(org.graalvm.compiler.hotspot.GraalHotSpotVMConfig, jdk.vm.ci.code.Register);
    descriptor: (Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;Ljdk/vm/ci/code/Register;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering this
        start local 1 // org.graalvm.compiler.hotspot.GraalHotSpotVMConfig config
        start local 2 // jdk.vm.ci.code.Register heapBaseRegister
         0: .line 78
            aload 0 /* this */
            invokespecial org.graalvm.compiler.core.amd64.AMD64AddressLowering.<init>:()V
         1: .line 79
            aload 0 /* this */
            aload 1 /* config */
            invokevirtual org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.getOopEncoding:()Lorg/graalvm/compiler/hotspot/CompressEncoding;
            getfield org.graalvm.compiler.hotspot.CompressEncoding.base:J
            putfield org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering.heapBase:J
         2: .line 80
            aload 0 /* this */
            aload 1 /* config */
            putfield org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering.config:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
         3: .line 81
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering.heapBase:J
            lconst_0
            lcmp
            ifne 6
            getstatic org.graalvm.compiler.core.common.GraalOptions.GeneratePIC:Lorg/graalvm/compiler/options/OptionValue;
            invokevirtual org.graalvm.compiler.options.OptionValue.getValue:()Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifne 6
         4: .line 82
            aload 0 /* this */
            aconst_null
            putfield org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering.heapBaseRegister:Ljdk/vm/ci/code/Register;
         5: .line 83
            goto 7
         6: .line 84
      StackMap locals: org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering org.graalvm.compiler.hotspot.GraalHotSpotVMConfig jdk.vm.ci.code.Register
      StackMap stack:
            aload 0 /* this */
            aload 2 /* heapBaseRegister */
            putfield org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering.heapBaseRegister:Ljdk/vm/ci/code/Register;
         7: .line 86
      StackMap locals:
      StackMap stack:
            return
        end local 2 // jdk.vm.ci.code.Register heapBaseRegister
        end local 1 // org.graalvm.compiler.hotspot.GraalHotSpotVMConfig config
        end local 0 // org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    8     0              this  Lorg/graalvm/compiler/hotspot/amd64/AMD64HotSpotAddressLowering;
            0    8     1            config  Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            0    8     2  heapBaseRegister  Ljdk/vm/ci/code/Register;
    MethodParameters:
                  Name  Flags
      config            
      heapBaseRegister  

  protected boolean improve(org.graalvm.compiler.core.amd64.AMD64AddressNode);
    descriptor: (Lorg/graalvm/compiler/core/amd64/AMD64AddressNode;)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering this
        start local 1 // org.graalvm.compiler.core.amd64.AMD64AddressNode addr
         0: .line 90
            aload 1 /* addr */
            invokevirtual org.graalvm.compiler.core.amd64.AMD64AddressNode.getScale:()Lorg/graalvm/compiler/asm/amd64/AMD64Address$Scale;
            getstatic org.graalvm.compiler.asm.amd64.AMD64Address$Scale.Times1:Lorg/graalvm/compiler/asm/amd64/AMD64Address$Scale;
            if_acmpne 7
         1: .line 91
            aload 1 /* addr */
            invokevirtual org.graalvm.compiler.core.amd64.AMD64AddressNode.getBase:()Lorg/graalvm/compiler/nodes/ValueNode;
            ifnonnull 4
            aload 1 /* addr */
            invokevirtual org.graalvm.compiler.core.amd64.AMD64AddressNode.getIndex:()Lorg/graalvm/compiler/nodes/ValueNode;
            instanceof org.graalvm.compiler.hotspot.nodes.CompressionNode
            ifeq 4
         2: .line 92
            aload 0 /* this */
            aload 1 /* addr */
            aload 1 /* addr */
            invokevirtual org.graalvm.compiler.core.amd64.AMD64AddressNode.getIndex:()Lorg/graalvm/compiler/nodes/ValueNode;
            checkcast org.graalvm.compiler.hotspot.nodes.CompressionNode
            invokevirtual org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering.improveUncompression:(Lorg/graalvm/compiler/core/amd64/AMD64AddressNode;Lorg/graalvm/compiler/hotspot/nodes/CompressionNode;)Z
            ifeq 4
         3: .line 93
            iconst_1
            ireturn
         4: .line 97
      StackMap locals:
      StackMap stack:
            aload 1 /* addr */
            invokevirtual org.graalvm.compiler.core.amd64.AMD64AddressNode.getIndex:()Lorg/graalvm/compiler/nodes/ValueNode;
            ifnonnull 7
            aload 1 /* addr */
            invokevirtual org.graalvm.compiler.core.amd64.AMD64AddressNode.getBase:()Lorg/graalvm/compiler/nodes/ValueNode;
            instanceof org.graalvm.compiler.hotspot.nodes.CompressionNode
            ifeq 7
         5: .line 98
            aload 0 /* this */
            aload 1 /* addr */
            aload 1 /* addr */
            invokevirtual org.graalvm.compiler.core.amd64.AMD64AddressNode.getBase:()Lorg/graalvm/compiler/nodes/ValueNode;
            checkcast org.graalvm.compiler.hotspot.nodes.CompressionNode
            invokevirtual org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering.improveUncompression:(Lorg/graalvm/compiler/core/amd64/AMD64AddressNode;Lorg/graalvm/compiler/hotspot/nodes/CompressionNode;)Z
            ifeq 7
         6: .line 99
            iconst_1
            ireturn
         7: .line 104
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* addr */
            invokespecial org.graalvm.compiler.core.amd64.AMD64AddressLowering.improve:(Lorg/graalvm/compiler/core/amd64/AMD64AddressNode;)Z
            ireturn
        end local 1 // org.graalvm.compiler.core.amd64.AMD64AddressNode addr
        end local 0 // org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lorg/graalvm/compiler/hotspot/amd64/AMD64HotSpotAddressLowering;
            0    8     1  addr  Lorg/graalvm/compiler/core/amd64/AMD64AddressNode;
    MethodParameters:
      Name  Flags
      addr  

  private boolean improveUncompression(org.graalvm.compiler.core.amd64.AMD64AddressNode, org.graalvm.compiler.hotspot.nodes.CompressionNode);
    descriptor: (Lorg/graalvm/compiler/core/amd64/AMD64AddressNode;Lorg/graalvm/compiler/hotspot/nodes/CompressionNode;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=7, args_size=3
        start local 0 // org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering this
        start local 1 // org.graalvm.compiler.core.amd64.AMD64AddressNode addr
        start local 2 // org.graalvm.compiler.hotspot.nodes.CompressionNode compression
         0: .line 108
            aload 2 /* compression */
            invokevirtual org.graalvm.compiler.hotspot.nodes.CompressionNode.getOp:()Lorg/graalvm/compiler/hotspot/nodes/CompressionNode$CompressionOp;
            getstatic org.graalvm.compiler.hotspot.nodes.CompressionNode$CompressionOp.Uncompress:Lorg/graalvm/compiler/hotspot/nodes/CompressionNode$CompressionOp;
            if_acmpne 26
         1: .line 109
            aload 2 /* compression */
            invokevirtual org.graalvm.compiler.hotspot.nodes.CompressionNode.getEncoding:()Lorg/graalvm/compiler/hotspot/CompressEncoding;
            astore 3 /* encoding */
        start local 3 // org.graalvm.compiler.hotspot.CompressEncoding encoding
         2: .line 110
            aload 3 /* encoding */
            getfield org.graalvm.compiler.hotspot.CompressEncoding.shift:I
            invokestatic org.graalvm.compiler.asm.amd64.AMD64Address$Scale.fromShift:(I)Lorg/graalvm/compiler/asm/amd64/AMD64Address$Scale;
            astore 4 /* scale */
        start local 4 // org.graalvm.compiler.asm.amd64.AMD64Address$Scale scale
         3: .line 111
            aload 4 /* scale */
            ifnonnull 5
         4: .line 112
            iconst_0
            ireturn
         5: .line 115
      StackMap locals: org.graalvm.compiler.hotspot.CompressEncoding org.graalvm.compiler.asm.amd64.AMD64Address$Scale
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering.heapBaseRegister:Ljdk/vm/ci/code/Register;
            ifnull 11
            aload 3 /* encoding */
            getfield org.graalvm.compiler.hotspot.CompressEncoding.base:J
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering.heapBase:J
            lcmp
            ifne 11
         6: .line 116
            getstatic org.graalvm.compiler.core.common.GraalOptions.GeneratePIC:Lorg/graalvm/compiler/options/OptionValue;
            invokevirtual org.graalvm.compiler.options.OptionValue.getValue:()Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 7
            aload 2 /* compression */
            invokevirtual org.graalvm.compiler.hotspot.nodes.CompressionNode.stamp:()Lorg/graalvm/compiler/core/common/type/Stamp;
            instanceof org.graalvm.compiler.core.common.type.ObjectStamp
            ifeq 10
         7: .line 119
      StackMap locals:
      StackMap stack:
            aload 2 /* compression */
            invokevirtual org.graalvm.compiler.hotspot.nodes.CompressionNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            new org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering$HeapBaseNode
            dup
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering.heapBaseRegister:Ljdk/vm/ci/code/Register;
            invokespecial org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering$HeapBaseNode.<init>:(Ljdk/vm/ci/code/Register;)V
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.unique:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
            checkcast org.graalvm.compiler.nodes.ValueNode
            astore 5 /* base */
        start local 5 // org.graalvm.compiler.nodes.ValueNode base
         8: .line 120
            aload 1 /* addr */
            aload 5 /* base */
            invokevirtual org.graalvm.compiler.core.amd64.AMD64AddressNode.setBase:(Lorg/graalvm/compiler/nodes/ValueNode;)V
        end local 5 // org.graalvm.compiler.nodes.ValueNode base
         9: .line 121
            goto 23
        10: .line 122
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        11: .line 124
      StackMap locals:
      StackMap stack:
            aload 3 /* encoding */
            getfield org.graalvm.compiler.hotspot.CompressEncoding.base:J
            lconst_0
            lcmp
            ifne 12
            getstatic org.graalvm.compiler.core.common.GraalOptions.GeneratePIC:Lorg/graalvm/compiler/options/OptionValue;
            invokevirtual org.graalvm.compiler.options.OptionValue.getValue:()Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 22
            aload 2 /* compression */
            invokevirtual org.graalvm.compiler.hotspot.nodes.CompressionNode.stamp:()Lorg/graalvm/compiler/core/common/type/Stamp;
            instanceof org.graalvm.compiler.hotspot.nodes.type.KlassPointerStamp
            ifeq 22
        12: .line 125
      StackMap locals:
      StackMap stack:
            getstatic org.graalvm.compiler.core.common.GraalOptions.GeneratePIC:Lorg/graalvm/compiler/options/OptionValue;
            invokevirtual org.graalvm.compiler.options.OptionValue.getValue:()Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 16
        13: .line 126
            aload 2 /* compression */
            invokevirtual org.graalvm.compiler.hotspot.nodes.CompressionNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            new org.graalvm.compiler.hotspot.nodes.GraalHotSpotVMConfigNode
            dup
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering.config:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering.config:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            getfield org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.MARKID_NARROW_KLASS_BASE_ADDRESS:I
            getstatic jdk.vm.ci.meta.JavaKind.Long:Ljdk/vm/ci/meta/JavaKind;
            invokespecial org.graalvm.compiler.hotspot.nodes.GraalHotSpotVMConfigNode.<init>:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;ILjdk/vm/ci/meta/JavaKind;)V
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.unique:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
            checkcast org.graalvm.compiler.nodes.ValueNode
            astore 5 /* base */
        start local 5 // org.graalvm.compiler.nodes.ValueNode base
        14: .line 127
            aload 1 /* addr */
            aload 5 /* base */
            invokevirtual org.graalvm.compiler.core.amd64.AMD64AddressNode.setBase:(Lorg/graalvm/compiler/nodes/ValueNode;)V
        end local 5 // org.graalvm.compiler.nodes.ValueNode base
        15: .line 128
            goto 23
        16: .line 129
      StackMap locals:
      StackMap stack:
            aload 1 /* addr */
            invokevirtual org.graalvm.compiler.core.amd64.AMD64AddressNode.getDisplacement:()I
            i2l
            aload 3 /* encoding */
            getfield org.graalvm.compiler.hotspot.CompressEncoding.base:J
            ladd
            lstore 5 /* disp */
        start local 5 // long disp
        17: .line 130
            lload 5 /* disp */
            invokestatic org.graalvm.compiler.asm.NumUtil.isInt:(J)Z
            ifeq 21
        18: .line 131
            aload 1 /* addr */
            lload 5 /* disp */
            l2i
            invokevirtual org.graalvm.compiler.core.amd64.AMD64AddressNode.setDisplacement:(I)V
        19: .line 132
            aload 1 /* addr */
            aconst_null
            invokevirtual org.graalvm.compiler.core.amd64.AMD64AddressNode.setBase:(Lorg/graalvm/compiler/nodes/ValueNode;)V
        20: .line 133
            goto 23
        21: .line 134
      StackMap locals: long
      StackMap stack:
            iconst_0
            ireturn
        end local 5 // long disp
        22: .line 138
      StackMap locals:
      StackMap stack:
            aload 1 /* addr */
            aconst_null
            invokevirtual org.graalvm.compiler.core.amd64.AMD64AddressNode.setBase:(Lorg/graalvm/compiler/nodes/ValueNode;)V
        23: .line 141
      StackMap locals:
      StackMap stack:
            aload 1 /* addr */
            aload 4 /* scale */
            invokevirtual org.graalvm.compiler.core.amd64.AMD64AddressNode.setScale:(Lorg/graalvm/compiler/asm/amd64/AMD64Address$Scale;)V
        24: .line 142
            aload 1 /* addr */
            aload 2 /* compression */
            invokevirtual org.graalvm.compiler.hotspot.nodes.CompressionNode.getValue:()Lorg/graalvm/compiler/nodes/ValueNode;
            invokevirtual org.graalvm.compiler.core.amd64.AMD64AddressNode.setIndex:(Lorg/graalvm/compiler/nodes/ValueNode;)V
        25: .line 143
            iconst_1
            ireturn
        end local 4 // org.graalvm.compiler.asm.amd64.AMD64Address$Scale scale
        end local 3 // org.graalvm.compiler.hotspot.CompressEncoding encoding
        26: .line 145
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 2 // org.graalvm.compiler.hotspot.nodes.CompressionNode compression
        end local 1 // org.graalvm.compiler.core.amd64.AMD64AddressNode addr
        end local 0 // org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   27     0         this  Lorg/graalvm/compiler/hotspot/amd64/AMD64HotSpotAddressLowering;
            0   27     1         addr  Lorg/graalvm/compiler/core/amd64/AMD64AddressNode;
            0   27     2  compression  Lorg/graalvm/compiler/hotspot/nodes/CompressionNode;
            2   26     3     encoding  Lorg/graalvm/compiler/hotspot/CompressEncoding;
            3   26     4        scale  Lorg/graalvm/compiler/asm/amd64/AMD64Address$Scale;
            8    9     5         base  Lorg/graalvm/compiler/nodes/ValueNode;
           14   15     5         base  Lorg/graalvm/compiler/nodes/ValueNode;
           17   22     5         disp  J
    MethodParameters:
             Name  Flags
      addr         
      compression  
}
SourceFile: "AMD64HotSpotAddressLowering.java"
NestMembers:
  org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering$HeapBaseNode
InnerClasses:
  public final Scale = org.graalvm.compiler.asm.amd64.AMD64Address$Scale of org.graalvm.compiler.asm.amd64.AMD64Address
  public abstract ValueNumberable = org.graalvm.compiler.graph.Node$ValueNumberable of org.graalvm.compiler.graph.Node
  public HeapBaseNode = org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering$HeapBaseNode of org.graalvm.compiler.hotspot.amd64.AMD64HotSpotAddressLowering
  public final CompressionOp = org.graalvm.compiler.hotspot.nodes.CompressionNode$CompressionOp of org.graalvm.compiler.hotspot.nodes.CompressionNode