public class org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets implements org.graalvm.compiler.replacements.Snippets
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets
  super_class: java.lang.Object
{
  private static final org.graalvm.compiler.replacements.SnippetCounter$Group countersWriteBarriers;
    descriptor: Lorg/graalvm/compiler/replacements/SnippetCounter$Group;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final org.graalvm.compiler.replacements.SnippetCounter serialWriteBarrierCounter;
    descriptor: Lorg/graalvm/compiler/replacements/SnippetCounter;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final org.graalvm.compiler.replacements.SnippetCounter g1AttemptedPreWriteBarrierCounter;
    descriptor: Lorg/graalvm/compiler/replacements/SnippetCounter;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final org.graalvm.compiler.replacements.SnippetCounter g1EffectivePreWriteBarrierCounter;
    descriptor: Lorg/graalvm/compiler/replacements/SnippetCounter;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final org.graalvm.compiler.replacements.SnippetCounter g1ExecutedPreWriteBarrierCounter;
    descriptor: Lorg/graalvm/compiler/replacements/SnippetCounter;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final org.graalvm.compiler.replacements.SnippetCounter g1AttemptedPostWriteBarrierCounter;
    descriptor: Lorg/graalvm/compiler/replacements/SnippetCounter;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final org.graalvm.compiler.replacements.SnippetCounter g1EffectiveAfterXORPostWriteBarrierCounter;
    descriptor: Lorg/graalvm/compiler/replacements/SnippetCounter;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final org.graalvm.compiler.replacements.SnippetCounter g1EffectiveAfterNullPostWriteBarrierCounter;
    descriptor: Lorg/graalvm/compiler/replacements/SnippetCounter;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final org.graalvm.compiler.replacements.SnippetCounter g1ExecutedPostWriteBarrierCounter;
    descriptor: Lorg/graalvm/compiler/replacements/SnippetCounter;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  public static final org.graalvm.compiler.core.common.LocationIdentity GC_CARD_LOCATION;
    descriptor: Lorg/graalvm/compiler/core/common/LocationIdentity;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final org.graalvm.compiler.core.common.LocationIdentity GC_LOG_LOCATION;
    descriptor: Lorg/graalvm/compiler/core/common/LocationIdentity;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final org.graalvm.compiler.core.common.LocationIdentity GC_INDEX_LOCATION;
    descriptor: Lorg/graalvm/compiler/core/common/LocationIdentity;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final org.graalvm.compiler.core.common.spi.ForeignCallDescriptor G1WBPRECALL;
    descriptor: Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final org.graalvm.compiler.core.common.spi.ForeignCallDescriptor G1WBPOSTCALL;
    descriptor: Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final org.graalvm.compiler.core.common.spi.ForeignCallDescriptor VALIDATE_OBJECT;
    descriptor: Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=8, locals=0, args_size=0
         0: .line 99
            getstatic org.graalvm.compiler.core.common.GraalOptions.SnippetCounters:Lorg/graalvm/compiler/options/OptionValue;
            invokevirtual org.graalvm.compiler.options.OptionValue.getValue:()Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 1
            new org.graalvm.compiler.replacements.SnippetCounter$Group
            dup
            ldc "WriteBarriers"
            invokespecial org.graalvm.compiler.replacements.SnippetCounter$Group.<init>:(Ljava/lang/String;)V
            goto 2
      StackMap locals:
      StackMap stack:
         1: aconst_null
      StackMap locals:
      StackMap stack: org.graalvm.compiler.replacements.SnippetCounter$Group
         2: putstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.countersWriteBarriers:Lorg/graalvm/compiler/replacements/SnippetCounter$Group;
         3: .line 100
            new org.graalvm.compiler.replacements.SnippetCounter
            dup
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.countersWriteBarriers:Lorg/graalvm/compiler/replacements/SnippetCounter$Group;
            ldc "serialWriteBarrier"
            ldc "Number of Serial Write Barriers"
            invokespecial org.graalvm.compiler.replacements.SnippetCounter.<init>:(Lorg/graalvm/compiler/replacements/SnippetCounter$Group;Ljava/lang/String;Ljava/lang/String;)V
            putstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.serialWriteBarrierCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
         4: .line 101
            new org.graalvm.compiler.replacements.SnippetCounter
            dup
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.countersWriteBarriers:Lorg/graalvm/compiler/replacements/SnippetCounter$Group;
            ldc "g1AttemptedPreWriteBarrier"
            ldc "Number of attempted G1 Pre Write Barriers"
            invokespecial org.graalvm.compiler.replacements.SnippetCounter.<init>:(Lorg/graalvm/compiler/replacements/SnippetCounter$Group;Ljava/lang/String;Ljava/lang/String;)V
            putstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.g1AttemptedPreWriteBarrierCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
         5: .line 102
            new org.graalvm.compiler.replacements.SnippetCounter
            dup
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.countersWriteBarriers:Lorg/graalvm/compiler/replacements/SnippetCounter$Group;
            ldc "g1EffectivePreWriteBarrier"
            ldc "Number of effective G1 Pre Write Barriers"
            invokespecial org.graalvm.compiler.replacements.SnippetCounter.<init>:(Lorg/graalvm/compiler/replacements/SnippetCounter$Group;Ljava/lang/String;Ljava/lang/String;)V
            putstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.g1EffectivePreWriteBarrierCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
         6: .line 103
            new org.graalvm.compiler.replacements.SnippetCounter
            dup
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.countersWriteBarriers:Lorg/graalvm/compiler/replacements/SnippetCounter$Group;
            ldc "g1ExecutedPreWriteBarrier"
            ldc "Number of executed G1 Pre Write Barriers"
            invokespecial org.graalvm.compiler.replacements.SnippetCounter.<init>:(Lorg/graalvm/compiler/replacements/SnippetCounter$Group;Ljava/lang/String;Ljava/lang/String;)V
            putstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.g1ExecutedPreWriteBarrierCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
         7: .line 104
            new org.graalvm.compiler.replacements.SnippetCounter
            dup
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.countersWriteBarriers:Lorg/graalvm/compiler/replacements/SnippetCounter$Group;
            ldc "g1AttemptedPostWriteBarrier"
            ldc "Number of attempted G1 Post Write Barriers"
            invokespecial org.graalvm.compiler.replacements.SnippetCounter.<init>:(Lorg/graalvm/compiler/replacements/SnippetCounter$Group;Ljava/lang/String;Ljava/lang/String;)V
            putstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.g1AttemptedPostWriteBarrierCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
         8: .line 105
            new org.graalvm.compiler.replacements.SnippetCounter
            dup
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.countersWriteBarriers:Lorg/graalvm/compiler/replacements/SnippetCounter$Group;
            ldc "g1EffectiveAfterXORPostWriteBarrier"
         9: .line 106
            ldc "Number of effective G1 Post Write Barriers (after passing the XOR test)"
        10: .line 105
            invokespecial org.graalvm.compiler.replacements.SnippetCounter.<init>:(Lorg/graalvm/compiler/replacements/SnippetCounter$Group;Ljava/lang/String;Ljava/lang/String;)V
            putstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.g1EffectiveAfterXORPostWriteBarrierCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
        11: .line 107
            new org.graalvm.compiler.replacements.SnippetCounter
            dup
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.countersWriteBarriers:Lorg/graalvm/compiler/replacements/SnippetCounter$Group;
            ldc "g1EffectiveAfterNullPostWriteBarrier"
        12: .line 108
            ldc "Number of effective G1 Post Write Barriers (after passing the NULL test)"
        13: .line 107
            invokespecial org.graalvm.compiler.replacements.SnippetCounter.<init>:(Lorg/graalvm/compiler/replacements/SnippetCounter$Group;Ljava/lang/String;Ljava/lang/String;)V
            putstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.g1EffectiveAfterNullPostWriteBarrierCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
        14: .line 109
            new org.graalvm.compiler.replacements.SnippetCounter
            dup
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.countersWriteBarriers:Lorg/graalvm/compiler/replacements/SnippetCounter$Group;
            ldc "g1ExecutedPostWriteBarrier"
            ldc "Number of executed G1 Post Write Barriers"
            invokespecial org.graalvm.compiler.replacements.SnippetCounter.<init>:(Lorg/graalvm/compiler/replacements/SnippetCounter$Group;Ljava/lang/String;Ljava/lang/String;)V
            putstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.g1ExecutedPostWriteBarrierCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
        15: .line 111
            ldc "GC-Card"
            invokestatic org.graalvm.compiler.nodes.NamedLocationIdentity.mutable:(Ljava/lang/String;)Lorg/graalvm/compiler/nodes/NamedLocationIdentity;
            putstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_CARD_LOCATION:Lorg/graalvm/compiler/core/common/LocationIdentity;
        16: .line 112
            ldc "GC-Log"
            invokestatic org.graalvm.compiler.nodes.NamedLocationIdentity.mutable:(Ljava/lang/String;)Lorg/graalvm/compiler/nodes/NamedLocationIdentity;
            putstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_LOG_LOCATION:Lorg/graalvm/compiler/core/common/LocationIdentity;
        17: .line 113
            ldc "GC-Index"
            invokestatic org.graalvm.compiler.nodes.NamedLocationIdentity.mutable:(Ljava/lang/String;)Lorg/graalvm/compiler/nodes/NamedLocationIdentity;
            putstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_INDEX_LOCATION:Lorg/graalvm/compiler/core/common/LocationIdentity;
        18: .line 367
            new org.graalvm.compiler.core.common.spi.ForeignCallDescriptor
            dup
            ldc "write_barrier_pre"
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Ljava/lang/Object;
            aastore
            invokespecial org.graalvm.compiler.core.common.spi.ForeignCallDescriptor.<init>:(Ljava/lang/String;Ljava/lang/Class;[Ljava/lang/Class;)V
            putstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.G1WBPRECALL:Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
        19: .line 372
            new org.graalvm.compiler.core.common.spi.ForeignCallDescriptor
            dup
            ldc "write_barrier_post"
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Lorg/graalvm/compiler/word/Word;
            aastore
            invokespecial org.graalvm.compiler.core.common.spi.ForeignCallDescriptor.<init>:(Ljava/lang/String;Ljava/lang/Class;[Ljava/lang/Class;)V
            putstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.G1WBPOSTCALL:Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
        20: .line 551
            new org.graalvm.compiler.core.common.spi.ForeignCallDescriptor
            dup
            ldc "validate_object"
            getstatic java.lang.Boolean.TYPE:Ljava/lang/Class;
            iconst_2
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Lorg/graalvm/compiler/word/Word;
            aastore
            dup
            iconst_1
            ldc Lorg/graalvm/compiler/word/Word;
            aastore
            invokespecial org.graalvm.compiler.core.common.spi.ForeignCallDescriptor.<init>:(Ljava/lang/String;Ljava/lang/Class;[Ljava/lang/Class;)V
            putstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.VALIDATE_OBJECT:Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets this
         0: .line 97
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/hotspot/replacements/WriteBarrierSnippets;

  private static void serialWriteBarrier(org.graalvm.compiler.word.Pointer);
    descriptor: (Lorg/graalvm/compiler/word/Pointer;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=1
        start local 0 // org.graalvm.compiler.word.Pointer ptr
         0: .line 116
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.serialWriteBarrierCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
         1: .line 117
            invokestatic org.graalvm.compiler.hotspot.nodes.GraalHotSpotVMConfigNode.cardTableAddress:()J
            lstore 1 /* startAddress */
        start local 1 // long startAddress
         2: .line 118
            aload 0 /* ptr */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.cardTableShift:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            invokeinterface org.graalvm.compiler.word.Pointer.unsignedShiftRight:(I)Lorg/graalvm/compiler/word/Unsigned;
            checkcast org.graalvm.compiler.word.Word
            astore 3 /* base */
        start local 3 // org.graalvm.compiler.word.Word base
         3: .line 119
            lload 1 /* startAddress */
            l2i
            i2l
            lload 1 /* startAddress */
            lcmp
            ifne 6
            invokestatic org.graalvm.compiler.hotspot.nodes.GraalHotSpotVMConfigNode.isCardTableAddressConstant:()Z
            ifeq 6
         4: .line 120
            aload 3 /* base */
            lload 1 /* startAddress */
            l2i
            iconst_0
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_CARD_LOCATION:Lorg/graalvm/compiler/core/common/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.writeByte:(IBLorg/graalvm/compiler/core/common/LocationIdentity;)V
         5: .line 121
            goto 7
         6: .line 122
      StackMap locals: long org.graalvm.compiler.word.Word
      StackMap stack:
            aload 3 /* base */
            lload 1 /* startAddress */
            invokestatic org.graalvm.compiler.word.Word.unsigned:(J)Lorg/graalvm/compiler/word/Word;
            iconst_0
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_CARD_LOCATION:Lorg/graalvm/compiler/core/common/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.writeByte:(Lorg/graalvm/compiler/word/WordBase;BLorg/graalvm/compiler/core/common/LocationIdentity;)V
         7: .line 124
      StackMap locals:
      StackMap stack:
            return
        end local 3 // org.graalvm.compiler.word.Word base
        end local 1 // long startAddress
        end local 0 // org.graalvm.compiler.word.Pointer ptr
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    8     0           ptr  Lorg/graalvm/compiler/word/Pointer;
            2    8     1  startAddress  J
            3    8     3          base  Lorg/graalvm/compiler/word/Word;
    MethodParameters:
      Name  Flags
      ptr   

  public static void serialImpreciseWriteBarrier(java.lang.Object);
    descriptor: (Ljava/lang/Object;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.Object object
         0: .line 128
            aload 0 /* object */
            invokestatic org.graalvm.compiler.word.Word.objectToTrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Pointer;
            invokestatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.serialWriteBarrier:(Lorg/graalvm/compiler/word/Pointer;)V
         1: .line 129
            return
        end local 0 // java.lang.Object object
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0  object  Ljava/lang/Object;
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.Snippet()
    MethodParameters:
        Name  Flags
      object  

  public static void serialPreciseWriteBarrier(org.graalvm.compiler.nodes.memory.address.AddressNode$Address);
    descriptor: (Lorg/graalvm/compiler/nodes/memory/address/AddressNode$Address;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.nodes.memory.address.AddressNode$Address address
         0: .line 133
            aload 0 /* address */
            invokestatic org.graalvm.compiler.word.Word.fromAddress:(Lorg/graalvm/compiler/nodes/memory/address/AddressNode$Address;)Lorg/graalvm/compiler/word/Pointer;
            invokestatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.serialWriteBarrier:(Lorg/graalvm/compiler/word/Pointer;)V
         1: .line 134
            return
        end local 0 // org.graalvm.compiler.nodes.memory.address.AddressNode$Address address
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0  address  Lorg/graalvm/compiler/nodes/memory/address/AddressNode$Address;
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.Snippet()
    MethodParameters:
         Name  Flags
      address  

  public static void serialArrayRangeWriteBarrier(java.lang.Object, int, int);
    descriptor: (Ljava/lang/Object;II)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=17, args_size=3
        start local 0 // java.lang.Object object
        start local 1 // int startIndex
        start local 2 // int length
         0: .line 138
            iload 2 /* length */
            ifne 2
         1: .line 139
            return
         2: .line 141
      StackMap locals:
      StackMap stack:
            aload 0 /* object */
            invokestatic org.graalvm.compiler.nodes.extended.FixedValueAnchorNode.getObject:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 3 /* dest */
        start local 3 // java.lang.Object dest
         3: .line 142
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.cardTableShift:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            istore 4 /* cardShift */
        start local 4 // int cardShift
         4: .line 143
            invokestatic org.graalvm.compiler.hotspot.nodes.GraalHotSpotVMConfigNode.cardTableAddress:()J
            lstore 5 /* cardStart */
        start local 5 // long cardStart
         5: .line 144
            getstatic jdk.vm.ci.meta.JavaKind.Object:Ljdk/vm/ci/meta/JavaKind;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.arrayIndexScale:(Ljdk/vm/ci/meta/JavaKind;)I
            istore 7 /* scale */
        start local 7 // int scale
         6: .line 145
            getstatic jdk.vm.ci.meta.JavaKind.Object:Ljdk/vm/ci/meta/JavaKind;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.arrayBaseOffset:(Ljdk/vm/ci/meta/JavaKind;)I
            istore 8 /* header */
        start local 8 // int header
         7: .line 146
            aload 3 /* dest */
            invokestatic org.graalvm.compiler.hotspot.nodes.GetObjectAddressNode.get:(Ljava/lang/Object;)J
            lstore 9 /* dstAddr */
        start local 9 // long dstAddr
         8: .line 147
            lload 9 /* dstAddr */
            iload 8 /* header */
            i2l
            ladd
            iload 1 /* startIndex */
            i2l
            iload 7 /* scale */
            i2l
            lmul
            ladd
            iload 4 /* cardShift */
            lushr
            lstore 11 /* start */
        start local 11 // long start
         9: .line 148
            lload 9 /* dstAddr */
            iload 8 /* header */
            i2l
            ladd
            iload 1 /* startIndex */
            i2l
            iload 2 /* length */
            i2l
            ladd
            lconst_1
            lsub
            iload 7 /* scale */
            i2l
            lmul
            ladd
            iload 4 /* cardShift */
            lushr
            lstore 13 /* end */
        start local 13 // long end
        10: .line 149
            lload 13 /* end */
            lload 11 /* start */
            lsub
            lconst_1
            ladd
            lstore 15 /* count */
        start local 15 // long count
        11: .line 150
            goto 13
        12: .line 151
      StackMap locals: java.lang.Object int int java.lang.Object int long int int long long long long
      StackMap stack:
            lload 11 /* start */
            lload 5 /* cardStart */
            ladd
            lload 15 /* count */
            ladd
            iconst_0
            getstatic jdk.vm.ci.meta.JavaKind.Boolean:Ljdk/vm/ci/meta/JavaKind;
            invokestatic org.graalvm.compiler.replacements.nodes.DirectStoreNode.storeBoolean:(JZLjdk/vm/ci/meta/JavaKind;)V
        13: .line 150
      StackMap locals:
      StackMap stack:
            lload 15 /* count */
            dup2
            lconst_1
            lsub
            lstore 15 /* count */
            lconst_0
            lcmp
            ifgt 12
        14: .line 153
            return
        end local 15 // long count
        end local 13 // long end
        end local 11 // long start
        end local 9 // long dstAddr
        end local 8 // int header
        end local 7 // int scale
        end local 5 // long cardStart
        end local 4 // int cardShift
        end local 3 // java.lang.Object dest
        end local 2 // int length
        end local 1 // int startIndex
        end local 0 // java.lang.Object object
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   15     0      object  Ljava/lang/Object;
            0   15     1  startIndex  I
            0   15     2      length  I
            3   15     3        dest  Ljava/lang/Object;
            4   15     4   cardShift  I
            5   15     5   cardStart  J
            6   15     7       scale  I
            7   15     8      header  I
            8   15     9     dstAddr  J
            9   15    11       start  J
           10   15    13         end  J
           11   15    15       count  J
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.Snippet()
    MethodParameters:
            Name  Flags
      object      
      startIndex  
      length      

  public static void g1PreWriteBarrier(org.graalvm.compiler.nodes.memory.address.AddressNode$Address, java.lang.Object, java.lang.Object, boolean, boolean, jdk.vm.ci.code.Register, boolean);
    descriptor: (Lorg/graalvm/compiler/nodes/memory/address/AddressNode$Address;Ljava/lang/Object;Ljava/lang/Object;ZZLjdk/vm/ci/code/Register;Z)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=8, locals=18, args_size=7
        start local 0 // org.graalvm.compiler.nodes.memory.address.AddressNode$Address address
        start local 1 // java.lang.Object object
        start local 2 // java.lang.Object expectedObject
        start local 3 // boolean doLoad
        start local 4 // boolean nullCheck
        start local 5 // jdk.vm.ci.code.Register threadRegister
        start local 6 // boolean trace
         0: .line 158
            iload 4 /* nullCheck */
            ifeq 2
         1: .line 159
            aload 0 /* address */
            invokestatic org.graalvm.compiler.nodes.extended.NullCheckNode.nullCheck:(Ljava/lang/Object;)V
         2: .line 161
      StackMap locals:
      StackMap stack:
            aload 5 /* threadRegister */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.registerAsWord:(Ljdk/vm/ci/code/Register;)Lorg/graalvm/compiler/word/Word;
            astore 7 /* thread */
        start local 7 // org.graalvm.compiler.word.Word thread
         3: .line 162
            aload 1 /* object */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.verifyOop:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         4: .line 163
            aload 2 /* expectedObject */
            invokestatic org.graalvm.compiler.nodes.extended.FixedValueAnchorNode.getObject:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 8 /* fixedExpectedObject */
        start local 8 // java.lang.Object fixedExpectedObject
         5: .line 164
            aload 0 /* address */
            invokestatic org.graalvm.compiler.word.Word.fromAddress:(Lorg/graalvm/compiler/nodes/memory/address/AddressNode$Address;)Lorg/graalvm/compiler/word/Pointer;
            astore 9 /* field */
        start local 9 // org.graalvm.compiler.word.Pointer field
         6: .line 165
            aload 8 /* fixedExpectedObject */
            invokestatic org.graalvm.compiler.word.Word.objectToTrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Pointer;
            astore 10 /* previousOop */
        start local 10 // org.graalvm.compiler.word.Pointer previousOop
         7: .line 166
            aload 7 /* thread */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.g1SATBQueueMarkingOffset:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            invokevirtual org.graalvm.compiler.word.Word.readByte:(I)B
            istore 11 /* markingValue */
        start local 11 // byte markingValue
         8: .line 167
            iconst_0
            istore 12 /* gcCycle */
        start local 12 // int gcCycle
         9: .line 168
            iload 6 /* trace */
            ifeq 18
        10: .line 169
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.gcTotalCollectionsAddress:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)J
            invokestatic org.graalvm.compiler.word.Word.unsigned:(J)Lorg/graalvm/compiler/word/Word;
            iconst_0
            invokevirtual org.graalvm.compiler.word.Word.readLong:(I)J
            l2i
            istore 12 /* gcCycle */
        11: .line 170
            iload 6 /* trace */
            ldc "[%d] G1-Pre Thread %p Object %p\n"
            iload 12 /* gcCycle */
            i2l
            aload 7 /* thread */
            invokevirtual org.graalvm.compiler.word.Word.rawValue:()J
            aload 1 /* object */
            invokestatic org.graalvm.compiler.word.Word.objectToTrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Pointer;
            invokeinterface org.graalvm.compiler.word.Pointer.rawValue:()J
            invokestatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.log:(ZLjava/lang/String;JJJ)V
        12: .line 171
            iload 6 /* trace */
            ldc "[%d] G1-Pre Thread %p Expected Object %p\n"
            iload 12 /* gcCycle */
            i2l
            aload 7 /* thread */
            invokevirtual org.graalvm.compiler.word.Word.rawValue:()J
            aload 8 /* fixedExpectedObject */
            invokestatic org.graalvm.compiler.word.Word.objectToTrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Pointer;
            invokeinterface org.graalvm.compiler.word.Pointer.rawValue:()J
            invokestatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.log:(ZLjava/lang/String;JJJ)V
        13: .line 172
            iload 6 /* trace */
            ldc "[%d] G1-Pre Thread %p Field %p\n"
            iload 12 /* gcCycle */
            i2l
            aload 7 /* thread */
            invokevirtual org.graalvm.compiler.word.Word.rawValue:()J
            aload 9 /* field */
            invokeinterface org.graalvm.compiler.word.Pointer.rawValue:()J
            invokestatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.log:(ZLjava/lang/String;JJJ)V
        14: .line 173
            iload 6 /* trace */
            ldc "[%d] G1-Pre Thread %p Marking %d\n"
            iload 12 /* gcCycle */
            i2l
            aload 7 /* thread */
            invokevirtual org.graalvm.compiler.word.Word.rawValue:()J
            iload 11 /* markingValue */
            i2l
            invokestatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.log:(ZLjava/lang/String;JJJ)V
        15: .line 174
            iload 6 /* trace */
            ldc "[%d] G1-Pre Thread %p DoLoad %d\n"
            iload 12 /* gcCycle */
            i2l
            aload 7 /* thread */
            invokevirtual org.graalvm.compiler.word.Word.rawValue:()J
            iload 3 /* doLoad */
            ifeq 16
            lconst_1
            goto 17
      StackMap locals: org.graalvm.compiler.nodes.memory.address.AddressNode$Address java.lang.Object java.lang.Object int int jdk.vm.ci.code.Register int org.graalvm.compiler.word.Word java.lang.Object org.graalvm.compiler.word.Pointer org.graalvm.compiler.word.Pointer int int
      StackMap stack: int java.lang.String long long
        16: lconst_0
      StackMap locals: org.graalvm.compiler.nodes.memory.address.AddressNode$Address java.lang.Object java.lang.Object int int jdk.vm.ci.code.Register int org.graalvm.compiler.word.Word java.lang.Object org.graalvm.compiler.word.Pointer org.graalvm.compiler.word.Pointer int int
      StackMap stack: int java.lang.String long long long
        17: invokestatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.log:(ZLjava/lang/String;JJJ)V
        18: .line 176
      StackMap locals:
      StackMap stack:
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.g1AttemptedPreWriteBarrierCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        19: .line 178
            ldc 0.09999999999999998
            iload 11 /* markingValue */
            ifeq 20
            iconst_1
            goto 21
      StackMap locals:
      StackMap stack: double
        20: iconst_0
      StackMap locals: org.graalvm.compiler.nodes.memory.address.AddressNode$Address java.lang.Object java.lang.Object int int jdk.vm.ci.code.Register int org.graalvm.compiler.word.Word java.lang.Object org.graalvm.compiler.word.Pointer org.graalvm.compiler.word.Pointer int int
      StackMap stack: double int
        21: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 40
        22: .line 181
            ldc 0.6
            iload 3 /* doLoad */
            invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 27
        23: .line 182
            aload 9 /* field */
            iconst_0
            getstatic org.graalvm.compiler.nodes.memory.HeapAccess$BarrierType.NONE:Lorg/graalvm/compiler/nodes/memory/HeapAccess$BarrierType;
            invokeinterface org.graalvm.compiler.word.Pointer.readObject:(ILorg/graalvm/compiler/nodes/memory/HeapAccess$BarrierType;)Ljava/lang/Object;
            invokestatic org.graalvm.compiler.word.Word.objectToTrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Pointer;
            astore 10 /* previousOop */
        24: .line 183
            iload 6 /* trace */
            ifeq 27
        25: .line 184
            iload 6 /* trace */
            ldc "[%d] G1-Pre Thread %p Previous Object %p\n "
            iload 12 /* gcCycle */
            i2l
            aload 7 /* thread */
            invokevirtual org.graalvm.compiler.word.Word.rawValue:()J
            aload 10 /* previousOop */
            invokeinterface org.graalvm.compiler.word.Pointer.rawValue:()J
            invokestatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.log:(ZLjava/lang/String;JJJ)V
        26: .line 185
            aload 10 /* previousOop */
            invokeinterface org.graalvm.compiler.word.Pointer.toObject:()Ljava/lang/Object;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.verifyOop:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
        27: .line 188
      StackMap locals:
      StackMap stack:
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.g1EffectivePreWriteBarrierCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        28: .line 190
            ldc 0.9
            aload 10 /* previousOop */
            iconst_0
            invokeinterface org.graalvm.compiler.word.Pointer.notEqual:(I)Z
            invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 40
        29: .line 191
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.g1ExecutedPreWriteBarrierCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        30: .line 194
            aload 7 /* thread */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.g1SATBQueueIndexOffset:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            invokevirtual org.graalvm.compiler.word.Word.add:(I)Lorg/graalvm/compiler/word/Word;
            astore 13 /* indexAddress */
        start local 13 // org.graalvm.compiler.word.Word indexAddress
        31: .line 195
            aload 13 /* indexAddress */
            iconst_0
            invokevirtual org.graalvm.compiler.word.Word.readWord:(I)Lorg/graalvm/compiler/word/Word;
            astore 14 /* indexValue */
        start local 14 // org.graalvm.compiler.word.Word indexValue
        32: .line 196
            ldc 0.9
            aload 14 /* indexValue */
            iconst_0
            invokevirtual org.graalvm.compiler.word.Word.notEqual:(I)Z
            invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 39
        33: .line 197
            aload 7 /* thread */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.g1SATBQueueBufferOffset:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            invokevirtual org.graalvm.compiler.word.Word.readWord:(I)Lorg/graalvm/compiler/word/Word;
            astore 15 /* bufferAddress */
        start local 15 // org.graalvm.compiler.word.Word bufferAddress
        34: .line 198
            aload 14 /* indexValue */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.wordSize:()I
            invokevirtual org.graalvm.compiler.word.Word.subtract:(I)Lorg/graalvm/compiler/word/Word;
            astore 16 /* nextIndex */
        start local 16 // org.graalvm.compiler.word.Word nextIndex
        35: .line 199
            aload 15 /* bufferAddress */
            aload 16 /* nextIndex */
            invokevirtual org.graalvm.compiler.word.Word.add:(Lorg/graalvm/compiler/word/Word;)Lorg/graalvm/compiler/word/Word;
            astore 17 /* logAddress */
        start local 17 // org.graalvm.compiler.word.Word logAddress
        36: .line 201
            aload 17 /* logAddress */
            iconst_0
            aload 10 /* previousOop */
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_LOG_LOCATION:Lorg/graalvm/compiler/core/common/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.writeWord:(ILorg/graalvm/compiler/word/WordBase;Lorg/graalvm/compiler/core/common/LocationIdentity;)V
        37: .line 202
            aload 13 /* indexAddress */
            iconst_0
            aload 16 /* nextIndex */
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_INDEX_LOCATION:Lorg/graalvm/compiler/core/common/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.writeWord:(ILorg/graalvm/compiler/word/WordBase;Lorg/graalvm/compiler/core/common/LocationIdentity;)V
        end local 17 // org.graalvm.compiler.word.Word logAddress
        end local 16 // org.graalvm.compiler.word.Word nextIndex
        end local 15 // org.graalvm.compiler.word.Word bufferAddress
        38: .line 203
            goto 40
        39: .line 204
      StackMap locals: org.graalvm.compiler.word.Word org.graalvm.compiler.word.Word
      StackMap stack:
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.G1WBPRECALL:Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
            aload 10 /* previousOop */
            invokeinterface org.graalvm.compiler.word.Pointer.toObject:()Ljava/lang/Object;
            invokestatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.g1PreBarrierStub:(Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;Ljava/lang/Object;)V
        end local 14 // org.graalvm.compiler.word.Word indexValue
        end local 13 // org.graalvm.compiler.word.Word indexAddress
        40: .line 208
      StackMap locals:
      StackMap stack:
            return
        end local 12 // int gcCycle
        end local 11 // byte markingValue
        end local 10 // org.graalvm.compiler.word.Pointer previousOop
        end local 9 // org.graalvm.compiler.word.Pointer field
        end local 8 // java.lang.Object fixedExpectedObject
        end local 7 // org.graalvm.compiler.word.Word thread
        end local 6 // boolean trace
        end local 5 // jdk.vm.ci.code.Register threadRegister
        end local 4 // boolean nullCheck
        end local 3 // boolean doLoad
        end local 2 // java.lang.Object expectedObject
        end local 1 // java.lang.Object object
        end local 0 // org.graalvm.compiler.nodes.memory.address.AddressNode$Address address
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   41     0              address  Lorg/graalvm/compiler/nodes/memory/address/AddressNode$Address;
            0   41     1               object  Ljava/lang/Object;
            0   41     2       expectedObject  Ljava/lang/Object;
            0   41     3               doLoad  Z
            0   41     4            nullCheck  Z
            0   41     5       threadRegister  Ljdk/vm/ci/code/Register;
            0   41     6                trace  Z
            3   41     7               thread  Lorg/graalvm/compiler/word/Word;
            5   41     8  fixedExpectedObject  Ljava/lang/Object;
            6   41     9                field  Lorg/graalvm/compiler/word/Pointer;
            7   41    10          previousOop  Lorg/graalvm/compiler/word/Pointer;
            8   41    11         markingValue  B
            9   41    12              gcCycle  I
           31   40    13         indexAddress  Lorg/graalvm/compiler/word/Word;
           32   40    14           indexValue  Lorg/graalvm/compiler/word/Word;
           34   38    15        bufferAddress  Lorg/graalvm/compiler/word/Word;
           35   38    16            nextIndex  Lorg/graalvm/compiler/word/Word;
           36   38    17           logAddress  Lorg/graalvm/compiler/word/Word;
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.Snippet()
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      4:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      5:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      6:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
    MethodParameters:
                Name  Flags
      address         
      object          
      expectedObject  
      doLoad          
      nullCheck       
      threadRegister  
      trace           

  public static void g1PostWriteBarrier(org.graalvm.compiler.nodes.memory.address.AddressNode$Address, java.lang.Object, java.lang.Object, boolean, jdk.vm.ci.code.Register, boolean);
    descriptor: (Lorg/graalvm/compiler/nodes/memory/address/AddressNode$Address;Ljava/lang/Object;Ljava/lang/Object;ZLjdk/vm/ci/code/Register;Z)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=8, locals=25, args_size=6
        start local 0 // org.graalvm.compiler.nodes.memory.address.AddressNode$Address address
        start local 1 // java.lang.Object object
        start local 2 // java.lang.Object value
        start local 3 // boolean usePrecise
        start local 4 // jdk.vm.ci.code.Register threadRegister
        start local 5 // boolean trace
         0: .line 213
            aload 4 /* threadRegister */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.registerAsWord:(Ljdk/vm/ci/code/Register;)Lorg/graalvm/compiler/word/Word;
            astore 6 /* thread */
        start local 6 // org.graalvm.compiler.word.Word thread
         1: .line 214
            aload 2 /* value */
            invokestatic org.graalvm.compiler.nodes.extended.FixedValueAnchorNode.getObject:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 7 /* fixedValue */
        start local 7 // java.lang.Object fixedValue
         2: .line 215
            aload 1 /* object */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.verifyOop:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 216
            aload 7 /* fixedValue */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.verifyOop:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         4: .line 217
            aload 1 /* object */
            aload 7 /* fixedValue */
            invokestatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.validateObject:(Ljava/lang/Object;Ljava/lang/Object;)V
         5: .line 219
            iload 3 /* usePrecise */
            ifeq 8
         6: .line 220
            aload 0 /* address */
            invokestatic org.graalvm.compiler.word.Word.fromAddress:(Lorg/graalvm/compiler/nodes/memory/address/AddressNode$Address;)Lorg/graalvm/compiler/word/Pointer;
            astore 8 /* oop */
        start local 8 // org.graalvm.compiler.word.Pointer oop
         7: .line 221
            goto 9
        end local 8 // org.graalvm.compiler.word.Pointer oop
         8: .line 222
      StackMap locals: org.graalvm.compiler.word.Word java.lang.Object
      StackMap stack:
            aload 1 /* object */
            invokestatic org.graalvm.compiler.word.Word.objectToTrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Pointer;
            astore 8 /* oop */
        start local 8 // org.graalvm.compiler.word.Pointer oop
         9: .line 224
      StackMap locals: org.graalvm.compiler.word.Pointer
      StackMap stack:
            iconst_0
            istore 9 /* gcCycle */
        start local 9 // int gcCycle
        10: .line 225
            iload 5 /* trace */
            ifeq 14
        11: .line 226
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.gcTotalCollectionsAddress:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)J
            invokestatic org.graalvm.compiler.word.Word.unsigned:(J)Lorg/graalvm/compiler/word/Word;
            iconst_0
            invokevirtual org.graalvm.compiler.word.Word.readLong:(I)J
            l2i
            istore 9 /* gcCycle */
        12: .line 227
            iload 5 /* trace */
            ldc "[%d] G1-Post Thread: %p Object: %p\n"
            iload 9 /* gcCycle */
            i2l
            aload 6 /* thread */
            invokevirtual org.graalvm.compiler.word.Word.rawValue:()J
            aload 1 /* object */
            invokestatic org.graalvm.compiler.word.Word.objectToTrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Pointer;
            invokeinterface org.graalvm.compiler.word.Pointer.rawValue:()J
            invokestatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.log:(ZLjava/lang/String;JJJ)V
        13: .line 228
            iload 5 /* trace */
            ldc "[%d] G1-Post Thread: %p Field: %p\n"
            iload 9 /* gcCycle */
            i2l
            aload 6 /* thread */
            invokevirtual org.graalvm.compiler.word.Word.rawValue:()J
            aload 8 /* oop */
            invokeinterface org.graalvm.compiler.word.Pointer.rawValue:()J
            invokestatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.log:(ZLjava/lang/String;JJJ)V
        14: .line 230
      StackMap locals: int
      StackMap stack:
            aload 7 /* fixedValue */
            invokestatic org.graalvm.compiler.word.Word.objectToTrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Pointer;
            astore 10 /* writtenValue */
        start local 10 // org.graalvm.compiler.word.Pointer writtenValue
        15: .line 233
            invokestatic org.graalvm.compiler.hotspot.nodes.GraalHotSpotVMConfigNode.logOfHeapRegionGrainBytes:()I
            istore 11 /* logOfHeapRegionGrainBytes */
        start local 11 // int logOfHeapRegionGrainBytes
        16: .line 234
            aload 8 /* oop */
            aload 10 /* writtenValue */
            invokeinterface org.graalvm.compiler.word.Pointer.xor:(Lorg/graalvm/compiler/word/Unsigned;)Lorg/graalvm/compiler/word/Unsigned;
            iload 11 /* logOfHeapRegionGrainBytes */
            invokeinterface org.graalvm.compiler.word.Unsigned.unsignedShiftRight:(I)Lorg/graalvm/compiler/word/Unsigned;
            astore 12 /* xorResult */
        start local 12 // org.graalvm.compiler.word.Unsigned xorResult
        17: .line 238
            aload 8 /* oop */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.cardTableShift:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            invokeinterface org.graalvm.compiler.word.Pointer.unsignedShiftRight:(I)Lorg/graalvm/compiler/word/Unsigned;
            astore 13 /* cardBase */
        start local 13 // org.graalvm.compiler.word.Unsigned cardBase
        18: .line 239
            invokestatic org.graalvm.compiler.hotspot.nodes.GraalHotSpotVMConfigNode.cardTableAddress:()J
            lstore 14 /* startAddress */
        start local 14 // long startAddress
        19: .line 240
            iconst_0
            istore 16 /* displacement */
        start local 16 // int displacement
        20: .line 241
            lload 14 /* startAddress */
            l2i
            i2l
            lload 14 /* startAddress */
            lcmp
            ifne 23
            invokestatic org.graalvm.compiler.hotspot.nodes.GraalHotSpotVMConfigNode.isCardTableAddressConstant:()Z
            ifeq 23
        21: .line 242
            lload 14 /* startAddress */
            l2i
            istore 16 /* displacement */
        22: .line 243
            goto 24
        23: .line 244
      StackMap locals: org.graalvm.compiler.nodes.memory.address.AddressNode$Address java.lang.Object java.lang.Object int jdk.vm.ci.code.Register int org.graalvm.compiler.word.Word java.lang.Object org.graalvm.compiler.word.Pointer int org.graalvm.compiler.word.Pointer int org.graalvm.compiler.word.Unsigned org.graalvm.compiler.word.Unsigned long int
      StackMap stack:
            aload 13 /* cardBase */
            lload 14 /* startAddress */
            invokestatic org.graalvm.compiler.word.Word.unsigned:(J)Lorg/graalvm/compiler/word/Word;
            invokeinterface org.graalvm.compiler.word.Unsigned.add:(Lorg/graalvm/compiler/word/Unsigned;)Lorg/graalvm/compiler/word/Unsigned;
            astore 13 /* cardBase */
        24: .line 246
      StackMap locals:
      StackMap stack:
            aload 13 /* cardBase */
            iload 16 /* displacement */
            invokeinterface org.graalvm.compiler.word.Unsigned.add:(I)Lorg/graalvm/compiler/word/Unsigned;
            checkcast org.graalvm.compiler.word.Word
            astore 17 /* cardAddress */
        start local 17 // org.graalvm.compiler.word.Word cardAddress
        25: .line 248
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.g1AttemptedPostWriteBarrierCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        26: .line 249
            ldc 0.9
            aload 12 /* xorResult */
            iconst_0
            invokeinterface org.graalvm.compiler.word.Unsigned.notEqual:(I)Z
            invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 52
        27: .line 250
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.g1EffectiveAfterXORPostWriteBarrierCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        28: .line 253
            ldc 0.9
            aload 10 /* writtenValue */
            iconst_0
            invokeinterface org.graalvm.compiler.word.Pointer.notEqual:(I)Z
            invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 52
        29: .line 254
            aload 17 /* cardAddress */
            iconst_0
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_CARD_LOCATION:Lorg/graalvm/compiler/core/common/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.readByte:(ILorg/graalvm/compiler/core/common/LocationIdentity;)B
            istore 18 /* cardByte */
        start local 18 // byte cardByte
        30: .line 255
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.g1EffectiveAfterNullPostWriteBarrierCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        31: .line 258
            ldc 0.09999999999999998
            iload 18 /* cardByte */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.g1YoungCardValue:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)B
            if_icmpeq 32
            iconst_1
            goto 33
      StackMap locals: org.graalvm.compiler.nodes.memory.address.AddressNode$Address java.lang.Object java.lang.Object int jdk.vm.ci.code.Register int org.graalvm.compiler.word.Word java.lang.Object org.graalvm.compiler.word.Pointer int org.graalvm.compiler.word.Pointer int org.graalvm.compiler.word.Unsigned org.graalvm.compiler.word.Unsigned long int org.graalvm.compiler.word.Word int
      StackMap stack: double
        32: iconst_0
      StackMap locals: org.graalvm.compiler.nodes.memory.address.AddressNode$Address java.lang.Object java.lang.Object int jdk.vm.ci.code.Register int org.graalvm.compiler.word.Word java.lang.Object org.graalvm.compiler.word.Pointer int org.graalvm.compiler.word.Pointer int org.graalvm.compiler.word.Unsigned org.graalvm.compiler.word.Unsigned long int org.graalvm.compiler.word.Word int
      StackMap stack: double int
        33: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 52
        34: .line 259
            iconst_4
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_CARD_LOCATION:Lorg/graalvm/compiler/core/common/LocationIdentity;
            invokestatic org.graalvm.compiler.nodes.extended.MembarNode.memoryBarrier:(ILorg/graalvm/compiler/core/common/LocationIdentity;)V
        35: .line 260
            aload 17 /* cardAddress */
            iconst_0
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_CARD_LOCATION:Lorg/graalvm/compiler/core/common/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.readByte:(ILorg/graalvm/compiler/core/common/LocationIdentity;)B
            istore 19 /* cardByteReload */
        start local 19 // byte cardByteReload
        36: .line 261
            ldc 0.09999999999999998
            iload 19 /* cardByteReload */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.dirtyCardValue:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)B
            if_icmpeq 37
            iconst_1
            goto 38
      StackMap locals: org.graalvm.compiler.nodes.memory.address.AddressNode$Address java.lang.Object java.lang.Object int jdk.vm.ci.code.Register int org.graalvm.compiler.word.Word java.lang.Object org.graalvm.compiler.word.Pointer int org.graalvm.compiler.word.Pointer int org.graalvm.compiler.word.Unsigned org.graalvm.compiler.word.Unsigned long int org.graalvm.compiler.word.Word int int
      StackMap stack: double
        37: iconst_0
      StackMap locals: org.graalvm.compiler.nodes.memory.address.AddressNode$Address java.lang.Object java.lang.Object int jdk.vm.ci.code.Register int org.graalvm.compiler.word.Word java.lang.Object org.graalvm.compiler.word.Pointer int org.graalvm.compiler.word.Pointer int org.graalvm.compiler.word.Unsigned org.graalvm.compiler.word.Unsigned long int org.graalvm.compiler.word.Word int int
      StackMap stack: double int
        38: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 52
        39: .line 262
            iload 5 /* trace */
            ldc "[%d] G1-Post Thread: %p Card: %p \n"
            iload 9 /* gcCycle */
            i2l
            aload 6 /* thread */
            invokevirtual org.graalvm.compiler.word.Word.rawValue:()J
            iload 18 /* cardByte */
            invokestatic org.graalvm.compiler.word.Word.unsigned:(I)Lorg/graalvm/compiler/word/Word;
            invokevirtual org.graalvm.compiler.word.Word.rawValue:()J
            invokestatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.log:(ZLjava/lang/String;JJJ)V
        40: .line 263
            aload 17 /* cardAddress */
            iconst_0
            iconst_0
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_CARD_LOCATION:Lorg/graalvm/compiler/core/common/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.writeByte:(IBLorg/graalvm/compiler/core/common/LocationIdentity;)V
        41: .line 264
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.g1ExecutedPostWriteBarrierCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        42: .line 268
            aload 6 /* thread */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.g1CardQueueIndexOffset:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            invokevirtual org.graalvm.compiler.word.Word.add:(I)Lorg/graalvm/compiler/word/Word;
            astore 20 /* indexAddress */
        start local 20 // org.graalvm.compiler.word.Word indexAddress
        43: .line 269
            aload 6 /* thread */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.g1CardQueueIndexOffset:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            invokevirtual org.graalvm.compiler.word.Word.readWord:(I)Lorg/graalvm/compiler/word/Word;
            astore 21 /* indexValue */
        start local 21 // org.graalvm.compiler.word.Word indexValue
        44: .line 270
            ldc 0.9
            aload 21 /* indexValue */
            iconst_0
            invokevirtual org.graalvm.compiler.word.Word.notEqual:(I)Z
            invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 51
        45: .line 271
            aload 6 /* thread */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.g1CardQueueBufferOffset:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            invokevirtual org.graalvm.compiler.word.Word.readWord:(I)Lorg/graalvm/compiler/word/Word;
            astore 22 /* bufferAddress */
        start local 22 // org.graalvm.compiler.word.Word bufferAddress
        46: .line 272
            aload 21 /* indexValue */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.wordSize:()I
            invokevirtual org.graalvm.compiler.word.Word.subtract:(I)Lorg/graalvm/compiler/word/Word;
            astore 23 /* nextIndex */
        start local 23 // org.graalvm.compiler.word.Word nextIndex
        47: .line 273
            aload 22 /* bufferAddress */
            aload 23 /* nextIndex */
            invokevirtual org.graalvm.compiler.word.Word.add:(Lorg/graalvm/compiler/word/Word;)Lorg/graalvm/compiler/word/Word;
            astore 24 /* logAddress */
        start local 24 // org.graalvm.compiler.word.Word logAddress
        48: .line 276
            aload 24 /* logAddress */
            iconst_0
            aload 17 /* cardAddress */
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_LOG_LOCATION:Lorg/graalvm/compiler/core/common/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.writeWord:(ILorg/graalvm/compiler/word/WordBase;Lorg/graalvm/compiler/core/common/LocationIdentity;)V
        49: .line 277
            aload 20 /* indexAddress */
            iconst_0
            aload 23 /* nextIndex */
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_INDEX_LOCATION:Lorg/graalvm/compiler/core/common/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.writeWord:(ILorg/graalvm/compiler/word/WordBase;Lorg/graalvm/compiler/core/common/LocationIdentity;)V
        end local 24 // org.graalvm.compiler.word.Word logAddress
        end local 23 // org.graalvm.compiler.word.Word nextIndex
        end local 22 // org.graalvm.compiler.word.Word bufferAddress
        50: .line 278
            goto 52
        51: .line 279
      StackMap locals: org.graalvm.compiler.word.Word org.graalvm.compiler.word.Word
      StackMap stack:
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.G1WBPOSTCALL:Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
            aload 17 /* cardAddress */
            invokestatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.g1PostBarrierStub:(Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;Lorg/graalvm/compiler/word/Word;)V
        end local 21 // org.graalvm.compiler.word.Word indexValue
        end local 20 // org.graalvm.compiler.word.Word indexAddress
        end local 19 // byte cardByteReload
        end local 18 // byte cardByte
        52: .line 285
      StackMap locals: org.graalvm.compiler.nodes.memory.address.AddressNode$Address java.lang.Object java.lang.Object int jdk.vm.ci.code.Register int org.graalvm.compiler.word.Word java.lang.Object org.graalvm.compiler.word.Pointer int org.graalvm.compiler.word.Pointer int org.graalvm.compiler.word.Unsigned org.graalvm.compiler.word.Unsigned long int org.graalvm.compiler.word.Word
      StackMap stack:
            return
        end local 17 // org.graalvm.compiler.word.Word cardAddress
        end local 16 // int displacement
        end local 14 // long startAddress
        end local 13 // org.graalvm.compiler.word.Unsigned cardBase
        end local 12 // org.graalvm.compiler.word.Unsigned xorResult
        end local 11 // int logOfHeapRegionGrainBytes
        end local 10 // org.graalvm.compiler.word.Pointer writtenValue
        end local 9 // int gcCycle
        end local 8 // org.graalvm.compiler.word.Pointer oop
        end local 7 // java.lang.Object fixedValue
        end local 6 // org.graalvm.compiler.word.Word thread
        end local 5 // boolean trace
        end local 4 // jdk.vm.ci.code.Register threadRegister
        end local 3 // boolean usePrecise
        end local 2 // java.lang.Object value
        end local 1 // java.lang.Object object
        end local 0 // org.graalvm.compiler.nodes.memory.address.AddressNode$Address address
      LocalVariableTable:
        Start  End  Slot                       Name  Signature
            0   53     0                    address  Lorg/graalvm/compiler/nodes/memory/address/AddressNode$Address;
            0   53     1                     object  Ljava/lang/Object;
            0   53     2                      value  Ljava/lang/Object;
            0   53     3                 usePrecise  Z
            0   53     4             threadRegister  Ljdk/vm/ci/code/Register;
            0   53     5                      trace  Z
            1   53     6                     thread  Lorg/graalvm/compiler/word/Word;
            2   53     7                 fixedValue  Ljava/lang/Object;
            7    8     8                        oop  Lorg/graalvm/compiler/word/Pointer;
            9   53     8                        oop  Lorg/graalvm/compiler/word/Pointer;
           10   53     9                    gcCycle  I
           15   53    10               writtenValue  Lorg/graalvm/compiler/word/Pointer;
           16   53    11  logOfHeapRegionGrainBytes  I
           17   53    12                  xorResult  Lorg/graalvm/compiler/word/Unsigned;
           18   53    13                   cardBase  Lorg/graalvm/compiler/word/Unsigned;
           19   53    14               startAddress  J
           20   53    16               displacement  I
           25   53    17                cardAddress  Lorg/graalvm/compiler/word/Word;
           30   52    18                   cardByte  B
           36   52    19             cardByteReload  B
           43   52    20               indexAddress  Lorg/graalvm/compiler/word/Word;
           44   52    21                 indexValue  Lorg/graalvm/compiler/word/Word;
           46   50    22              bufferAddress  Lorg/graalvm/compiler/word/Word;
           47   50    23                  nextIndex  Lorg/graalvm/compiler/word/Word;
           48   50    24                 logAddress  Lorg/graalvm/compiler/word/Word;
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.Snippet()
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      4:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      5:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
    MethodParameters:
                Name  Flags
      address         
      object          
      value           
      usePrecise      
      threadRegister  
      trace           

  public static void g1ArrayRangePreWriteBarrier(java.lang.Object, int, int, jdk.vm.ci.code.Register);
    descriptor: (Ljava/lang/Object;IILjdk/vm/ci/code/Register;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=20, args_size=4
        start local 0 // java.lang.Object object
        start local 1 // int startIndex
        start local 2 // int length
        start local 3 // jdk.vm.ci.code.Register threadRegister
         0: .line 289
            aload 3 /* threadRegister */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.registerAsWord:(Ljdk/vm/ci/code/Register;)Lorg/graalvm/compiler/word/Word;
            astore 4 /* thread */
        start local 4 // org.graalvm.compiler.word.Word thread
         1: .line 290
            aload 4 /* thread */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.g1SATBQueueMarkingOffset:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            invokevirtual org.graalvm.compiler.word.Word.readByte:(I)B
            istore 5 /* markingValue */
        start local 5 // byte markingValue
         2: .line 292
            iload 5 /* markingValue */
            ifeq 3
            iload 2 /* length */
            ifne 4
         3: .line 293
      StackMap locals: org.graalvm.compiler.word.Word int
      StackMap stack:
            return
         4: .line 295
      StackMap locals:
      StackMap stack:
            aload 0 /* object */
            invokestatic org.graalvm.compiler.nodes.extended.FixedValueAnchorNode.getObject:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 6 /* dest */
        start local 6 // java.lang.Object dest
         5: .line 296
            aload 4 /* thread */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.g1SATBQueueBufferOffset:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            invokevirtual org.graalvm.compiler.word.Word.readWord:(I)Lorg/graalvm/compiler/word/Word;
            astore 7 /* bufferAddress */
        start local 7 // org.graalvm.compiler.word.Word bufferAddress
         6: .line 297
            aload 4 /* thread */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.g1SATBQueueIndexOffset:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            invokevirtual org.graalvm.compiler.word.Word.add:(I)Lorg/graalvm/compiler/word/Word;
            astore 8 /* indexAddress */
        start local 8 // org.graalvm.compiler.word.Word indexAddress
         7: .line 298
            aload 6 /* dest */
            invokestatic org.graalvm.compiler.hotspot.nodes.GetObjectAddressNode.get:(Ljava/lang/Object;)J
            lstore 9 /* dstAddr */
        start local 9 // long dstAddr
         8: .line 299
            aload 8 /* indexAddress */
            iconst_0
            invokevirtual org.graalvm.compiler.word.Word.readWord:(I)Lorg/graalvm/compiler/word/Word;
            invokevirtual org.graalvm.compiler.word.Word.rawValue:()J
            lstore 11 /* indexValue */
        start local 11 // long indexValue
         9: .line 300
            getstatic jdk.vm.ci.meta.JavaKind.Object:Ljdk/vm/ci/meta/JavaKind;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.arrayIndexScale:(Ljdk/vm/ci/meta/JavaKind;)I
            istore 13 /* scale */
        start local 13 // int scale
        10: .line 301
            getstatic jdk.vm.ci.meta.JavaKind.Object:Ljdk/vm/ci/meta/JavaKind;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.arrayBaseOffset:(Ljdk/vm/ci/meta/JavaKind;)I
            istore 14 /* header */
        start local 14 // int header
        11: .line 303
            iload 1 /* startIndex */
            istore 15 /* i */
        start local 15 // int i
        12: goto 25
        13: .line 304
      StackMap locals: java.lang.Object int int jdk.vm.ci.code.Register org.graalvm.compiler.word.Word int java.lang.Object org.graalvm.compiler.word.Word org.graalvm.compiler.word.Word long long int int int
      StackMap stack:
            lload 9 /* dstAddr */
            iload 14 /* header */
            i2l
            ladd
            iload 15 /* i */
            iload 13 /* scale */
            imul
            i2l
            ladd
            lstore 16 /* address */
        start local 16 // long address
        14: .line 305
            lload 16 /* address */
            invokestatic org.graalvm.compiler.word.Word.unsigned:(J)Lorg/graalvm/compiler/word/Word;
            iconst_0
            getstatic org.graalvm.compiler.nodes.memory.HeapAccess$BarrierType.NONE:Lorg/graalvm/compiler/nodes/memory/HeapAccess$BarrierType;
            invokevirtual org.graalvm.compiler.word.Word.readObject:(ILorg/graalvm/compiler/nodes/memory/HeapAccess$BarrierType;)Ljava/lang/Object;
            invokestatic org.graalvm.compiler.word.Word.objectToTrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Pointer;
            astore 18 /* oop */
        start local 18 // org.graalvm.compiler.word.Pointer oop
        15: .line 306
            aload 18 /* oop */
            invokeinterface org.graalvm.compiler.word.Pointer.toObject:()Ljava/lang/Object;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.verifyOop:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
        16: .line 307
            aload 18 /* oop */
            iconst_0
            invokeinterface org.graalvm.compiler.word.Pointer.notEqual:(I)Z
            ifeq 24
        17: .line 308
            lload 11 /* indexValue */
            lconst_0
            lcmp
            ifeq 23
        18: .line 309
            lload 11 /* indexValue */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.wordSize:()I
            i2l
            lsub
            lstore 11 /* indexValue */
        19: .line 310
            aload 7 /* bufferAddress */
            lload 11 /* indexValue */
            invokestatic org.graalvm.compiler.word.Word.unsigned:(J)Lorg/graalvm/compiler/word/Word;
            invokevirtual org.graalvm.compiler.word.Word.add:(Lorg/graalvm/compiler/word/Word;)Lorg/graalvm/compiler/word/Word;
            astore 19 /* logAddress */
        start local 19 // org.graalvm.compiler.word.Word logAddress
        20: .line 312
            aload 19 /* logAddress */
            iconst_0
            aload 18 /* oop */
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_LOG_LOCATION:Lorg/graalvm/compiler/core/common/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.writeWord:(ILorg/graalvm/compiler/word/WordBase;Lorg/graalvm/compiler/core/common/LocationIdentity;)V
        21: .line 313
            aload 8 /* indexAddress */
            iconst_0
            lload 11 /* indexValue */
            invokestatic org.graalvm.compiler.word.Word.unsigned:(J)Lorg/graalvm/compiler/word/Word;
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_INDEX_LOCATION:Lorg/graalvm/compiler/core/common/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.writeWord:(ILorg/graalvm/compiler/word/WordBase;Lorg/graalvm/compiler/core/common/LocationIdentity;)V
        end local 19 // org.graalvm.compiler.word.Word logAddress
        22: .line 314
            goto 24
        23: .line 315
      StackMap locals: long org.graalvm.compiler.word.Pointer
      StackMap stack:
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.G1WBPRECALL:Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
            aload 18 /* oop */
            invokeinterface org.graalvm.compiler.word.Pointer.toObject:()Ljava/lang/Object;
            invokestatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.g1PreBarrierStub:(Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;Ljava/lang/Object;)V
        end local 18 // org.graalvm.compiler.word.Pointer oop
        end local 16 // long address
        24: .line 303
      StackMap locals:
      StackMap stack:
            iinc 15 /* i */ 1
      StackMap locals:
      StackMap stack:
        25: iload 15 /* i */
            iload 2 /* length */
            if_icmplt 13
        end local 15 // int i
        26: .line 319
            return
        end local 14 // int header
        end local 13 // int scale
        end local 11 // long indexValue
        end local 9 // long dstAddr
        end local 8 // org.graalvm.compiler.word.Word indexAddress
        end local 7 // org.graalvm.compiler.word.Word bufferAddress
        end local 6 // java.lang.Object dest
        end local 5 // byte markingValue
        end local 4 // org.graalvm.compiler.word.Word thread
        end local 3 // jdk.vm.ci.code.Register threadRegister
        end local 2 // int length
        end local 1 // int startIndex
        end local 0 // java.lang.Object object
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   27     0          object  Ljava/lang/Object;
            0   27     1      startIndex  I
            0   27     2          length  I
            0   27     3  threadRegister  Ljdk/vm/ci/code/Register;
            1   27     4          thread  Lorg/graalvm/compiler/word/Word;
            2   27     5    markingValue  B
            5   27     6            dest  Ljava/lang/Object;
            6   27     7   bufferAddress  Lorg/graalvm/compiler/word/Word;
            7   27     8    indexAddress  Lorg/graalvm/compiler/word/Word;
            8   27     9         dstAddr  J
            9   27    11      indexValue  J
           10   27    13           scale  I
           11   27    14          header  I
           12   26    15               i  I
           14   24    16         address  J
           15   24    18             oop  Lorg/graalvm/compiler/word/Pointer;
           20   22    19      logAddress  Lorg/graalvm/compiler/word/Word;
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.Snippet()
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
    MethodParameters:
                Name  Flags
      object          
      startIndex      
      length          
      threadRegister  

  public static void g1ArrayRangePostWriteBarrier(java.lang.Object, int, int, jdk.vm.ci.code.Register);
    descriptor: (Ljava/lang/Object;IILjdk/vm/ci/code/Register;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=27, args_size=4
        start local 0 // java.lang.Object object
        start local 1 // int startIndex
        start local 2 // int length
        start local 3 // jdk.vm.ci.code.Register threadRegister
         0: .line 323
            iload 2 /* length */
            ifne 2
         1: .line 324
            return
         2: .line 326
      StackMap locals:
      StackMap stack:
            aload 0 /* object */
            invokestatic org.graalvm.compiler.nodes.extended.FixedValueAnchorNode.getObject:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 4 /* dest */
        start local 4 // java.lang.Object dest
         3: .line 327
            aload 3 /* threadRegister */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.registerAsWord:(Ljdk/vm/ci/code/Register;)Lorg/graalvm/compiler/word/Word;
            astore 5 /* thread */
        start local 5 // org.graalvm.compiler.word.Word thread
         4: .line 328
            aload 5 /* thread */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.g1CardQueueBufferOffset:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            invokevirtual org.graalvm.compiler.word.Word.readWord:(I)Lorg/graalvm/compiler/word/Word;
            astore 6 /* bufferAddress */
        start local 6 // org.graalvm.compiler.word.Word bufferAddress
         5: .line 329
            aload 5 /* thread */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.g1CardQueueIndexOffset:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            invokevirtual org.graalvm.compiler.word.Word.add:(I)Lorg/graalvm/compiler/word/Word;
            astore 7 /* indexAddress */
        start local 7 // org.graalvm.compiler.word.Word indexAddress
         6: .line 330
            aload 5 /* thread */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.g1CardQueueIndexOffset:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            invokevirtual org.graalvm.compiler.word.Word.readWord:(I)Lorg/graalvm/compiler/word/Word;
            invokevirtual org.graalvm.compiler.word.Word.rawValue:()J
            lstore 8 /* indexValue */
        start local 8 // long indexValue
         7: .line 332
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.cardTableShift:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            istore 10 /* cardShift */
        start local 10 // int cardShift
         8: .line 333
            invokestatic org.graalvm.compiler.hotspot.nodes.GraalHotSpotVMConfigNode.cardTableAddress:()J
            lstore 11 /* cardStart */
        start local 11 // long cardStart
         9: .line 334
            getstatic jdk.vm.ci.meta.JavaKind.Object:Ljdk/vm/ci/meta/JavaKind;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.arrayIndexScale:(Ljdk/vm/ci/meta/JavaKind;)I
            istore 13 /* scale */
        start local 13 // int scale
        10: .line 335
            getstatic jdk.vm.ci.meta.JavaKind.Object:Ljdk/vm/ci/meta/JavaKind;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.arrayBaseOffset:(Ljdk/vm/ci/meta/JavaKind;)I
            istore 14 /* header */
        start local 14 // int header
        11: .line 336
            aload 4 /* dest */
            invokestatic org.graalvm.compiler.hotspot.nodes.GetObjectAddressNode.get:(Ljava/lang/Object;)J
            lstore 15 /* dstAddr */
        start local 15 // long dstAddr
        12: .line 337
            lload 15 /* dstAddr */
            iload 14 /* header */
            i2l
            ladd
            iload 1 /* startIndex */
            i2l
            iload 13 /* scale */
            i2l
            lmul
            ladd
            iload 10 /* cardShift */
            lushr
            lstore 17 /* start */
        start local 17 // long start
        13: .line 338
            lload 15 /* dstAddr */
            iload 14 /* header */
            i2l
            ladd
            iload 1 /* startIndex */
            i2l
            iload 2 /* length */
            i2l
            ladd
            lconst_1
            lsub
            iload 13 /* scale */
            i2l
            lmul
            ladd
            iload 10 /* cardShift */
            lushr
            lstore 19 /* end */
        start local 19 // long end
        14: .line 339
            lload 19 /* end */
            lload 17 /* start */
            lsub
            lconst_1
            ladd
            lstore 21 /* count */
        start local 21 // long count
        15: .line 341
            goto 34
        16: .line 342
      StackMap locals: java.lang.Object int int jdk.vm.ci.code.Register java.lang.Object org.graalvm.compiler.word.Word org.graalvm.compiler.word.Word org.graalvm.compiler.word.Word long int long int int long long long long
      StackMap stack:
            lload 17 /* start */
            lload 11 /* cardStart */
            ladd
            lload 21 /* count */
            ladd
            invokestatic org.graalvm.compiler.word.Word.unsigned:(J)Lorg/graalvm/compiler/word/Word;
            astore 23 /* cardAddress */
        start local 23 // org.graalvm.compiler.word.Word cardAddress
        17: .line 343
            aload 23 /* cardAddress */
            iconst_0
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_CARD_LOCATION:Lorg/graalvm/compiler/core/common/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.readByte:(ILorg/graalvm/compiler/core/common/LocationIdentity;)B
            istore 24 /* cardByte */
        start local 24 // byte cardByte
        18: .line 345
            ldc 0.09999999999999998
            iload 24 /* cardByte */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.g1YoungCardValue:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)B
            if_icmpeq 19
            iconst_1
            goto 20
      StackMap locals: java.lang.Object int int jdk.vm.ci.code.Register java.lang.Object org.graalvm.compiler.word.Word org.graalvm.compiler.word.Word org.graalvm.compiler.word.Word long int long int int long long long long org.graalvm.compiler.word.Word int
      StackMap stack: double
        19: iconst_0
      StackMap locals: java.lang.Object int int jdk.vm.ci.code.Register java.lang.Object org.graalvm.compiler.word.Word org.graalvm.compiler.word.Word org.graalvm.compiler.word.Word long int long int int long long long long org.graalvm.compiler.word.Word int
      StackMap stack: double int
        20: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 34
        21: .line 346
            iconst_4
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_CARD_LOCATION:Lorg/graalvm/compiler/core/common/LocationIdentity;
            invokestatic org.graalvm.compiler.nodes.extended.MembarNode.memoryBarrier:(ILorg/graalvm/compiler/core/common/LocationIdentity;)V
        22: .line 347
            aload 23 /* cardAddress */
            iconst_0
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_CARD_LOCATION:Lorg/graalvm/compiler/core/common/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.readByte:(ILorg/graalvm/compiler/core/common/LocationIdentity;)B
            istore 25 /* cardByteReload */
        start local 25 // byte cardByteReload
        23: .line 348
            ldc 0.09999999999999998
            iload 25 /* cardByteReload */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.dirtyCardValue:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)B
            if_icmpeq 24
            iconst_1
            goto 25
      StackMap locals: java.lang.Object int int jdk.vm.ci.code.Register java.lang.Object org.graalvm.compiler.word.Word org.graalvm.compiler.word.Word org.graalvm.compiler.word.Word long int long int int long long long long org.graalvm.compiler.word.Word int int
      StackMap stack: double
        24: iconst_0
      StackMap locals: java.lang.Object int int jdk.vm.ci.code.Register java.lang.Object org.graalvm.compiler.word.Word org.graalvm.compiler.word.Word org.graalvm.compiler.word.Word long int long int int long long long long org.graalvm.compiler.word.Word int int
      StackMap stack: double int
        25: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 34
        26: .line 349
            aload 23 /* cardAddress */
            iconst_0
            iconst_0
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_CARD_LOCATION:Lorg/graalvm/compiler/core/common/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.writeByte:(IBLorg/graalvm/compiler/core/common/LocationIdentity;)V
        27: .line 352
            lload 8 /* indexValue */
            lconst_0
            lcmp
            ifeq 33
        28: .line 353
            lload 8 /* indexValue */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.wordSize:()I
            i2l
            lsub
            lstore 8 /* indexValue */
        29: .line 354
            aload 6 /* bufferAddress */
            lload 8 /* indexValue */
            invokestatic org.graalvm.compiler.word.Word.unsigned:(J)Lorg/graalvm/compiler/word/Word;
            invokevirtual org.graalvm.compiler.word.Word.add:(Lorg/graalvm/compiler/word/Word;)Lorg/graalvm/compiler/word/Word;
            astore 26 /* logAddress */
        start local 26 // org.graalvm.compiler.word.Word logAddress
        30: .line 357
            aload 26 /* logAddress */
            iconst_0
            aload 23 /* cardAddress */
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_LOG_LOCATION:Lorg/graalvm/compiler/core/common/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.writeWord:(ILorg/graalvm/compiler/word/WordBase;Lorg/graalvm/compiler/core/common/LocationIdentity;)V
        31: .line 358
            aload 7 /* indexAddress */
            iconst_0
            lload 8 /* indexValue */
            invokestatic org.graalvm.compiler.word.Word.unsigned:(J)Lorg/graalvm/compiler/word/Word;
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_INDEX_LOCATION:Lorg/graalvm/compiler/core/common/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.writeWord:(ILorg/graalvm/compiler/word/WordBase;Lorg/graalvm/compiler/core/common/LocationIdentity;)V
        end local 26 // org.graalvm.compiler.word.Word logAddress
        32: .line 359
            goto 34
        33: .line 360
      StackMap locals:
      StackMap stack:
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.G1WBPOSTCALL:Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
            aload 23 /* cardAddress */
            invokestatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.g1PostBarrierStub:(Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;Lorg/graalvm/compiler/word/Word;)V
        end local 25 // byte cardByteReload
        end local 24 // byte cardByte
        end local 23 // org.graalvm.compiler.word.Word cardAddress
        34: .line 341
      StackMap locals:
      StackMap stack:
            lload 21 /* count */
            dup2
            lconst_1
            lsub
            lstore 21 /* count */
            lconst_0
            lcmp
            ifgt 16
        35: .line 365
            return
        end local 21 // long count
        end local 19 // long end
        end local 17 // long start
        end local 15 // long dstAddr
        end local 14 // int header
        end local 13 // int scale
        end local 11 // long cardStart
        end local 10 // int cardShift
        end local 8 // long indexValue
        end local 7 // org.graalvm.compiler.word.Word indexAddress
        end local 6 // org.graalvm.compiler.word.Word bufferAddress
        end local 5 // org.graalvm.compiler.word.Word thread
        end local 4 // java.lang.Object dest
        end local 3 // jdk.vm.ci.code.Register threadRegister
        end local 2 // int length
        end local 1 // int startIndex
        end local 0 // java.lang.Object object
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   36     0          object  Ljava/lang/Object;
            0   36     1      startIndex  I
            0   36     2          length  I
            0   36     3  threadRegister  Ljdk/vm/ci/code/Register;
            3   36     4            dest  Ljava/lang/Object;
            4   36     5          thread  Lorg/graalvm/compiler/word/Word;
            5   36     6   bufferAddress  Lorg/graalvm/compiler/word/Word;
            6   36     7    indexAddress  Lorg/graalvm/compiler/word/Word;
            7   36     8      indexValue  J
            8   36    10       cardShift  I
            9   36    11       cardStart  J
           10   36    13           scale  I
           11   36    14          header  I
           12   36    15         dstAddr  J
           13   36    17           start  J
           14   36    19             end  J
           15   36    21           count  J
           17   34    23     cardAddress  Lorg/graalvm/compiler/word/Word;
           18   34    24        cardByte  B
           23   34    25  cardByteReload  B
           30   32    26      logAddress  Lorg/graalvm/compiler/word/Word;
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.Snippet()
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
    MethodParameters:
                Name  Flags
      object          
      startIndex      
      length          
      threadRegister  

  private static native void g1PreBarrierStub(org.graalvm.compiler.core.common.spi.ForeignCallDescriptor, java.lang.Object);
    descriptor: (Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;Ljava/lang/Object;)V
    flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.graph.Node$NodeIntrinsic(value = Lorg/graalvm/compiler/nodes/extended/ForeignCallNode;)
    RuntimeVisibleParameterAnnotations: 
      0:
        org.graalvm.compiler.graph.Node$ConstantNodeParameter()
      1:
    MethodParameters:
            Name  Flags
      descriptor  
      object      

  public static native void g1PostBarrierStub(org.graalvm.compiler.core.common.spi.ForeignCallDescriptor, org.graalvm.compiler.word.Word);
    descriptor: (Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;Lorg/graalvm/compiler/word/Word;)V
    flags: (0x0109) ACC_PUBLIC, ACC_STATIC, ACC_NATIVE
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.graph.Node$NodeIntrinsic(value = Lorg/graalvm/compiler/nodes/extended/ForeignCallNode;)
    RuntimeVisibleParameterAnnotations: 
      0:
        org.graalvm.compiler.graph.Node$ConstantNodeParameter()
      1:
    MethodParameters:
            Name  Flags
      descriptor  
      card        

  public static void log(boolean, java.lang.String, long);
    descriptor: (ZLjava/lang/String;J)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // boolean enabled
        start local 1 // java.lang.String format
        start local 2 // long value
         0: .line 516
            iload 0 /* enabled */
            ifeq 2
         1: .line 517
            aload 1 /* format */
            lload 2 /* value */
            invokestatic org.graalvm.compiler.replacements.Log.printf:(Ljava/lang/String;J)V
         2: .line 519
      StackMap locals:
      StackMap stack:
            return
        end local 2 // long value
        end local 1 // java.lang.String format
        end local 0 // boolean enabled
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0  enabled  Z
            0    3     1   format  Ljava/lang/String;
            0    3     2    value  J
    MethodParameters:
         Name  Flags
      enabled  
      format   
      value    

  public static void log(boolean, java.lang.String, long, long);
    descriptor: (ZLjava/lang/String;JJ)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=6, args_size=4
        start local 0 // boolean enabled
        start local 1 // java.lang.String format
        start local 2 // long value1
        start local 4 // long value2
         0: .line 522
            iload 0 /* enabled */
            ifeq 2
         1: .line 523
            aload 1 /* format */
            lload 2 /* value1 */
            lload 4 /* value2 */
            invokestatic org.graalvm.compiler.replacements.Log.printf:(Ljava/lang/String;JJ)V
         2: .line 525
      StackMap locals:
      StackMap stack:
            return
        end local 4 // long value2
        end local 2 // long value1
        end local 1 // java.lang.String format
        end local 0 // boolean enabled
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0  enabled  Z
            0    3     1   format  Ljava/lang/String;
            0    3     2   value1  J
            0    3     4   value2  J
    MethodParameters:
         Name  Flags
      enabled  
      format   
      value1   
      value2   

  public static void log(boolean, java.lang.String, long, long, long);
    descriptor: (ZLjava/lang/String;JJJ)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=8, args_size=5
        start local 0 // boolean enabled
        start local 1 // java.lang.String format
        start local 2 // long value1
        start local 4 // long value2
        start local 6 // long value3
         0: .line 528
            iload 0 /* enabled */
            ifeq 2
         1: .line 529
            aload 1 /* format */
            lload 2 /* value1 */
            lload 4 /* value2 */
            lload 6 /* value3 */
            invokestatic org.graalvm.compiler.replacements.Log.printf:(Ljava/lang/String;JJJ)V
         2: .line 531
      StackMap locals:
      StackMap stack:
            return
        end local 6 // long value3
        end local 4 // long value2
        end local 2 // long value1
        end local 1 // java.lang.String format
        end local 0 // boolean enabled
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0  enabled  Z
            0    3     1   format  Ljava/lang/String;
            0    3     2   value1  J
            0    3     4   value2  J
            0    3     6   value3  J
    MethodParameters:
         Name  Flags
      enabled  
      format   
      value1   
      value2   
      value3   

  public static boolean traceBarrier();
    descriptor: ()Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 534
            getstatic org.graalvm.compiler.core.common.GraalOptions.GCDebugStartCycle:Lorg/graalvm/compiler/options/OptionValue;
            invokevirtual org.graalvm.compiler.options.OptionValue.getValue:()Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            ifle 3
         1: .line 535
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.gcTotalCollectionsAddress:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)J
            invokestatic org.graalvm.compiler.word.Word.unsigned:(J)Lorg/graalvm/compiler/word/Word;
            iconst_0
            invokevirtual org.graalvm.compiler.word.Word.readLong:(I)J
            l2i
            getstatic org.graalvm.compiler.core.common.GraalOptions.GCDebugStartCycle:Lorg/graalvm/compiler/options/OptionValue;
            invokevirtual org.graalvm.compiler.options.OptionValue.getValue:()Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
         2: .line 534
            if_icmple 3
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         3: iconst_0
            ireturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static void validateObject(java.lang.Object, java.lang.Object);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=2, args_size=2
        start local 0 // java.lang.Object parent
        start local 1 // java.lang.Object child
         0: .line 545
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.verifyOops:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)Z
            ifeq 3
            aload 1 /* child */
            ifnull 3
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.VALIDATE_OBJECT:Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
            aload 0 /* parent */
            aload 1 /* child */
            invokestatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.validateOop:(Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;Ljava/lang/Object;Ljava/lang/Object;)Z
            ifne 3
         1: .line 546
            iconst_1
            ldc "Verification ERROR, Parent: %p Child: %p\n"
            aload 0 /* parent */
            invokestatic org.graalvm.compiler.word.Word.objectToTrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Pointer;
            invokeinterface org.graalvm.compiler.word.Pointer.rawValue:()J
            aload 1 /* child */
            invokestatic org.graalvm.compiler.word.Word.objectToTrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Pointer;
            invokeinterface org.graalvm.compiler.word.Pointer.rawValue:()J
            invokestatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.log:(ZLjava/lang/String;JJ)V
         2: .line 547
            aconst_null
            iconst_0
            lconst_0
            aconst_null
            invokestatic org.graalvm.compiler.core.common.LocationIdentity.any:()Lorg/graalvm/compiler/core/common/LocationIdentity;
            getstatic jdk.vm.ci.meta.JavaKind.Object:Ljdk/vm/ci/meta/JavaKind;
            invokestatic org.graalvm.compiler.replacements.nodes.DirectObjectStoreNode.storeObject:(Ljava/lang/Object;IJLjava/lang/Object;Lorg/graalvm/compiler/core/common/LocationIdentity;Ljdk/vm/ci/meta/JavaKind;)V
         3: .line 549
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.Object child
        end local 0 // java.lang.Object parent
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0  parent  Ljava/lang/Object;
            0    4     1   child  Ljava/lang/Object;
    MethodParameters:
        Name  Flags
      parent  
      child   

  private static native boolean validateOop(org.graalvm.compiler.core.common.spi.ForeignCallDescriptor, java.lang.Object, java.lang.Object);
    descriptor: (Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;Ljava/lang/Object;Ljava/lang/Object;)Z
    flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.graph.Node$NodeIntrinsic(value = Lorg/graalvm/compiler/nodes/extended/ForeignCallNode;)
    RuntimeVisibleParameterAnnotations: 
      0:
        org.graalvm.compiler.graph.Node$ConstantNodeParameter()
      1:
      2:
    MethodParameters:
            Name  Flags
      descriptor  
      parent      
      object      
}
SourceFile: "WriteBarrierSnippets.java"
NestMembers:
  org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates
InnerClasses:
  public abstract ConstantParameter = org.graalvm.compiler.api.replacements.Snippet$ConstantParameter of org.graalvm.compiler.api.replacements.Snippet
  public abstract ConstantNodeParameter = org.graalvm.compiler.graph.Node$ConstantNodeParameter of org.graalvm.compiler.graph.Node
  public abstract NodeIntrinsic = org.graalvm.compiler.graph.Node$NodeIntrinsic of org.graalvm.compiler.graph.Node
  public Templates = org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates of org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets
  public final BarrierType = org.graalvm.compiler.nodes.memory.HeapAccess$BarrierType of org.graalvm.compiler.nodes.memory.HeapAccess
  public abstract Address = org.graalvm.compiler.nodes.memory.address.AddressNode$Address of org.graalvm.compiler.nodes.memory.address.AddressNode
  public Group = org.graalvm.compiler.replacements.SnippetCounter$Group of org.graalvm.compiler.replacements.SnippetCounter