public abstract class org.graalvm.compiler.replacements.gc.G1WriteBarrierSnippets$G1WriteBarrierLowerer
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.graalvm.compiler.replacements.gc.G1WriteBarrierSnippets$G1WriteBarrierLowerer
  super_class: java.lang.Object
{
  private final org.graalvm.compiler.replacements.gc.G1WriteBarrierSnippets$Counters counters;
    descriptor: Lorg/graalvm/compiler/replacements/gc/G1WriteBarrierSnippets$Counters;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  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 432
            ldc Lorg/graalvm/compiler/replacements/gc/G1WriteBarrierSnippets;
            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.replacements.gc.G1WriteBarrierSnippets$G1WriteBarrierLowerer.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(org.graalvm.compiler.replacements.SnippetCounter$Group$Factory);
    descriptor: (Lorg/graalvm/compiler/replacements/SnippetCounter$Group$Factory;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.graalvm.compiler.replacements.gc.G1WriteBarrierSnippets$G1WriteBarrierLowerer this
        start local 1 // org.graalvm.compiler.replacements.SnippetCounter$Group$Factory factory
         0: .line 435
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 436
            aload 0 /* this */
            new org.graalvm.compiler.replacements.gc.G1WriteBarrierSnippets$Counters
            dup
            aload 1 /* factory */
            invokespecial org.graalvm.compiler.replacements.gc.G1WriteBarrierSnippets$Counters.<init>:(Lorg/graalvm/compiler/replacements/SnippetCounter$Group$Factory;)V
            putfield org.graalvm.compiler.replacements.gc.G1WriteBarrierSnippets$G1WriteBarrierLowerer.counters:Lorg/graalvm/compiler/replacements/gc/G1WriteBarrierSnippets$Counters;
         2: .line 437
            return
        end local 1 // org.graalvm.compiler.replacements.SnippetCounter$Group$Factory factory
        end local 0 // org.graalvm.compiler.replacements.gc.G1WriteBarrierSnippets$G1WriteBarrierLowerer this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Lorg/graalvm/compiler/replacements/gc/G1WriteBarrierSnippets$G1WriteBarrierLowerer;
            0    3     1  factory  Lorg/graalvm/compiler/replacements/SnippetCounter$Group$Factory;
    MethodParameters:
         Name  Flags
      factory  

  public void lower(org.graalvm.compiler.replacements.SnippetTemplate$AbstractTemplates, org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo, org.graalvm.compiler.nodes.gc.G1PreWriteBarrier, org.graalvm.compiler.nodes.spi.LoweringTool);
    descriptor: (Lorg/graalvm/compiler/replacements/SnippetTemplate$AbstractTemplates;Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;Lorg/graalvm/compiler/nodes/gc/G1PreWriteBarrier;Lorg/graalvm/compiler/nodes/spi/LoweringTool;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=8, args_size=5
        start local 0 // org.graalvm.compiler.replacements.gc.G1WriteBarrierSnippets$G1WriteBarrierLowerer this
        start local 1 // org.graalvm.compiler.replacements.SnippetTemplate$AbstractTemplates templates
        start local 2 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippet
        start local 3 // org.graalvm.compiler.nodes.gc.G1PreWriteBarrier barrier
        start local 4 // org.graalvm.compiler.nodes.spi.LoweringTool tool
         0: .line 440
            new org.graalvm.compiler.replacements.SnippetTemplate$Arguments
            dup
            aload 2 /* snippet */
            aload 3 /* barrier */
            invokevirtual org.graalvm.compiler.nodes.gc.G1PreWriteBarrier.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getGuardsStage:()Lorg/graalvm/compiler/nodes/StructuredGraph$GuardsStage;
            aload 4 /* tool */
            invokeinterface org.graalvm.compiler.nodes.spi.LoweringTool.getLoweringStage:()Lorg/graalvm/compiler/nodes/spi/LoweringTool$LoweringStage;
            invokespecial org.graalvm.compiler.replacements.SnippetTemplate$Arguments.<init>:(Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;Lorg/graalvm/compiler/nodes/StructuredGraph$GuardsStage;Lorg/graalvm/compiler/nodes/spi/LoweringTool$LoweringStage;)V
            astore 5 /* args */
        start local 5 // org.graalvm.compiler.replacements.SnippetTemplate$Arguments args
         1: .line 441
            aload 3 /* barrier */
            invokevirtual org.graalvm.compiler.nodes.gc.G1PreWriteBarrier.getAddress:()Lorg/graalvm/compiler/nodes/memory/address/AddressNode;
            astore 6 /* address */
        start local 6 // org.graalvm.compiler.nodes.memory.address.AddressNode address
         2: .line 442
            aload 5 /* args */
            ldc "address"
            aload 6 /* address */
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.add:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
         3: .line 443
            aload 6 /* address */
            instanceof org.graalvm.compiler.nodes.memory.address.OffsetAddressNode
            ifeq 6
         4: .line 444
            aload 5 /* args */
            ldc "object"
            aload 6 /* address */
            checkcast org.graalvm.compiler.nodes.memory.address.OffsetAddressNode
            invokevirtual org.graalvm.compiler.nodes.memory.address.OffsetAddressNode.getBase:()Lorg/graalvm/compiler/nodes/ValueNode;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.add:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
         5: .line 445
            goto 7
         6: .line 446
      StackMap locals: org.graalvm.compiler.replacements.SnippetTemplate$Arguments org.graalvm.compiler.nodes.memory.address.AddressNode
      StackMap stack:
            aload 5 /* args */
            ldc "object"
            aconst_null
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.add:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
         7: .line 449
      StackMap locals:
      StackMap stack:
            aload 3 /* barrier */
            invokevirtual org.graalvm.compiler.nodes.gc.G1PreWriteBarrier.getExpectedObject:()Lorg/graalvm/compiler/nodes/ValueNode;
            astore 7 /* expected */
        start local 7 // org.graalvm.compiler.nodes.ValueNode expected
         8: .line 450
            aload 7 /* expected */
            ifnull 10
            aload 7 /* expected */
            getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
            invokevirtual org.graalvm.compiler.nodes.ValueNode.stamp:(Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/core/common/type/Stamp;
            instanceof org.graalvm.compiler.nodes.type.NarrowOopStamp
            ifeq 10
         9: .line 451
            aload 0 /* this */
            aload 7 /* expected */
            invokevirtual org.graalvm.compiler.replacements.gc.G1WriteBarrierSnippets$G1WriteBarrierLowerer.uncompress:(Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/ValueNode;
            astore 7 /* expected */
        10: .line 453
      StackMap locals: org.graalvm.compiler.nodes.ValueNode
      StackMap stack:
            aload 5 /* args */
            ldc "expectedObject"
            aload 7 /* expected */
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.add:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        11: .line 455
            aload 5 /* args */
            ldc "doLoad"
            aload 3 /* barrier */
            invokevirtual org.graalvm.compiler.nodes.gc.G1PreWriteBarrier.doLoad:()Z
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.addConst:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        12: .line 456
            aload 5 /* args */
            ldc "nullCheck"
            aload 3 /* barrier */
            invokevirtual org.graalvm.compiler.nodes.gc.G1PreWriteBarrier.getNullCheck:()Z
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.addConst:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        13: .line 457
            aload 5 /* args */
            ldc "traceStartCycle"
            aload 3 /* barrier */
            invokevirtual org.graalvm.compiler.nodes.gc.G1PreWriteBarrier.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            invokestatic org.graalvm.compiler.replacements.gc.G1WriteBarrierSnippets$G1WriteBarrierLowerer.traceStartCycle:(Lorg/graalvm/compiler/nodes/StructuredGraph;)I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.addConst:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        14: .line 458
            aload 5 /* args */
            ldc "counters"
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.gc.G1WriteBarrierSnippets$G1WriteBarrierLowerer.counters:Lorg/graalvm/compiler/replacements/gc/G1WriteBarrierSnippets$Counters;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.addConst:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        15: .line 460
            aload 1 /* templates */
            aload 3 /* barrier */
            aload 5 /* args */
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$AbstractTemplates.template:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;)Lorg/graalvm/compiler/replacements/SnippetTemplate;
            aload 1 /* templates */
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$AbstractTemplates.getProviders:()Lorg/graalvm/compiler/phases/util/Providers;
            invokevirtual org.graalvm.compiler.phases.util.Providers.getMetaAccess:()Ljdk/vm/ci/meta/MetaAccessProvider;
            aload 3 /* barrier */
            getstatic org.graalvm.compiler.replacements.SnippetTemplate.DEFAULT_REPLACER:Lorg/graalvm/compiler/replacements/SnippetTemplate$UsageReplacer;
            aload 5 /* args */
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate.instantiate:(Ljdk/vm/ci/meta/MetaAccessProvider;Lorg/graalvm/compiler/nodes/FixedNode;Lorg/graalvm/compiler/replacements/SnippetTemplate$UsageReplacer;Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;)Ljdk/internal/vm/compiler/collections/UnmodifiableEconomicMap;
            pop
        16: .line 461
            return
        end local 7 // org.graalvm.compiler.nodes.ValueNode expected
        end local 6 // org.graalvm.compiler.nodes.memory.address.AddressNode address
        end local 5 // org.graalvm.compiler.replacements.SnippetTemplate$Arguments args
        end local 4 // org.graalvm.compiler.nodes.spi.LoweringTool tool
        end local 3 // org.graalvm.compiler.nodes.gc.G1PreWriteBarrier barrier
        end local 2 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippet
        end local 1 // org.graalvm.compiler.replacements.SnippetTemplate$AbstractTemplates templates
        end local 0 // org.graalvm.compiler.replacements.gc.G1WriteBarrierSnippets$G1WriteBarrierLowerer this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   17     0       this  Lorg/graalvm/compiler/replacements/gc/G1WriteBarrierSnippets$G1WriteBarrierLowerer;
            0   17     1  templates  Lorg/graalvm/compiler/replacements/SnippetTemplate$AbstractTemplates;
            0   17     2    snippet  Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            0   17     3    barrier  Lorg/graalvm/compiler/nodes/gc/G1PreWriteBarrier;
            0   17     4       tool  Lorg/graalvm/compiler/nodes/spi/LoweringTool;
            1   17     5       args  Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            2   17     6    address  Lorg/graalvm/compiler/nodes/memory/address/AddressNode;
            8   17     7   expected  Lorg/graalvm/compiler/nodes/ValueNode;
    MethodParameters:
           Name  Flags
      templates  
      snippet    
      barrier    
      tool       

  public void lower(org.graalvm.compiler.replacements.SnippetTemplate$AbstractTemplates, org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo, org.graalvm.compiler.nodes.gc.G1ReferentFieldReadBarrier, org.graalvm.compiler.nodes.spi.LoweringTool);
    descriptor: (Lorg/graalvm/compiler/replacements/SnippetTemplate$AbstractTemplates;Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;Lorg/graalvm/compiler/nodes/gc/G1ReferentFieldReadBarrier;Lorg/graalvm/compiler/nodes/spi/LoweringTool;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=8, args_size=5
        start local 0 // org.graalvm.compiler.replacements.gc.G1WriteBarrierSnippets$G1WriteBarrierLowerer this
        start local 1 // org.graalvm.compiler.replacements.SnippetTemplate$AbstractTemplates templates
        start local 2 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippet
        start local 3 // org.graalvm.compiler.nodes.gc.G1ReferentFieldReadBarrier barrier
        start local 4 // org.graalvm.compiler.nodes.spi.LoweringTool tool
         0: .line 464
            new org.graalvm.compiler.replacements.SnippetTemplate$Arguments
            dup
            aload 2 /* snippet */
            aload 3 /* barrier */
            invokevirtual org.graalvm.compiler.nodes.gc.G1ReferentFieldReadBarrier.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getGuardsStage:()Lorg/graalvm/compiler/nodes/StructuredGraph$GuardsStage;
            aload 4 /* tool */
            invokeinterface org.graalvm.compiler.nodes.spi.LoweringTool.getLoweringStage:()Lorg/graalvm/compiler/nodes/spi/LoweringTool$LoweringStage;
            invokespecial org.graalvm.compiler.replacements.SnippetTemplate$Arguments.<init>:(Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;Lorg/graalvm/compiler/nodes/StructuredGraph$GuardsStage;Lorg/graalvm/compiler/nodes/spi/LoweringTool$LoweringStage;)V
            astore 5 /* args */
        start local 5 // org.graalvm.compiler.replacements.SnippetTemplate$Arguments args
         1: .line 466
            aload 3 /* barrier */
            invokevirtual org.graalvm.compiler.nodes.gc.G1ReferentFieldReadBarrier.getAddress:()Lorg/graalvm/compiler/nodes/memory/address/AddressNode;
            checkcast org.graalvm.compiler.nodes.memory.address.OffsetAddressNode
            astore 6 /* address */
        start local 6 // org.graalvm.compiler.nodes.memory.address.OffsetAddressNode address
         2: .line 467
            aload 5 /* args */
            ldc "address"
            aload 6 /* address */
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.add:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
         3: .line 468
            aload 5 /* args */
            ldc "object"
            aload 6 /* address */
            invokevirtual org.graalvm.compiler.nodes.memory.address.OffsetAddressNode.getBase:()Lorg/graalvm/compiler/nodes/ValueNode;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.add:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
         4: .line 470
            aload 3 /* barrier */
            invokevirtual org.graalvm.compiler.nodes.gc.G1ReferentFieldReadBarrier.getExpectedObject:()Lorg/graalvm/compiler/nodes/ValueNode;
            astore 7 /* expected */
        start local 7 // org.graalvm.compiler.nodes.ValueNode expected
         5: .line 471
            aload 7 /* expected */
            ifnull 7
            aload 7 /* expected */
            getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
            invokevirtual org.graalvm.compiler.nodes.ValueNode.stamp:(Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/core/common/type/Stamp;
            instanceof org.graalvm.compiler.nodes.type.NarrowOopStamp
            ifeq 7
         6: .line 472
            aload 0 /* this */
            aload 7 /* expected */
            invokevirtual org.graalvm.compiler.replacements.gc.G1WriteBarrierSnippets$G1WriteBarrierLowerer.uncompress:(Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/ValueNode;
            astore 7 /* expected */
         7: .line 475
      StackMap locals: org.graalvm.compiler.replacements.SnippetTemplate$Arguments org.graalvm.compiler.nodes.memory.address.OffsetAddressNode org.graalvm.compiler.nodes.ValueNode
      StackMap stack:
            aload 5 /* args */
            ldc "expectedObject"
            aload 7 /* expected */
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.add:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
         8: .line 476
            aload 5 /* args */
            ldc "isDynamicCheck"
            aload 3 /* barrier */
            invokevirtual org.graalvm.compiler.nodes.gc.G1ReferentFieldReadBarrier.isDynamicCheck:()Z
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.addConst:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
         9: .line 477
            aload 5 /* args */
            ldc "offset"
            aload 6 /* address */
            invokevirtual org.graalvm.compiler.nodes.memory.address.OffsetAddressNode.getOffset:()Lorg/graalvm/compiler/nodes/ValueNode;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.add:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        10: .line 478
            aload 5 /* args */
            ldc "traceStartCycle"
            aload 3 /* barrier */
            invokevirtual org.graalvm.compiler.nodes.gc.G1ReferentFieldReadBarrier.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            invokestatic org.graalvm.compiler.replacements.gc.G1WriteBarrierSnippets$G1WriteBarrierLowerer.traceStartCycle:(Lorg/graalvm/compiler/nodes/StructuredGraph;)I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.addConst:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        11: .line 479
            aload 5 /* args */
            ldc "counters"
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.gc.G1WriteBarrierSnippets$G1WriteBarrierLowerer.counters:Lorg/graalvm/compiler/replacements/gc/G1WriteBarrierSnippets$Counters;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.addConst:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        12: .line 481
            aload 1 /* templates */
            aload 3 /* barrier */
            aload 5 /* args */
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$AbstractTemplates.template:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;)Lorg/graalvm/compiler/replacements/SnippetTemplate;
            aload 1 /* templates */
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$AbstractTemplates.getProviders:()Lorg/graalvm/compiler/phases/util/Providers;
            invokevirtual org.graalvm.compiler.phases.util.Providers.getMetaAccess:()Ljdk/vm/ci/meta/MetaAccessProvider;
            aload 3 /* barrier */
            getstatic org.graalvm.compiler.replacements.SnippetTemplate.DEFAULT_REPLACER:Lorg/graalvm/compiler/replacements/SnippetTemplate$UsageReplacer;
            aload 5 /* args */
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate.instantiate:(Ljdk/vm/ci/meta/MetaAccessProvider;Lorg/graalvm/compiler/nodes/FixedNode;Lorg/graalvm/compiler/replacements/SnippetTemplate$UsageReplacer;Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;)Ljdk/internal/vm/compiler/collections/UnmodifiableEconomicMap;
            pop
        13: .line 482
            return
        end local 7 // org.graalvm.compiler.nodes.ValueNode expected
        end local 6 // org.graalvm.compiler.nodes.memory.address.OffsetAddressNode address
        end local 5 // org.graalvm.compiler.replacements.SnippetTemplate$Arguments args
        end local 4 // org.graalvm.compiler.nodes.spi.LoweringTool tool
        end local 3 // org.graalvm.compiler.nodes.gc.G1ReferentFieldReadBarrier barrier
        end local 2 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippet
        end local 1 // org.graalvm.compiler.replacements.SnippetTemplate$AbstractTemplates templates
        end local 0 // org.graalvm.compiler.replacements.gc.G1WriteBarrierSnippets$G1WriteBarrierLowerer this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   14     0       this  Lorg/graalvm/compiler/replacements/gc/G1WriteBarrierSnippets$G1WriteBarrierLowerer;
            0   14     1  templates  Lorg/graalvm/compiler/replacements/SnippetTemplate$AbstractTemplates;
            0   14     2    snippet  Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            0   14     3    barrier  Lorg/graalvm/compiler/nodes/gc/G1ReferentFieldReadBarrier;
            0   14     4       tool  Lorg/graalvm/compiler/nodes/spi/LoweringTool;
            1   14     5       args  Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            2   14     6    address  Lorg/graalvm/compiler/nodes/memory/address/OffsetAddressNode;
            5   14     7   expected  Lorg/graalvm/compiler/nodes/ValueNode;
    MethodParameters:
           Name  Flags
      templates  
      snippet    
      barrier    
      tool       

  public void lower(org.graalvm.compiler.replacements.SnippetTemplate$AbstractTemplates, org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo, org.graalvm.compiler.nodes.gc.G1PostWriteBarrier, org.graalvm.compiler.nodes.spi.LoweringTool);
    descriptor: (Lorg/graalvm/compiler/replacements/SnippetTemplate$AbstractTemplates;Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;Lorg/graalvm/compiler/nodes/gc/G1PostWriteBarrier;Lorg/graalvm/compiler/nodes/spi/LoweringTool;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=8, args_size=5
        start local 0 // org.graalvm.compiler.replacements.gc.G1WriteBarrierSnippets$G1WriteBarrierLowerer this
        start local 1 // org.graalvm.compiler.replacements.SnippetTemplate$AbstractTemplates templates
        start local 2 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippet
        start local 3 // org.graalvm.compiler.nodes.gc.G1PostWriteBarrier barrier
        start local 4 // org.graalvm.compiler.nodes.spi.LoweringTool tool
         0: .line 485
            aload 3 /* barrier */
            invokevirtual org.graalvm.compiler.nodes.gc.G1PostWriteBarrier.alwaysNull:()Z
            ifeq 3
         1: .line 486
            aload 3 /* barrier */
            invokevirtual org.graalvm.compiler.nodes.gc.G1PostWriteBarrier.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            aload 3 /* barrier */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.removeFixed:(Lorg/graalvm/compiler/nodes/FixedWithNextNode;)V
         2: .line 487
            return
         3: .line 490
      StackMap locals:
      StackMap stack:
            new org.graalvm.compiler.replacements.SnippetTemplate$Arguments
            dup
            aload 2 /* snippet */
            aload 3 /* barrier */
            invokevirtual org.graalvm.compiler.nodes.gc.G1PostWriteBarrier.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getGuardsStage:()Lorg/graalvm/compiler/nodes/StructuredGraph$GuardsStage;
            aload 4 /* tool */
            invokeinterface org.graalvm.compiler.nodes.spi.LoweringTool.getLoweringStage:()Lorg/graalvm/compiler/nodes/spi/LoweringTool$LoweringStage;
            invokespecial org.graalvm.compiler.replacements.SnippetTemplate$Arguments.<init>:(Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;Lorg/graalvm/compiler/nodes/StructuredGraph$GuardsStage;Lorg/graalvm/compiler/nodes/spi/LoweringTool$LoweringStage;)V
            astore 5 /* args */
        start local 5 // org.graalvm.compiler.replacements.SnippetTemplate$Arguments args
         4: .line 491
            aload 3 /* barrier */
            invokevirtual org.graalvm.compiler.nodes.gc.G1PostWriteBarrier.getAddress:()Lorg/graalvm/compiler/nodes/memory/address/AddressNode;
            astore 6 /* address */
        start local 6 // org.graalvm.compiler.nodes.memory.address.AddressNode address
         5: .line 492
            aload 5 /* args */
            ldc "address"
            aload 6 /* address */
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.add:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
         6: .line 493
            aload 6 /* address */
            instanceof org.graalvm.compiler.nodes.memory.address.OffsetAddressNode
            ifeq 9
         7: .line 494
            aload 5 /* args */
            ldc "object"
            aload 6 /* address */
            checkcast org.graalvm.compiler.nodes.memory.address.OffsetAddressNode
            invokevirtual org.graalvm.compiler.nodes.memory.address.OffsetAddressNode.getBase:()Lorg/graalvm/compiler/nodes/ValueNode;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.add:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
         8: .line 495
            goto 11
         9: .line 496
      StackMap locals: org.graalvm.compiler.replacements.SnippetTemplate$Arguments org.graalvm.compiler.nodes.memory.address.AddressNode
      StackMap stack:
            getstatic org.graalvm.compiler.replacements.gc.G1WriteBarrierSnippets$G1WriteBarrierLowerer.$assertionsDisabled:Z
            ifne 10
            aload 3 /* barrier */
            invokevirtual org.graalvm.compiler.nodes.gc.G1PostWriteBarrier.usePrecise:()Z
            ifne 10
            new java.lang.AssertionError
            dup
            new java.lang.StringBuilder
            dup
            ldc "found imprecise barrier that's not an object access "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* barrier */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        10: .line 497
      StackMap locals:
      StackMap stack:
            aload 5 /* args */
            ldc "object"
            aconst_null
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.add:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        11: .line 500
      StackMap locals:
      StackMap stack:
            aload 3 /* barrier */
            invokevirtual org.graalvm.compiler.nodes.gc.G1PostWriteBarrier.getValue:()Lorg/graalvm/compiler/nodes/ValueNode;
            astore 7 /* value */
        start local 7 // org.graalvm.compiler.nodes.ValueNode value
        12: .line 501
            aload 7 /* value */
            getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
            invokevirtual org.graalvm.compiler.nodes.ValueNode.stamp:(Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/core/common/type/Stamp;
            instanceof org.graalvm.compiler.nodes.type.NarrowOopStamp
            ifeq 14
        13: .line 502
            aload 0 /* this */
            aload 7 /* value */
            invokevirtual org.graalvm.compiler.replacements.gc.G1WriteBarrierSnippets$G1WriteBarrierLowerer.uncompress:(Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/ValueNode;
            astore 7 /* value */
        14: .line 504
      StackMap locals: org.graalvm.compiler.nodes.ValueNode
      StackMap stack:
            aload 5 /* args */
            ldc "value"
            aload 7 /* value */
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.add:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        15: .line 506
            aload 5 /* args */
            ldc "usePrecise"
            aload 3 /* barrier */
            invokevirtual org.graalvm.compiler.nodes.gc.G1PostWriteBarrier.usePrecise:()Z
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.addConst:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        16: .line 507
            aload 5 /* args */
            ldc "traceStartCycle"
            aload 3 /* barrier */
            invokevirtual org.graalvm.compiler.nodes.gc.G1PostWriteBarrier.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            invokestatic org.graalvm.compiler.replacements.gc.G1WriteBarrierSnippets$G1WriteBarrierLowerer.traceStartCycle:(Lorg/graalvm/compiler/nodes/StructuredGraph;)I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.addConst:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        17: .line 508
            aload 5 /* args */
            ldc "counters"
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.gc.G1WriteBarrierSnippets$G1WriteBarrierLowerer.counters:Lorg/graalvm/compiler/replacements/gc/G1WriteBarrierSnippets$Counters;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.addConst:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        18: .line 510
            aload 1 /* templates */
            aload 3 /* barrier */
            aload 5 /* args */
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$AbstractTemplates.template:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;)Lorg/graalvm/compiler/replacements/SnippetTemplate;
            aload 1 /* templates */
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$AbstractTemplates.getProviders:()Lorg/graalvm/compiler/phases/util/Providers;
            invokevirtual org.graalvm.compiler.phases.util.Providers.getMetaAccess:()Ljdk/vm/ci/meta/MetaAccessProvider;
            aload 3 /* barrier */
            getstatic org.graalvm.compiler.replacements.SnippetTemplate.DEFAULT_REPLACER:Lorg/graalvm/compiler/replacements/SnippetTemplate$UsageReplacer;
            aload 5 /* args */
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate.instantiate:(Ljdk/vm/ci/meta/MetaAccessProvider;Lorg/graalvm/compiler/nodes/FixedNode;Lorg/graalvm/compiler/replacements/SnippetTemplate$UsageReplacer;Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;)Ljdk/internal/vm/compiler/collections/UnmodifiableEconomicMap;
            pop
        19: .line 511
            return
        end local 7 // org.graalvm.compiler.nodes.ValueNode value
        end local 6 // org.graalvm.compiler.nodes.memory.address.AddressNode address
        end local 5 // org.graalvm.compiler.replacements.SnippetTemplate$Arguments args
        end local 4 // org.graalvm.compiler.nodes.spi.LoweringTool tool
        end local 3 // org.graalvm.compiler.nodes.gc.G1PostWriteBarrier barrier
        end local 2 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippet
        end local 1 // org.graalvm.compiler.replacements.SnippetTemplate$AbstractTemplates templates
        end local 0 // org.graalvm.compiler.replacements.gc.G1WriteBarrierSnippets$G1WriteBarrierLowerer this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   20     0       this  Lorg/graalvm/compiler/replacements/gc/G1WriteBarrierSnippets$G1WriteBarrierLowerer;
            0   20     1  templates  Lorg/graalvm/compiler/replacements/SnippetTemplate$AbstractTemplates;
            0   20     2    snippet  Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            0   20     3    barrier  Lorg/graalvm/compiler/nodes/gc/G1PostWriteBarrier;
            0   20     4       tool  Lorg/graalvm/compiler/nodes/spi/LoweringTool;
            4   20     5       args  Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            5   20     6    address  Lorg/graalvm/compiler/nodes/memory/address/AddressNode;
           12   20     7      value  Lorg/graalvm/compiler/nodes/ValueNode;
    MethodParameters:
           Name  Flags
      templates  
      snippet    
      barrier    
      tool       

  public void lower(org.graalvm.compiler.replacements.SnippetTemplate$AbstractTemplates, org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo, org.graalvm.compiler.nodes.gc.G1ArrayRangePreWriteBarrier, org.graalvm.compiler.nodes.spi.LoweringTool);
    descriptor: (Lorg/graalvm/compiler/replacements/SnippetTemplate$AbstractTemplates;Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;Lorg/graalvm/compiler/nodes/gc/G1ArrayRangePreWriteBarrier;Lorg/graalvm/compiler/nodes/spi/LoweringTool;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=6, args_size=5
        start local 0 // org.graalvm.compiler.replacements.gc.G1WriteBarrierSnippets$G1WriteBarrierLowerer this
        start local 1 // org.graalvm.compiler.replacements.SnippetTemplate$AbstractTemplates templates
        start local 2 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippet
        start local 3 // org.graalvm.compiler.nodes.gc.G1ArrayRangePreWriteBarrier barrier
        start local 4 // org.graalvm.compiler.nodes.spi.LoweringTool tool
         0: .line 514
            new org.graalvm.compiler.replacements.SnippetTemplate$Arguments
            dup
            aload 2 /* snippet */
            aload 3 /* barrier */
            invokevirtual org.graalvm.compiler.nodes.gc.G1ArrayRangePreWriteBarrier.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getGuardsStage:()Lorg/graalvm/compiler/nodes/StructuredGraph$GuardsStage;
            aload 4 /* tool */
            invokeinterface org.graalvm.compiler.nodes.spi.LoweringTool.getLoweringStage:()Lorg/graalvm/compiler/nodes/spi/LoweringTool$LoweringStage;
            invokespecial org.graalvm.compiler.replacements.SnippetTemplate$Arguments.<init>:(Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;Lorg/graalvm/compiler/nodes/StructuredGraph$GuardsStage;Lorg/graalvm/compiler/nodes/spi/LoweringTool$LoweringStage;)V
            astore 5 /* args */
        start local 5 // org.graalvm.compiler.replacements.SnippetTemplate$Arguments args
         1: .line 515
            aload 5 /* args */
            ldc "address"
            aload 3 /* barrier */
            invokevirtual org.graalvm.compiler.nodes.gc.G1ArrayRangePreWriteBarrier.getAddress:()Lorg/graalvm/compiler/nodes/memory/address/AddressNode;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.add:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
         2: .line 516
            aload 5 /* args */
            ldc "length"
            aload 3 /* barrier */
            invokevirtual org.graalvm.compiler.nodes.gc.G1ArrayRangePreWriteBarrier.getLength:()Lorg/graalvm/compiler/nodes/ValueNode;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.add:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
         3: .line 517
            aload 5 /* args */
            ldc "elementStride"
            aload 3 /* barrier */
            invokevirtual org.graalvm.compiler.nodes.gc.G1ArrayRangePreWriteBarrier.getElementStride:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.addConst:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
         4: .line 519
            aload 1 /* templates */
            aload 3 /* barrier */
            aload 5 /* args */
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$AbstractTemplates.template:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;)Lorg/graalvm/compiler/replacements/SnippetTemplate;
            aload 1 /* templates */
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$AbstractTemplates.getProviders:()Lorg/graalvm/compiler/phases/util/Providers;
            invokevirtual org.graalvm.compiler.phases.util.Providers.getMetaAccess:()Ljdk/vm/ci/meta/MetaAccessProvider;
            aload 3 /* barrier */
            getstatic org.graalvm.compiler.replacements.SnippetTemplate.DEFAULT_REPLACER:Lorg/graalvm/compiler/replacements/SnippetTemplate$UsageReplacer;
            aload 5 /* args */
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate.instantiate:(Ljdk/vm/ci/meta/MetaAccessProvider;Lorg/graalvm/compiler/nodes/FixedNode;Lorg/graalvm/compiler/replacements/SnippetTemplate$UsageReplacer;Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;)Ljdk/internal/vm/compiler/collections/UnmodifiableEconomicMap;
            pop
         5: .line 520
            return
        end local 5 // org.graalvm.compiler.replacements.SnippetTemplate$Arguments args
        end local 4 // org.graalvm.compiler.nodes.spi.LoweringTool tool
        end local 3 // org.graalvm.compiler.nodes.gc.G1ArrayRangePreWriteBarrier barrier
        end local 2 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippet
        end local 1 // org.graalvm.compiler.replacements.SnippetTemplate$AbstractTemplates templates
        end local 0 // org.graalvm.compiler.replacements.gc.G1WriteBarrierSnippets$G1WriteBarrierLowerer this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    6     0       this  Lorg/graalvm/compiler/replacements/gc/G1WriteBarrierSnippets$G1WriteBarrierLowerer;
            0    6     1  templates  Lorg/graalvm/compiler/replacements/SnippetTemplate$AbstractTemplates;
            0    6     2    snippet  Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            0    6     3    barrier  Lorg/graalvm/compiler/nodes/gc/G1ArrayRangePreWriteBarrier;
            0    6     4       tool  Lorg/graalvm/compiler/nodes/spi/LoweringTool;
            1    6     5       args  Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
    MethodParameters:
           Name  Flags
      templates  
      snippet    
      barrier    
      tool       

  public void lower(org.graalvm.compiler.replacements.SnippetTemplate$AbstractTemplates, org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo, org.graalvm.compiler.nodes.gc.G1ArrayRangePostWriteBarrier, org.graalvm.compiler.nodes.spi.LoweringTool);
    descriptor: (Lorg/graalvm/compiler/replacements/SnippetTemplate$AbstractTemplates;Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;Lorg/graalvm/compiler/nodes/gc/G1ArrayRangePostWriteBarrier;Lorg/graalvm/compiler/nodes/spi/LoweringTool;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=6, args_size=5
        start local 0 // org.graalvm.compiler.replacements.gc.G1WriteBarrierSnippets$G1WriteBarrierLowerer this
        start local 1 // org.graalvm.compiler.replacements.SnippetTemplate$AbstractTemplates templates
        start local 2 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippet
        start local 3 // org.graalvm.compiler.nodes.gc.G1ArrayRangePostWriteBarrier barrier
        start local 4 // org.graalvm.compiler.nodes.spi.LoweringTool tool
         0: .line 523
            new org.graalvm.compiler.replacements.SnippetTemplate$Arguments
            dup
            aload 2 /* snippet */
            aload 3 /* barrier */
            invokevirtual org.graalvm.compiler.nodes.gc.G1ArrayRangePostWriteBarrier.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getGuardsStage:()Lorg/graalvm/compiler/nodes/StructuredGraph$GuardsStage;
            aload 4 /* tool */
            invokeinterface org.graalvm.compiler.nodes.spi.LoweringTool.getLoweringStage:()Lorg/graalvm/compiler/nodes/spi/LoweringTool$LoweringStage;
            invokespecial org.graalvm.compiler.replacements.SnippetTemplate$Arguments.<init>:(Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;Lorg/graalvm/compiler/nodes/StructuredGraph$GuardsStage;Lorg/graalvm/compiler/nodes/spi/LoweringTool$LoweringStage;)V
            astore 5 /* args */
        start local 5 // org.graalvm.compiler.replacements.SnippetTemplate$Arguments args
         1: .line 524
            aload 5 /* args */
            ldc "address"
            aload 3 /* barrier */
            invokevirtual org.graalvm.compiler.nodes.gc.G1ArrayRangePostWriteBarrier.getAddress:()Lorg/graalvm/compiler/nodes/memory/address/AddressNode;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.add:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
         2: .line 525
            aload 5 /* args */
            ldc "length"
            aload 3 /* barrier */
            invokevirtual org.graalvm.compiler.nodes.gc.G1ArrayRangePostWriteBarrier.getLength:()Lorg/graalvm/compiler/nodes/ValueNode;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.add:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
         3: .line 526
            aload 5 /* args */
            ldc "elementStride"
            aload 3 /* barrier */
            invokevirtual org.graalvm.compiler.nodes.gc.G1ArrayRangePostWriteBarrier.getElementStride:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.addConst:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
         4: .line 528
            aload 1 /* templates */
            aload 3 /* barrier */
            aload 5 /* args */
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$AbstractTemplates.template:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;)Lorg/graalvm/compiler/replacements/SnippetTemplate;
            aload 1 /* templates */
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$AbstractTemplates.getProviders:()Lorg/graalvm/compiler/phases/util/Providers;
            invokevirtual org.graalvm.compiler.phases.util.Providers.getMetaAccess:()Ljdk/vm/ci/meta/MetaAccessProvider;
            aload 3 /* barrier */
            getstatic org.graalvm.compiler.replacements.SnippetTemplate.DEFAULT_REPLACER:Lorg/graalvm/compiler/replacements/SnippetTemplate$UsageReplacer;
            aload 5 /* args */
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate.instantiate:(Ljdk/vm/ci/meta/MetaAccessProvider;Lorg/graalvm/compiler/nodes/FixedNode;Lorg/graalvm/compiler/replacements/SnippetTemplate$UsageReplacer;Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;)Ljdk/internal/vm/compiler/collections/UnmodifiableEconomicMap;
            pop
         5: .line 529
            return
        end local 5 // org.graalvm.compiler.replacements.SnippetTemplate$Arguments args
        end local 4 // org.graalvm.compiler.nodes.spi.LoweringTool tool
        end local 3 // org.graalvm.compiler.nodes.gc.G1ArrayRangePostWriteBarrier barrier
        end local 2 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo snippet
        end local 1 // org.graalvm.compiler.replacements.SnippetTemplate$AbstractTemplates templates
        end local 0 // org.graalvm.compiler.replacements.gc.G1WriteBarrierSnippets$G1WriteBarrierLowerer this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    6     0       this  Lorg/graalvm/compiler/replacements/gc/G1WriteBarrierSnippets$G1WriteBarrierLowerer;
            0    6     1  templates  Lorg/graalvm/compiler/replacements/SnippetTemplate$AbstractTemplates;
            0    6     2    snippet  Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            0    6     3    barrier  Lorg/graalvm/compiler/nodes/gc/G1ArrayRangePostWriteBarrier;
            0    6     4       tool  Lorg/graalvm/compiler/nodes/spi/LoweringTool;
            1    6     5       args  Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
    MethodParameters:
           Name  Flags
      templates  
      snippet    
      barrier    
      tool       

  private static int traceStartCycle(org.graalvm.compiler.nodes.StructuredGraph);
    descriptor: (Lorg/graalvm/compiler/nodes/StructuredGraph;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.nodes.StructuredGraph graph
         0: .line 532
            getstatic org.graalvm.compiler.core.common.GraalOptions.GCDebugStartCycle:Lorg/graalvm/compiler/options/OptionKey;
            aload 0 /* graph */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getOptions:()Lorg/graalvm/compiler/options/OptionValues;
            invokevirtual org.graalvm.compiler.options.OptionKey.getValue:(Lorg/graalvm/compiler/options/OptionValues;)Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            ireturn
        end local 0 // org.graalvm.compiler.nodes.StructuredGraph graph
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0  graph  Lorg/graalvm/compiler/nodes/StructuredGraph;
    MethodParameters:
       Name  Flags
      graph  

  protected abstract org.graalvm.compiler.nodes.ValueNode uncompress(org.graalvm.compiler.nodes.ValueNode);
    descriptor: (Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/ValueNode;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
       Name  Flags
      value  
}
SourceFile: "G1WriteBarrierSnippets.java"
NestHost: org.graalvm.compiler.replacements.gc.G1WriteBarrierSnippets
InnerClasses:
  public final GuardsStage = org.graalvm.compiler.nodes.StructuredGraph$GuardsStage of org.graalvm.compiler.nodes.StructuredGraph
  public abstract LoweringStage = org.graalvm.compiler.nodes.spi.LoweringTool$LoweringStage of org.graalvm.compiler.nodes.spi.LoweringTool
  public Group = org.graalvm.compiler.replacements.SnippetCounter$Group of org.graalvm.compiler.replacements.SnippetCounter
  public abstract Factory = org.graalvm.compiler.replacements.SnippetCounter$Group$Factory of org.graalvm.compiler.replacements.SnippetCounter$Group
  public abstract AbstractTemplates = org.graalvm.compiler.replacements.SnippetTemplate$AbstractTemplates of org.graalvm.compiler.replacements.SnippetTemplate
  public Arguments = org.graalvm.compiler.replacements.SnippetTemplate$Arguments of org.graalvm.compiler.replacements.SnippetTemplate
  public abstract SnippetInfo = org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo of org.graalvm.compiler.replacements.SnippetTemplate
  public abstract UsageReplacer = org.graalvm.compiler.replacements.SnippetTemplate$UsageReplacer of org.graalvm.compiler.replacements.SnippetTemplate
  public Counters = org.graalvm.compiler.replacements.gc.G1WriteBarrierSnippets$Counters of org.graalvm.compiler.replacements.gc.G1WriteBarrierSnippets
  public abstract G1WriteBarrierLowerer = org.graalvm.compiler.replacements.gc.G1WriteBarrierSnippets$G1WriteBarrierLowerer of org.graalvm.compiler.replacements.gc.G1WriteBarrierSnippets