public class org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates extends org.graalvm.compiler.replacements.SnippetTemplate$AbstractTemplates
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates
  super_class: org.graalvm.compiler.replacements.SnippetTemplate$AbstractTemplates
{
  private final org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo serialImpreciseWriteBarrier;
    descriptor: Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo serialPreciseWriteBarrier;
    descriptor: Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo serialArrayRangeWriteBarrier;
    descriptor: Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo g1PreWriteBarrier;
    descriptor: Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo g1ReferentReadBarrier;
    descriptor: Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo g1PostWriteBarrier;
    descriptor: Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo g1ArrayRangePreWriteBarrier;
    descriptor: Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo g1ArrayRangePostWriteBarrier;
    descriptor: Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.graalvm.compiler.core.common.CompressEncoding oopEncoding;
    descriptor: Lorg/graalvm/compiler/core/common/CompressEncoding;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Counters counters;
    descriptor: Lorg/graalvm/compiler/hotspot/replacements/WriteBarrierSnippets$Counters;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final boolean verifyBarrier;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final long gcTotalCollectionsAddress;
    descriptor: J
    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 425
            ldc Lorg/graalvm/compiler/hotspot/replacements/WriteBarrierSnippets;
            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.hotspot.replacements.WriteBarrierSnippets$Templates.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(org.graalvm.compiler.options.OptionValues, java.lang.Iterable<org.graalvm.compiler.debug.DebugHandlersFactory>, org.graalvm.compiler.replacements.SnippetCounter$Group$Factory, org.graalvm.compiler.hotspot.meta.HotSpotProviders, jdk.vm.ci.code.TargetDescription, org.graalvm.compiler.hotspot.GraalHotSpotVMConfig);
    descriptor: (Lorg/graalvm/compiler/options/OptionValues;Ljava/lang/Iterable;Lorg/graalvm/compiler/replacements/SnippetCounter$Group$Factory;Lorg/graalvm/compiler/hotspot/meta/HotSpotProviders;Ljdk/vm/ci/code/TargetDescription;Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=7, args_size=7
        start local 0 // org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates this
        start local 1 // org.graalvm.compiler.options.OptionValues options
        start local 2 // java.lang.Iterable factories
        start local 3 // org.graalvm.compiler.replacements.SnippetCounter$Group$Factory factory
        start local 4 // org.graalvm.compiler.hotspot.meta.HotSpotProviders providers
        start local 5 // jdk.vm.ci.code.TargetDescription target
        start local 6 // org.graalvm.compiler.hotspot.GraalHotSpotVMConfig config
         0: .line 443
            aload 0 /* this */
            aload 1 /* options */
            aload 2 /* factories */
            aload 4 /* providers */
            aload 4 /* providers */
            invokevirtual org.graalvm.compiler.hotspot.meta.HotSpotProviders.getSnippetReflection:()Lorg/graalvm/compiler/api/replacements/SnippetReflectionProvider;
            aload 5 /* target */
            invokespecial org.graalvm.compiler.replacements.SnippetTemplate$AbstractTemplates.<init>:(Lorg/graalvm/compiler/options/OptionValues;Ljava/lang/Iterable;Lorg/graalvm/compiler/phases/util/Providers;Lorg/graalvm/compiler/api/replacements/SnippetReflectionProvider;Ljdk/vm/ci/code/TargetDescription;)V
         1: .line 427
            aload 0 /* this */
            aload 0 /* this */
            ldc Lorg/graalvm/compiler/hotspot/replacements/WriteBarrierSnippets;
            ldc "serialImpreciseWriteBarrier"
            iconst_1
            anewarray jdk.internal.vm.compiler.word.LocationIdentity
            dup
            iconst_0
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_CARD_LOCATION:Ljdk/internal/vm/compiler/word/LocationIdentity;
            aastore
            invokevirtual org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.snippet:(Ljava/lang/Class;Ljava/lang/String;[Ljdk/internal/vm/compiler/word/LocationIdentity;)Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            putfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.serialImpreciseWriteBarrier:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
         2: .line 428
            aload 0 /* this */
            aload 0 /* this */
            ldc Lorg/graalvm/compiler/hotspot/replacements/WriteBarrierSnippets;
            ldc "serialPreciseWriteBarrier"
            iconst_1
            anewarray jdk.internal.vm.compiler.word.LocationIdentity
            dup
            iconst_0
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_CARD_LOCATION:Ljdk/internal/vm/compiler/word/LocationIdentity;
            aastore
            invokevirtual org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.snippet:(Ljava/lang/Class;Ljava/lang/String;[Ljdk/internal/vm/compiler/word/LocationIdentity;)Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            putfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.serialPreciseWriteBarrier:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
         3: .line 429
            aload 0 /* this */
            aload 0 /* this */
            ldc Lorg/graalvm/compiler/hotspot/replacements/WriteBarrierSnippets;
            ldc "serialArrayRangeWriteBarrier"
            iconst_0
            anewarray jdk.internal.vm.compiler.word.LocationIdentity
            invokevirtual org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.snippet:(Ljava/lang/Class;Ljava/lang/String;[Ljdk/internal/vm/compiler/word/LocationIdentity;)Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            putfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.serialArrayRangeWriteBarrier:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
         4: .line 430
            aload 0 /* this */
            aload 0 /* this */
            ldc Lorg/graalvm/compiler/hotspot/replacements/WriteBarrierSnippets;
            ldc "g1PreWriteBarrier"
            iconst_2
            anewarray jdk.internal.vm.compiler.word.LocationIdentity
            dup
            iconst_0
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_INDEX_LOCATION:Ljdk/internal/vm/compiler/word/LocationIdentity;
            aastore
            dup
            iconst_1
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_LOG_LOCATION:Ljdk/internal/vm/compiler/word/LocationIdentity;
            aastore
            invokevirtual org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.snippet:(Ljava/lang/Class;Ljava/lang/String;[Ljdk/internal/vm/compiler/word/LocationIdentity;)Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            putfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.g1PreWriteBarrier:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
         5: .line 431
            aload 0 /* this */
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.g1PreWriteBarrier:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            putfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.g1ReferentReadBarrier:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
         6: .line 432
            aload 0 /* this */
            aload 0 /* this */
            ldc Lorg/graalvm/compiler/hotspot/replacements/WriteBarrierSnippets;
            ldc "g1PostWriteBarrier"
            iconst_3
            anewarray jdk.internal.vm.compiler.word.LocationIdentity
            dup
            iconst_0
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_CARD_LOCATION:Ljdk/internal/vm/compiler/word/LocationIdentity;
            aastore
            dup
            iconst_1
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_INDEX_LOCATION:Ljdk/internal/vm/compiler/word/LocationIdentity;
            aastore
            dup
            iconst_2
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_LOG_LOCATION:Ljdk/internal/vm/compiler/word/LocationIdentity;
            aastore
            invokevirtual org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.snippet:(Ljava/lang/Class;Ljava/lang/String;[Ljdk/internal/vm/compiler/word/LocationIdentity;)Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            putfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.g1PostWriteBarrier:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
         7: .line 433
            aload 0 /* this */
            aload 0 /* this */
            ldc Lorg/graalvm/compiler/hotspot/replacements/WriteBarrierSnippets;
            ldc "g1ArrayRangePreWriteBarrier"
            iconst_2
            anewarray jdk.internal.vm.compiler.word.LocationIdentity
            dup
            iconst_0
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_INDEX_LOCATION:Ljdk/internal/vm/compiler/word/LocationIdentity;
            aastore
            dup
            iconst_1
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_LOG_LOCATION:Ljdk/internal/vm/compiler/word/LocationIdentity;
            aastore
            invokevirtual org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.snippet:(Ljava/lang/Class;Ljava/lang/String;[Ljdk/internal/vm/compiler/word/LocationIdentity;)Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            putfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.g1ArrayRangePreWriteBarrier:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
         8: .line 434
            aload 0 /* this */
            aload 0 /* this */
            ldc Lorg/graalvm/compiler/hotspot/replacements/WriteBarrierSnippets;
            ldc "g1ArrayRangePostWriteBarrier"
            iconst_3
            anewarray jdk.internal.vm.compiler.word.LocationIdentity
            dup
            iconst_0
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_CARD_LOCATION:Ljdk/internal/vm/compiler/word/LocationIdentity;
            aastore
            dup
            iconst_1
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_INDEX_LOCATION:Ljdk/internal/vm/compiler/word/LocationIdentity;
            aastore
            dup
            iconst_2
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_LOG_LOCATION:Ljdk/internal/vm/compiler/word/LocationIdentity;
            aastore
            invokevirtual org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.snippet:(Ljava/lang/Class;Ljava/lang/String;[Ljdk/internal/vm/compiler/word/LocationIdentity;)Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            putfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.g1ArrayRangePostWriteBarrier:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
         9: .line 444
            aload 0 /* this */
            aload 6 /* config */
            getfield org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.useCompressedOops:Z
            ifeq 10
            aload 6 /* config */
            invokevirtual org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.getOopEncoding:()Lorg/graalvm/compiler/core/common/CompressEncoding;
            goto 11
      StackMap locals: org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates org.graalvm.compiler.options.OptionValues java.lang.Iterable org.graalvm.compiler.replacements.SnippetCounter$Group$Factory org.graalvm.compiler.hotspot.meta.HotSpotProviders jdk.vm.ci.code.TargetDescription org.graalvm.compiler.hotspot.GraalHotSpotVMConfig
      StackMap stack: org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates
        10: aconst_null
      StackMap locals: org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates org.graalvm.compiler.options.OptionValues java.lang.Iterable org.graalvm.compiler.replacements.SnippetCounter$Group$Factory org.graalvm.compiler.hotspot.meta.HotSpotProviders jdk.vm.ci.code.TargetDescription org.graalvm.compiler.hotspot.GraalHotSpotVMConfig
      StackMap stack: org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates org.graalvm.compiler.core.common.CompressEncoding
        11: putfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.oopEncoding:Lorg/graalvm/compiler/core/common/CompressEncoding;
        12: .line 445
            aload 0 /* this */
            getstatic org.graalvm.compiler.replacements.ReplacementsUtil.REPLACEMENTS_ASSERTIONS_ENABLED:Z
            ifne 13
            aload 6 /* config */
            getfield org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.verifyBeforeGC:Z
            ifne 13
            aload 6 /* config */
            getfield org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.verifyAfterGC:Z
            ifne 13
            iconst_0
            goto 14
      StackMap locals:
      StackMap stack: org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates
        13: iconst_1
      StackMap locals: org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates org.graalvm.compiler.options.OptionValues java.lang.Iterable org.graalvm.compiler.replacements.SnippetCounter$Group$Factory org.graalvm.compiler.hotspot.meta.HotSpotProviders jdk.vm.ci.code.TargetDescription org.graalvm.compiler.hotspot.GraalHotSpotVMConfig
      StackMap stack: org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates int
        14: putfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.verifyBarrier:Z
        15: .line 446
            aload 0 /* this */
            aload 6 /* config */
            invokevirtual org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.gcTotalCollectionsAddress:()J
            putfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.gcTotalCollectionsAddress:J
        16: .line 447
            aload 0 /* this */
            new org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Counters
            dup
            aload 3 /* factory */
            invokespecial org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Counters.<init>:(Lorg/graalvm/compiler/replacements/SnippetCounter$Group$Factory;)V
            putfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.counters:Lorg/graalvm/compiler/hotspot/replacements/WriteBarrierSnippets$Counters;
        17: .line 448
            return
        end local 6 // org.graalvm.compiler.hotspot.GraalHotSpotVMConfig config
        end local 5 // jdk.vm.ci.code.TargetDescription target
        end local 4 // org.graalvm.compiler.hotspot.meta.HotSpotProviders providers
        end local 3 // org.graalvm.compiler.replacements.SnippetCounter$Group$Factory factory
        end local 2 // java.lang.Iterable factories
        end local 1 // org.graalvm.compiler.options.OptionValues options
        end local 0 // org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   18     0       this  Lorg/graalvm/compiler/hotspot/replacements/WriteBarrierSnippets$Templates;
            0   18     1    options  Lorg/graalvm/compiler/options/OptionValues;
            0   18     2  factories  Ljava/lang/Iterable<Lorg/graalvm/compiler/debug/DebugHandlersFactory;>;
            0   18     3    factory  Lorg/graalvm/compiler/replacements/SnippetCounter$Group$Factory;
            0   18     4  providers  Lorg/graalvm/compiler/hotspot/meta/HotSpotProviders;
            0   18     5     target  Ljdk/vm/ci/code/TargetDescription;
            0   18     6     config  Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
    Signature: (Lorg/graalvm/compiler/options/OptionValues;Ljava/lang/Iterable<Lorg/graalvm/compiler/debug/DebugHandlersFactory;>;Lorg/graalvm/compiler/replacements/SnippetCounter$Group$Factory;Lorg/graalvm/compiler/hotspot/meta/HotSpotProviders;Ljdk/vm/ci/code/TargetDescription;Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)V
    MethodParameters:
           Name  Flags
      options    
      factories  
      factory    
      providers  
      target     
      config     

  public boolean traceBarrier(org.graalvm.compiler.nodes.StructuredGraph);
    descriptor: (Lorg/graalvm/compiler/nodes/StructuredGraph;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates this
        start local 1 // org.graalvm.compiler.nodes.StructuredGraph graph
         0: .line 451
            getstatic org.graalvm.compiler.core.common.GraalOptions.GCDebugStartCycle:Lorg/graalvm/compiler/options/OptionKey;
            aload 1 /* 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
            i2l
            lstore 2 /* startCycle */
        start local 2 // long startCycle
         1: .line 452
            lload 2 /* startCycle */
            lconst_0
            lcmp
            ifle 2
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.gcTotalCollectionsAddress:J
            invokestatic jdk.internal.vm.compiler.word.WordFactory.pointer:(J)Ljdk/internal/vm/compiler/word/PointerBase;
            checkcast jdk.internal.vm.compiler.word.Pointer
            iconst_0
            invokeinterface jdk.internal.vm.compiler.word.Pointer.readLong:(I)J
            lload 2 /* startCycle */
            lcmp
            ifle 2
            iconst_1
            ireturn
      StackMap locals: long
      StackMap stack:
         2: iconst_0
            ireturn
        end local 2 // long startCycle
        end local 1 // org.graalvm.compiler.nodes.StructuredGraph graph
        end local 0 // org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0        this  Lorg/graalvm/compiler/hotspot/replacements/WriteBarrierSnippets$Templates;
            0    3     1       graph  Lorg/graalvm/compiler/nodes/StructuredGraph;
            1    3     2  startCycle  J
    MethodParameters:
       Name  Flags
      graph  

  public void lower(org.graalvm.compiler.hotspot.gc.shared.SerialWriteBarrier, org.graalvm.compiler.nodes.spi.LoweringTool);
    descriptor: (Lorg/graalvm/compiler/hotspot/gc/shared/SerialWriteBarrier;Lorg/graalvm/compiler/nodes/spi/LoweringTool;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=3
        start local 0 // org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates this
        start local 1 // org.graalvm.compiler.hotspot.gc.shared.SerialWriteBarrier writeBarrier
        start local 2 // org.graalvm.compiler.nodes.spi.LoweringTool tool
         0: .line 457
            aload 1 /* writeBarrier */
            invokevirtual org.graalvm.compiler.hotspot.gc.shared.SerialWriteBarrier.usePrecise:()Z
            ifeq 4
         1: .line 458
            new org.graalvm.compiler.replacements.SnippetTemplate$Arguments
            dup
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.serialPreciseWriteBarrier:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            aload 1 /* writeBarrier */
            invokevirtual org.graalvm.compiler.hotspot.gc.shared.SerialWriteBarrier.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getGuardsStage:()Lorg/graalvm/compiler/nodes/StructuredGraph$GuardsStage;
            aload 2 /* 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 3 /* args */
        start local 3 // org.graalvm.compiler.replacements.SnippetTemplate$Arguments args
         2: .line 459
            aload 3 /* args */
            ldc "address"
            aload 1 /* writeBarrier */
            invokevirtual org.graalvm.compiler.hotspot.gc.shared.SerialWriteBarrier.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
         3: .line 460
            goto 8
        end local 3 // org.graalvm.compiler.replacements.SnippetTemplate$Arguments args
         4: .line 461
      StackMap locals:
      StackMap stack:
            new org.graalvm.compiler.replacements.SnippetTemplate$Arguments
            dup
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.serialImpreciseWriteBarrier:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            aload 1 /* writeBarrier */
            invokevirtual org.graalvm.compiler.hotspot.gc.shared.SerialWriteBarrier.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getGuardsStage:()Lorg/graalvm/compiler/nodes/StructuredGraph$GuardsStage;
            aload 2 /* 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 3 /* args */
        start local 3 // org.graalvm.compiler.replacements.SnippetTemplate$Arguments args
         5: .line 462
            aload 1 /* writeBarrier */
            invokevirtual org.graalvm.compiler.hotspot.gc.shared.SerialWriteBarrier.getAddress:()Lorg/graalvm/compiler/nodes/memory/address/AddressNode;
            checkcast org.graalvm.compiler.nodes.memory.address.OffsetAddressNode
            astore 4 /* address */
        start local 4 // org.graalvm.compiler.nodes.memory.address.OffsetAddressNode address
         6: .line 463
            aload 3 /* args */
            ldc "object"
            aload 4 /* 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
         7: .line 464
            aload 3 /* args */
            ldc "verifyBarrier"
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.verifyBarrier: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
        end local 4 // org.graalvm.compiler.nodes.memory.address.OffsetAddressNode address
         8: .line 466
      StackMap locals: org.graalvm.compiler.replacements.SnippetTemplate$Arguments
      StackMap stack:
            aload 3 /* args */
            ldc "counters"
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.counters:Lorg/graalvm/compiler/hotspot/replacements/WriteBarrierSnippets$Counters;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.addConst:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
         9: .line 467
            aload 0 /* this */
            aload 1 /* writeBarrier */
            aload 3 /* args */
            invokevirtual org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.template:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;)Lorg/graalvm/compiler/replacements/SnippetTemplate;
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.providers:Lorg/graalvm/compiler/phases/util/Providers;
            invokevirtual org.graalvm.compiler.phases.util.Providers.getMetaAccess:()Ljdk/vm/ci/meta/MetaAccessProvider;
            aload 1 /* writeBarrier */
            getstatic org.graalvm.compiler.replacements.SnippetTemplate.DEFAULT_REPLACER:Lorg/graalvm/compiler/replacements/SnippetTemplate$UsageReplacer;
            aload 3 /* 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
        10: .line 468
            return
        end local 3 // org.graalvm.compiler.replacements.SnippetTemplate$Arguments args
        end local 2 // org.graalvm.compiler.nodes.spi.LoweringTool tool
        end local 1 // org.graalvm.compiler.hotspot.gc.shared.SerialWriteBarrier writeBarrier
        end local 0 // org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   11     0          this  Lorg/graalvm/compiler/hotspot/replacements/WriteBarrierSnippets$Templates;
            0   11     1  writeBarrier  Lorg/graalvm/compiler/hotspot/gc/shared/SerialWriteBarrier;
            0   11     2          tool  Lorg/graalvm/compiler/nodes/spi/LoweringTool;
            2    4     3          args  Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            5   11     3          args  Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            6    8     4       address  Lorg/graalvm/compiler/nodes/memory/address/OffsetAddressNode;
    MethodParameters:
              Name  Flags
      writeBarrier  
      tool          

  public void lower(org.graalvm.compiler.hotspot.gc.shared.SerialArrayRangeWriteBarrier, org.graalvm.compiler.nodes.spi.LoweringTool);
    descriptor: (Lorg/graalvm/compiler/hotspot/gc/shared/SerialArrayRangeWriteBarrier;Lorg/graalvm/compiler/nodes/spi/LoweringTool;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=3
        start local 0 // org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates this
        start local 1 // org.graalvm.compiler.hotspot.gc.shared.SerialArrayRangeWriteBarrier arrayRangeWriteBarrier
        start local 2 // org.graalvm.compiler.nodes.spi.LoweringTool tool
         0: .line 471
            new org.graalvm.compiler.replacements.SnippetTemplate$Arguments
            dup
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.serialArrayRangeWriteBarrier:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            aload 1 /* arrayRangeWriteBarrier */
            invokevirtual org.graalvm.compiler.hotspot.gc.shared.SerialArrayRangeWriteBarrier.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getGuardsStage:()Lorg/graalvm/compiler/nodes/StructuredGraph$GuardsStage;
            aload 2 /* 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 3 /* args */
        start local 3 // org.graalvm.compiler.replacements.SnippetTemplate$Arguments args
         1: .line 472
            aload 3 /* args */
            ldc "address"
            aload 1 /* arrayRangeWriteBarrier */
            invokevirtual org.graalvm.compiler.hotspot.gc.shared.SerialArrayRangeWriteBarrier.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 473
            aload 3 /* args */
            ldc "length"
            aload 1 /* arrayRangeWriteBarrier */
            invokevirtual org.graalvm.compiler.hotspot.gc.shared.SerialArrayRangeWriteBarrier.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 474
            aload 3 /* args */
            ldc "elementStride"
            aload 1 /* arrayRangeWriteBarrier */
            invokevirtual org.graalvm.compiler.hotspot.gc.shared.SerialArrayRangeWriteBarrier.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 475
            aload 0 /* this */
            aload 1 /* arrayRangeWriteBarrier */
            aload 3 /* args */
            invokevirtual org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.template:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;)Lorg/graalvm/compiler/replacements/SnippetTemplate;
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.providers:Lorg/graalvm/compiler/phases/util/Providers;
            invokevirtual org.graalvm.compiler.phases.util.Providers.getMetaAccess:()Ljdk/vm/ci/meta/MetaAccessProvider;
            aload 1 /* arrayRangeWriteBarrier */
            getstatic org.graalvm.compiler.replacements.SnippetTemplate.DEFAULT_REPLACER:Lorg/graalvm/compiler/replacements/SnippetTemplate$UsageReplacer;
            aload 3 /* 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 476
            return
        end local 3 // org.graalvm.compiler.replacements.SnippetTemplate$Arguments args
        end local 2 // org.graalvm.compiler.nodes.spi.LoweringTool tool
        end local 1 // org.graalvm.compiler.hotspot.gc.shared.SerialArrayRangeWriteBarrier arrayRangeWriteBarrier
        end local 0 // org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    6     0                    this  Lorg/graalvm/compiler/hotspot/replacements/WriteBarrierSnippets$Templates;
            0    6     1  arrayRangeWriteBarrier  Lorg/graalvm/compiler/hotspot/gc/shared/SerialArrayRangeWriteBarrier;
            0    6     2                    tool  Lorg/graalvm/compiler/nodes/spi/LoweringTool;
            1    6     3                    args  Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
    MethodParameters:
                        Name  Flags
      arrayRangeWriteBarrier  
      tool                    

  public void lower(org.graalvm.compiler.hotspot.gc.g1.G1PreWriteBarrier, org.graalvm.compiler.hotspot.meta.HotSpotRegistersProvider, org.graalvm.compiler.nodes.spi.LoweringTool);
    descriptor: (Lorg/graalvm/compiler/hotspot/gc/g1/G1PreWriteBarrier;Lorg/graalvm/compiler/hotspot/meta/HotSpotRegistersProvider;Lorg/graalvm/compiler/nodes/spi/LoweringTool;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=7, args_size=4
        start local 0 // org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates this
        start local 1 // org.graalvm.compiler.hotspot.gc.g1.G1PreWriteBarrier writeBarrierPre
        start local 2 // org.graalvm.compiler.hotspot.meta.HotSpotRegistersProvider registers
        start local 3 // org.graalvm.compiler.nodes.spi.LoweringTool tool
         0: .line 479
            new org.graalvm.compiler.replacements.SnippetTemplate$Arguments
            dup
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.g1PreWriteBarrier:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            aload 1 /* writeBarrierPre */
            invokevirtual org.graalvm.compiler.hotspot.gc.g1.G1PreWriteBarrier.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getGuardsStage:()Lorg/graalvm/compiler/nodes/StructuredGraph$GuardsStage;
            aload 3 /* 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 4 /* args */
        start local 4 // org.graalvm.compiler.replacements.SnippetTemplate$Arguments args
         1: .line 480
            aload 1 /* writeBarrierPre */
            invokevirtual org.graalvm.compiler.hotspot.gc.g1.G1PreWriteBarrier.getAddress:()Lorg/graalvm/compiler/nodes/memory/address/AddressNode;
            astore 5 /* address */
        start local 5 // org.graalvm.compiler.nodes.memory.address.AddressNode address
         2: .line 481
            aload 4 /* args */
            ldc "address"
            aload 5 /* address */
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.add:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
         3: .line 482
            aload 5 /* address */
            instanceof org.graalvm.compiler.nodes.memory.address.OffsetAddressNode
            ifeq 6
         4: .line 483
            aload 4 /* args */
            ldc "object"
            aload 5 /* 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 484
            goto 7
         6: .line 485
      StackMap locals: org.graalvm.compiler.replacements.SnippetTemplate$Arguments org.graalvm.compiler.nodes.memory.address.AddressNode
      StackMap stack:
            aload 4 /* 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 488
      StackMap locals:
      StackMap stack:
            aload 1 /* writeBarrierPre */
            invokevirtual org.graalvm.compiler.hotspot.gc.g1.G1PreWriteBarrier.getExpectedObject:()Lorg/graalvm/compiler/nodes/ValueNode;
            astore 6 /* expected */
        start local 6 // org.graalvm.compiler.nodes.ValueNode expected
         8: .line 489
            aload 6 /* expected */
            ifnull 11
            aload 6 /* 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 11
         9: .line 490
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.$assertionsDisabled:Z
            ifne 10
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.oopEncoding:Lorg/graalvm/compiler/core/common/CompressEncoding;
            ifnonnull 10
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        10: .line 491
      StackMap locals: org.graalvm.compiler.nodes.ValueNode
      StackMap stack:
            aload 6 /* expected */
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.oopEncoding:Lorg/graalvm/compiler/core/common/CompressEncoding;
            invokestatic org.graalvm.compiler.hotspot.nodes.HotSpotCompressionNode.uncompress:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/core/common/CompressEncoding;)Lorg/graalvm/compiler/nodes/CompressionNode;
            astore 6 /* expected */
        11: .line 493
      StackMap locals:
      StackMap stack:
            aload 4 /* args */
            ldc "expectedObject"
            aload 6 /* expected */
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.add:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        12: .line 495
            aload 4 /* args */
            ldc "doLoad"
            aload 1 /* writeBarrierPre */
            invokevirtual org.graalvm.compiler.hotspot.gc.g1.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
        13: .line 496
            aload 4 /* args */
            ldc "nullCheck"
            aload 1 /* writeBarrierPre */
            invokevirtual org.graalvm.compiler.hotspot.gc.g1.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
        14: .line 497
            aload 4 /* args */
            ldc "threadRegister"
            aload 2 /* registers */
            invokeinterface org.graalvm.compiler.hotspot.meta.HotSpotRegistersProvider.getThreadRegister:()Ljdk/vm/ci/code/Register;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.addConst:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        15: .line 498
            aload 4 /* args */
            ldc "trace"
            aload 0 /* this */
            aload 1 /* writeBarrierPre */
            invokevirtual org.graalvm.compiler.hotspot.gc.g1.G1PreWriteBarrier.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            invokevirtual org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.traceBarrier:(Lorg/graalvm/compiler/nodes/StructuredGraph;)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 499
            aload 4 /* args */
            ldc "counters"
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.counters:Lorg/graalvm/compiler/hotspot/replacements/WriteBarrierSnippets$Counters;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.addConst:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        17: .line 500
            aload 0 /* this */
            aload 1 /* writeBarrierPre */
            aload 4 /* args */
            invokevirtual org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.template:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;)Lorg/graalvm/compiler/replacements/SnippetTemplate;
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.providers:Lorg/graalvm/compiler/phases/util/Providers;
            invokevirtual org.graalvm.compiler.phases.util.Providers.getMetaAccess:()Ljdk/vm/ci/meta/MetaAccessProvider;
            aload 1 /* writeBarrierPre */
            getstatic org.graalvm.compiler.replacements.SnippetTemplate.DEFAULT_REPLACER:Lorg/graalvm/compiler/replacements/SnippetTemplate$UsageReplacer;
            aload 4 /* 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
        18: .line 501
            return
        end local 6 // org.graalvm.compiler.nodes.ValueNode expected
        end local 5 // org.graalvm.compiler.nodes.memory.address.AddressNode address
        end local 4 // org.graalvm.compiler.replacements.SnippetTemplate$Arguments args
        end local 3 // org.graalvm.compiler.nodes.spi.LoweringTool tool
        end local 2 // org.graalvm.compiler.hotspot.meta.HotSpotRegistersProvider registers
        end local 1 // org.graalvm.compiler.hotspot.gc.g1.G1PreWriteBarrier writeBarrierPre
        end local 0 // org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   19     0             this  Lorg/graalvm/compiler/hotspot/replacements/WriteBarrierSnippets$Templates;
            0   19     1  writeBarrierPre  Lorg/graalvm/compiler/hotspot/gc/g1/G1PreWriteBarrier;
            0   19     2        registers  Lorg/graalvm/compiler/hotspot/meta/HotSpotRegistersProvider;
            0   19     3             tool  Lorg/graalvm/compiler/nodes/spi/LoweringTool;
            1   19     4             args  Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            2   19     5          address  Lorg/graalvm/compiler/nodes/memory/address/AddressNode;
            8   19     6         expected  Lorg/graalvm/compiler/nodes/ValueNode;
    MethodParameters:
                 Name  Flags
      writeBarrierPre  
      registers        
      tool             

  public void lower(org.graalvm.compiler.hotspot.gc.g1.G1ReferentFieldReadBarrier, org.graalvm.compiler.hotspot.meta.HotSpotRegistersProvider, org.graalvm.compiler.nodes.spi.LoweringTool);
    descriptor: (Lorg/graalvm/compiler/hotspot/gc/g1/G1ReferentFieldReadBarrier;Lorg/graalvm/compiler/hotspot/meta/HotSpotRegistersProvider;Lorg/graalvm/compiler/nodes/spi/LoweringTool;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=7, args_size=4
        start local 0 // org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates this
        start local 1 // org.graalvm.compiler.hotspot.gc.g1.G1ReferentFieldReadBarrier readBarrier
        start local 2 // org.graalvm.compiler.hotspot.meta.HotSpotRegistersProvider registers
        start local 3 // org.graalvm.compiler.nodes.spi.LoweringTool tool
         0: .line 504
            new org.graalvm.compiler.replacements.SnippetTemplate$Arguments
            dup
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.g1ReferentReadBarrier:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            aload 1 /* readBarrier */
            invokevirtual org.graalvm.compiler.hotspot.gc.g1.G1ReferentFieldReadBarrier.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getGuardsStage:()Lorg/graalvm/compiler/nodes/StructuredGraph$GuardsStage;
            aload 3 /* 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 4 /* args */
        start local 4 // org.graalvm.compiler.replacements.SnippetTemplate$Arguments args
         1: .line 505
            aload 1 /* readBarrier */
            invokevirtual org.graalvm.compiler.hotspot.gc.g1.G1ReferentFieldReadBarrier.getAddress:()Lorg/graalvm/compiler/nodes/memory/address/AddressNode;
            astore 5 /* address */
        start local 5 // org.graalvm.compiler.nodes.memory.address.AddressNode address
         2: .line 506
            aload 4 /* args */
            ldc "address"
            aload 5 /* address */
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.add:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
         3: .line 507
            aload 5 /* address */
            instanceof org.graalvm.compiler.nodes.memory.address.OffsetAddressNode
            ifeq 6
         4: .line 508
            aload 4 /* args */
            ldc "object"
            aload 5 /* 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 509
            goto 7
         6: .line 510
      StackMap locals: org.graalvm.compiler.replacements.SnippetTemplate$Arguments org.graalvm.compiler.nodes.memory.address.AddressNode
      StackMap stack:
            aload 4 /* 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 513
      StackMap locals:
      StackMap stack:
            aload 1 /* readBarrier */
            invokevirtual org.graalvm.compiler.hotspot.gc.g1.G1ReferentFieldReadBarrier.getExpectedObject:()Lorg/graalvm/compiler/nodes/ValueNode;
            astore 6 /* expected */
        start local 6 // org.graalvm.compiler.nodes.ValueNode expected
         8: .line 514
            aload 6 /* expected */
            ifnull 11
            aload 6 /* 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 11
         9: .line 515
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.$assertionsDisabled:Z
            ifne 10
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.oopEncoding:Lorg/graalvm/compiler/core/common/CompressEncoding;
            ifnonnull 10
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        10: .line 516
      StackMap locals: org.graalvm.compiler.nodes.ValueNode
      StackMap stack:
            aload 6 /* expected */
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.oopEncoding:Lorg/graalvm/compiler/core/common/CompressEncoding;
            invokestatic org.graalvm.compiler.hotspot.nodes.HotSpotCompressionNode.uncompress:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/core/common/CompressEncoding;)Lorg/graalvm/compiler/nodes/CompressionNode;
            astore 6 /* expected */
        11: .line 519
      StackMap locals:
      StackMap stack:
            aload 4 /* args */
            ldc "expectedObject"
            aload 6 /* expected */
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.add:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        12: .line 520
            aload 4 /* args */
            ldc "doLoad"
            aload 1 /* readBarrier */
            invokevirtual org.graalvm.compiler.hotspot.gc.g1.G1ReferentFieldReadBarrier.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
        13: .line 521
            aload 4 /* args */
            ldc "nullCheck"
            iconst_0
            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
        14: .line 522
            aload 4 /* args */
            ldc "threadRegister"
            aload 2 /* registers */
            invokeinterface org.graalvm.compiler.hotspot.meta.HotSpotRegistersProvider.getThreadRegister:()Ljdk/vm/ci/code/Register;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.addConst:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        15: .line 523
            aload 4 /* args */
            ldc "trace"
            aload 0 /* this */
            aload 1 /* readBarrier */
            invokevirtual org.graalvm.compiler.hotspot.gc.g1.G1ReferentFieldReadBarrier.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            invokevirtual org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.traceBarrier:(Lorg/graalvm/compiler/nodes/StructuredGraph;)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 524
            aload 4 /* args */
            ldc "counters"
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.counters:Lorg/graalvm/compiler/hotspot/replacements/WriteBarrierSnippets$Counters;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.addConst:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        17: .line 525
            aload 0 /* this */
            aload 1 /* readBarrier */
            aload 4 /* args */
            invokevirtual org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.template:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;)Lorg/graalvm/compiler/replacements/SnippetTemplate;
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.providers:Lorg/graalvm/compiler/phases/util/Providers;
            invokevirtual org.graalvm.compiler.phases.util.Providers.getMetaAccess:()Ljdk/vm/ci/meta/MetaAccessProvider;
            aload 1 /* readBarrier */
            getstatic org.graalvm.compiler.replacements.SnippetTemplate.DEFAULT_REPLACER:Lorg/graalvm/compiler/replacements/SnippetTemplate$UsageReplacer;
            aload 4 /* 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
        18: .line 526
            return
        end local 6 // org.graalvm.compiler.nodes.ValueNode expected
        end local 5 // org.graalvm.compiler.nodes.memory.address.AddressNode address
        end local 4 // org.graalvm.compiler.replacements.SnippetTemplate$Arguments args
        end local 3 // org.graalvm.compiler.nodes.spi.LoweringTool tool
        end local 2 // org.graalvm.compiler.hotspot.meta.HotSpotRegistersProvider registers
        end local 1 // org.graalvm.compiler.hotspot.gc.g1.G1ReferentFieldReadBarrier readBarrier
        end local 0 // org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   19     0         this  Lorg/graalvm/compiler/hotspot/replacements/WriteBarrierSnippets$Templates;
            0   19     1  readBarrier  Lorg/graalvm/compiler/hotspot/gc/g1/G1ReferentFieldReadBarrier;
            0   19     2    registers  Lorg/graalvm/compiler/hotspot/meta/HotSpotRegistersProvider;
            0   19     3         tool  Lorg/graalvm/compiler/nodes/spi/LoweringTool;
            1   19     4         args  Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            2   19     5      address  Lorg/graalvm/compiler/nodes/memory/address/AddressNode;
            8   19     6     expected  Lorg/graalvm/compiler/nodes/ValueNode;
    MethodParameters:
             Name  Flags
      readBarrier  
      registers    
      tool         

  public void lower(org.graalvm.compiler.hotspot.gc.g1.G1PostWriteBarrier, org.graalvm.compiler.hotspot.meta.HotSpotRegistersProvider, org.graalvm.compiler.nodes.spi.LoweringTool);
    descriptor: (Lorg/graalvm/compiler/hotspot/gc/g1/G1PostWriteBarrier;Lorg/graalvm/compiler/hotspot/meta/HotSpotRegistersProvider;Lorg/graalvm/compiler/nodes/spi/LoweringTool;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=8, args_size=4
        start local 0 // org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates this
        start local 1 // org.graalvm.compiler.hotspot.gc.g1.G1PostWriteBarrier writeBarrierPost
        start local 2 // org.graalvm.compiler.hotspot.meta.HotSpotRegistersProvider registers
        start local 3 // org.graalvm.compiler.nodes.spi.LoweringTool tool
         0: .line 529
            aload 1 /* writeBarrierPost */
            invokevirtual org.graalvm.compiler.hotspot.gc.g1.G1PostWriteBarrier.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            astore 4 /* graph */
        start local 4 // org.graalvm.compiler.nodes.StructuredGraph graph
         1: .line 530
            aload 1 /* writeBarrierPost */
            invokevirtual org.graalvm.compiler.hotspot.gc.g1.G1PostWriteBarrier.alwaysNull:()Z
            ifeq 4
         2: .line 531
            aload 4 /* graph */
            aload 1 /* writeBarrierPost */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.removeFixed:(Lorg/graalvm/compiler/nodes/FixedWithNextNode;)V
         3: .line 532
            return
         4: .line 534
      StackMap locals: org.graalvm.compiler.nodes.StructuredGraph
      StackMap stack:
            new org.graalvm.compiler.replacements.SnippetTemplate$Arguments
            dup
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.g1PostWriteBarrier:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            aload 4 /* graph */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getGuardsStage:()Lorg/graalvm/compiler/nodes/StructuredGraph$GuardsStage;
            aload 3 /* 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
         5: .line 535
            aload 1 /* writeBarrierPost */
            invokevirtual org.graalvm.compiler.hotspot.gc.g1.G1PostWriteBarrier.getAddress:()Lorg/graalvm/compiler/nodes/memory/address/AddressNode;
            astore 6 /* address */
        start local 6 // org.graalvm.compiler.nodes.memory.address.AddressNode address
         6: .line 536
            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
         7: .line 537
            aload 6 /* address */
            instanceof org.graalvm.compiler.nodes.memory.address.OffsetAddressNode
            ifeq 10
         8: .line 538
            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
         9: .line 539
            goto 12
        10: .line 540
      StackMap locals: org.graalvm.compiler.replacements.SnippetTemplate$Arguments org.graalvm.compiler.nodes.memory.address.AddressNode
      StackMap stack:
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.$assertionsDisabled:Z
            ifne 11
            aload 1 /* writeBarrierPost */
            invokevirtual org.graalvm.compiler.hotspot.gc.g1.G1PostWriteBarrier.usePrecise:()Z
            ifne 11
            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 1 /* writeBarrierPost */
            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
        11: .line 541
      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
        12: .line 544
      StackMap locals:
      StackMap stack:
            aload 1 /* writeBarrierPost */
            invokevirtual org.graalvm.compiler.hotspot.gc.g1.G1PostWriteBarrier.getValue:()Lorg/graalvm/compiler/nodes/ValueNode;
            astore 7 /* value */
        start local 7 // org.graalvm.compiler.nodes.ValueNode value
        13: .line 545
            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 16
        14: .line 546
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.$assertionsDisabled:Z
            ifne 15
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.oopEncoding:Lorg/graalvm/compiler/core/common/CompressEncoding;
            ifnonnull 15
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        15: .line 547
      StackMap locals: org.graalvm.compiler.nodes.ValueNode
      StackMap stack:
            aload 7 /* value */
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.oopEncoding:Lorg/graalvm/compiler/core/common/CompressEncoding;
            invokestatic org.graalvm.compiler.hotspot.nodes.HotSpotCompressionNode.uncompress:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/core/common/CompressEncoding;)Lorg/graalvm/compiler/nodes/CompressionNode;
            astore 7 /* value */
        16: .line 549
      StackMap locals:
      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
        17: .line 551
            aload 5 /* args */
            ldc "usePrecise"
            aload 1 /* writeBarrierPost */
            invokevirtual org.graalvm.compiler.hotspot.gc.g1.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
        18: .line 552
            aload 5 /* args */
            ldc "verifyBarrier"
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.verifyBarrier: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
        19: .line 553
            aload 5 /* args */
            ldc "threadRegister"
            aload 2 /* registers */
            invokeinterface org.graalvm.compiler.hotspot.meta.HotSpotRegistersProvider.getThreadRegister:()Ljdk/vm/ci/code/Register;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.addConst:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        20: .line 554
            aload 5 /* args */
            ldc "trace"
            aload 0 /* this */
            aload 1 /* writeBarrierPost */
            invokevirtual org.graalvm.compiler.hotspot.gc.g1.G1PostWriteBarrier.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            invokevirtual org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.traceBarrier:(Lorg/graalvm/compiler/nodes/StructuredGraph;)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
        21: .line 555
            aload 5 /* args */
            ldc "counters"
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.counters:Lorg/graalvm/compiler/hotspot/replacements/WriteBarrierSnippets$Counters;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.addConst:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
        22: .line 556
            aload 0 /* this */
            aload 1 /* writeBarrierPost */
            aload 5 /* args */
            invokevirtual org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.template:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;)Lorg/graalvm/compiler/replacements/SnippetTemplate;
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.providers:Lorg/graalvm/compiler/phases/util/Providers;
            invokevirtual org.graalvm.compiler.phases.util.Providers.getMetaAccess:()Ljdk/vm/ci/meta/MetaAccessProvider;
            aload 1 /* writeBarrierPost */
            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
        23: .line 557
            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.StructuredGraph graph
        end local 3 // org.graalvm.compiler.nodes.spi.LoweringTool tool
        end local 2 // org.graalvm.compiler.hotspot.meta.HotSpotRegistersProvider registers
        end local 1 // org.graalvm.compiler.hotspot.gc.g1.G1PostWriteBarrier writeBarrierPost
        end local 0 // org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   24     0              this  Lorg/graalvm/compiler/hotspot/replacements/WriteBarrierSnippets$Templates;
            0   24     1  writeBarrierPost  Lorg/graalvm/compiler/hotspot/gc/g1/G1PostWriteBarrier;
            0   24     2         registers  Lorg/graalvm/compiler/hotspot/meta/HotSpotRegistersProvider;
            0   24     3              tool  Lorg/graalvm/compiler/nodes/spi/LoweringTool;
            1   24     4             graph  Lorg/graalvm/compiler/nodes/StructuredGraph;
            5   24     5              args  Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            6   24     6           address  Lorg/graalvm/compiler/nodes/memory/address/AddressNode;
           13   24     7             value  Lorg/graalvm/compiler/nodes/ValueNode;
    MethodParameters:
                  Name  Flags
      writeBarrierPost  
      registers         
      tool              

  public void lower(org.graalvm.compiler.hotspot.gc.g1.G1ArrayRangePreWriteBarrier, org.graalvm.compiler.hotspot.meta.HotSpotRegistersProvider, org.graalvm.compiler.nodes.spi.LoweringTool);
    descriptor: (Lorg/graalvm/compiler/hotspot/gc/g1/G1ArrayRangePreWriteBarrier;Lorg/graalvm/compiler/hotspot/meta/HotSpotRegistersProvider;Lorg/graalvm/compiler/nodes/spi/LoweringTool;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=4
        start local 0 // org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates this
        start local 1 // org.graalvm.compiler.hotspot.gc.g1.G1ArrayRangePreWriteBarrier arrayRangeWriteBarrier
        start local 2 // org.graalvm.compiler.hotspot.meta.HotSpotRegistersProvider registers
        start local 3 // org.graalvm.compiler.nodes.spi.LoweringTool tool
         0: .line 560
            new org.graalvm.compiler.replacements.SnippetTemplate$Arguments
            dup
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.g1ArrayRangePreWriteBarrier:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            aload 1 /* arrayRangeWriteBarrier */
            invokevirtual org.graalvm.compiler.hotspot.gc.g1.G1ArrayRangePreWriteBarrier.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getGuardsStage:()Lorg/graalvm/compiler/nodes/StructuredGraph$GuardsStage;
            aload 3 /* 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 4 /* args */
        start local 4 // org.graalvm.compiler.replacements.SnippetTemplate$Arguments args
         1: .line 561
            aload 4 /* args */
            ldc "address"
            aload 1 /* arrayRangeWriteBarrier */
            invokevirtual org.graalvm.compiler.hotspot.gc.g1.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 562
            aload 4 /* args */
            ldc "length"
            aload 1 /* arrayRangeWriteBarrier */
            invokevirtual org.graalvm.compiler.hotspot.gc.g1.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 563
            aload 4 /* args */
            ldc "elementStride"
            aload 1 /* arrayRangeWriteBarrier */
            invokevirtual org.graalvm.compiler.hotspot.gc.g1.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 564
            aload 4 /* args */
            ldc "threadRegister"
            aload 2 /* registers */
            invokeinterface org.graalvm.compiler.hotspot.meta.HotSpotRegistersProvider.getThreadRegister:()Ljdk/vm/ci/code/Register;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.addConst:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
         5: .line 565
            aload 0 /* this */
            aload 1 /* arrayRangeWriteBarrier */
            aload 4 /* args */
            invokevirtual org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.template:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;)Lorg/graalvm/compiler/replacements/SnippetTemplate;
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.providers:Lorg/graalvm/compiler/phases/util/Providers;
            invokevirtual org.graalvm.compiler.phases.util.Providers.getMetaAccess:()Ljdk/vm/ci/meta/MetaAccessProvider;
            aload 1 /* arrayRangeWriteBarrier */
            getstatic org.graalvm.compiler.replacements.SnippetTemplate.DEFAULT_REPLACER:Lorg/graalvm/compiler/replacements/SnippetTemplate$UsageReplacer;
            aload 4 /* 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
         6: .line 566
            return
        end local 4 // org.graalvm.compiler.replacements.SnippetTemplate$Arguments args
        end local 3 // org.graalvm.compiler.nodes.spi.LoweringTool tool
        end local 2 // org.graalvm.compiler.hotspot.meta.HotSpotRegistersProvider registers
        end local 1 // org.graalvm.compiler.hotspot.gc.g1.G1ArrayRangePreWriteBarrier arrayRangeWriteBarrier
        end local 0 // org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    7     0                    this  Lorg/graalvm/compiler/hotspot/replacements/WriteBarrierSnippets$Templates;
            0    7     1  arrayRangeWriteBarrier  Lorg/graalvm/compiler/hotspot/gc/g1/G1ArrayRangePreWriteBarrier;
            0    7     2               registers  Lorg/graalvm/compiler/hotspot/meta/HotSpotRegistersProvider;
            0    7     3                    tool  Lorg/graalvm/compiler/nodes/spi/LoweringTool;
            1    7     4                    args  Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
    MethodParameters:
                        Name  Flags
      arrayRangeWriteBarrier  
      registers               
      tool                    

  public void lower(org.graalvm.compiler.hotspot.gc.g1.G1ArrayRangePostWriteBarrier, org.graalvm.compiler.hotspot.meta.HotSpotRegistersProvider, org.graalvm.compiler.nodes.spi.LoweringTool);
    descriptor: (Lorg/graalvm/compiler/hotspot/gc/g1/G1ArrayRangePostWriteBarrier;Lorg/graalvm/compiler/hotspot/meta/HotSpotRegistersProvider;Lorg/graalvm/compiler/nodes/spi/LoweringTool;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=4
        start local 0 // org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates this
        start local 1 // org.graalvm.compiler.hotspot.gc.g1.G1ArrayRangePostWriteBarrier arrayRangeWriteBarrier
        start local 2 // org.graalvm.compiler.hotspot.meta.HotSpotRegistersProvider registers
        start local 3 // org.graalvm.compiler.nodes.spi.LoweringTool tool
         0: .line 569
            new org.graalvm.compiler.replacements.SnippetTemplate$Arguments
            dup
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.g1ArrayRangePostWriteBarrier:Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            aload 1 /* arrayRangeWriteBarrier */
            invokevirtual org.graalvm.compiler.hotspot.gc.g1.G1ArrayRangePostWriteBarrier.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getGuardsStage:()Lorg/graalvm/compiler/nodes/StructuredGraph$GuardsStage;
            aload 3 /* 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 4 /* args */
        start local 4 // org.graalvm.compiler.replacements.SnippetTemplate$Arguments args
         1: .line 570
            aload 4 /* args */
            ldc "address"
            aload 1 /* arrayRangeWriteBarrier */
            invokevirtual org.graalvm.compiler.hotspot.gc.g1.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 571
            aload 4 /* args */
            ldc "length"
            aload 1 /* arrayRangeWriteBarrier */
            invokevirtual org.graalvm.compiler.hotspot.gc.g1.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 572
            aload 4 /* args */
            ldc "elementStride"
            aload 1 /* arrayRangeWriteBarrier */
            invokevirtual org.graalvm.compiler.hotspot.gc.g1.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 573
            aload 4 /* args */
            ldc "threadRegister"
            aload 2 /* registers */
            invokeinterface org.graalvm.compiler.hotspot.meta.HotSpotRegistersProvider.getThreadRegister:()Ljdk/vm/ci/code/Register;
            invokevirtual org.graalvm.compiler.replacements.SnippetTemplate$Arguments.addConst:(Ljava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
            pop
         5: .line 574
            aload 0 /* this */
            aload 1 /* arrayRangeWriteBarrier */
            aload 4 /* args */
            invokevirtual org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.template:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;)Lorg/graalvm/compiler/replacements/SnippetTemplate;
            aload 0 /* this */
            getfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates.providers:Lorg/graalvm/compiler/phases/util/Providers;
            invokevirtual org.graalvm.compiler.phases.util.Providers.getMetaAccess:()Ljdk/vm/ci/meta/MetaAccessProvider;
            aload 1 /* arrayRangeWriteBarrier */
            getstatic org.graalvm.compiler.replacements.SnippetTemplate.DEFAULT_REPLACER:Lorg/graalvm/compiler/replacements/SnippetTemplate$UsageReplacer;
            aload 4 /* 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
         6: .line 575
            return
        end local 4 // org.graalvm.compiler.replacements.SnippetTemplate$Arguments args
        end local 3 // org.graalvm.compiler.nodes.spi.LoweringTool tool
        end local 2 // org.graalvm.compiler.hotspot.meta.HotSpotRegistersProvider registers
        end local 1 // org.graalvm.compiler.hotspot.gc.g1.G1ArrayRangePostWriteBarrier arrayRangeWriteBarrier
        end local 0 // org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    7     0                    this  Lorg/graalvm/compiler/hotspot/replacements/WriteBarrierSnippets$Templates;
            0    7     1  arrayRangeWriteBarrier  Lorg/graalvm/compiler/hotspot/gc/g1/G1ArrayRangePostWriteBarrier;
            0    7     2               registers  Lorg/graalvm/compiler/hotspot/meta/HotSpotRegistersProvider;
            0    7     3                    tool  Lorg/graalvm/compiler/nodes/spi/LoweringTool;
            1    7     4                    args  Lorg/graalvm/compiler/replacements/SnippetTemplate$Arguments;
    MethodParameters:
                        Name  Flags
      arrayRangeWriteBarrier  
      registers               
      tool                    
}
SourceFile: "WriteBarrierSnippets.java"
NestHost: org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets
InnerClasses:
  Counters = org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Counters of org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets
  public Templates = org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates of org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets
  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