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
{
  public static final jdk.internal.vm.compiler.word.LocationIdentity GC_CARD_LOCATION;
    descriptor: Ljdk/internal/vm/compiler/word/LocationIdentity;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final jdk.internal.vm.compiler.word.LocationIdentity GC_LOG_LOCATION;
    descriptor: Ljdk/internal/vm/compiler/word/LocationIdentity;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final jdk.internal.vm.compiler.word.LocationIdentity GC_INDEX_LOCATION;
    descriptor: Ljdk/internal/vm/compiler/word/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 133
            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:Ljdk/internal/vm/compiler/word/LocationIdentity;
         1: .line 134
            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:Ljdk/internal/vm/compiler/word/LocationIdentity;
         2: .line 135
            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:Ljdk/internal/vm/compiler/word/LocationIdentity;
         3: .line 414
            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;
         4: .line 419
            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;
         5: .line 614
            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 105
            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(jdk.internal.vm.compiler.word.Pointer, org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Counters);
    descriptor: (Ljdk/internal/vm/compiler/word/Pointer;Lorg/graalvm/compiler/hotspot/replacements/WriteBarrierSnippets$Counters;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // jdk.internal.vm.compiler.word.Pointer ptr
        start local 1 // org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Counters counters
         0: .line 138
            aload 1 /* counters */
            getfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Counters.serialWriteBarrierCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
         1: .line 139
            invokestatic org.graalvm.compiler.hotspot.nodes.GraalHotSpotVMConfigNode.cardTableAddress:()J
            lstore 2 /* startAddress */
        start local 2 // long startAddress
         2: .line 140
            aload 0 /* ptr */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfigBase.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.cardTableShift:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            invokeinterface jdk.internal.vm.compiler.word.Pointer.unsignedShiftRight:(I)Ljdk/internal/vm/compiler/word/UnsignedWord;
            checkcast org.graalvm.compiler.word.Word
            astore 4 /* base */
        start local 4 // org.graalvm.compiler.word.Word base
         3: .line 141
            lload 2 /* startAddress */
            l2i
            i2l
            lload 2 /* startAddress */
            lcmp
            ifne 6
            invokestatic org.graalvm.compiler.hotspot.nodes.GraalHotSpotVMConfigNode.isCardTableAddressConstant:()Z
            ifeq 6
         4: .line 142
            aload 4 /* base */
            lload 2 /* startAddress */
            l2i
            iconst_0
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_CARD_LOCATION:Ljdk/internal/vm/compiler/word/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.writeByte:(IBLjdk/internal/vm/compiler/word/LocationIdentity;)V
         5: .line 143
            goto 7
         6: .line 144
      StackMap locals: long org.graalvm.compiler.word.Word
      StackMap stack:
            aload 4 /* base */
            lload 2 /* startAddress */
            invokestatic jdk.internal.vm.compiler.word.WordFactory.unsigned:(J)Ljdk/internal/vm/compiler/word/UnsignedWord;
            iconst_0
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_CARD_LOCATION:Ljdk/internal/vm/compiler/word/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.writeByte:(Ljdk/internal/vm/compiler/word/WordBase;BLjdk/internal/vm/compiler/word/LocationIdentity;)V
         7: .line 146
      StackMap locals:
      StackMap stack:
            return
        end local 4 // org.graalvm.compiler.word.Word base
        end local 2 // long startAddress
        end local 1 // org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Counters counters
        end local 0 // jdk.internal.vm.compiler.word.Pointer ptr
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    8     0           ptr  Ljdk/internal/vm/compiler/word/Pointer;
            0    8     1      counters  Lorg/graalvm/compiler/hotspot/replacements/WriteBarrierSnippets$Counters;
            2    8     2  startAddress  J
            3    8     4          base  Lorg/graalvm/compiler/word/Word;
    MethodParameters:
          Name  Flags
      ptr       
      counters  

  public static void serialImpreciseWriteBarrier(java.lang.Object, boolean, org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Counters);
    descriptor: (Ljava/lang/Object;ZLorg/graalvm/compiler/hotspot/replacements/WriteBarrierSnippets$Counters;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // java.lang.Object object
        start local 1 // boolean verifyBarrier
        start local 2 // org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Counters counters
         0: .line 150
            iload 1 /* verifyBarrier */
            ifeq 2
         1: .line 151
            aload 0 /* object */
            invokestatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.verifyNotArray:(Ljava/lang/Object;)V
         2: .line 153
      StackMap locals:
      StackMap stack:
            aload 0 /* object */
            invokestatic org.graalvm.compiler.word.Word.objectToTrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Word;
            aload 2 /* counters */
            invokestatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.serialWriteBarrier:(Ljdk/internal/vm/compiler/word/Pointer;Lorg/graalvm/compiler/hotspot/replacements/WriteBarrierSnippets$Counters;)V
         3: .line 154
            return
        end local 2 // org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Counters counters
        end local 1 // boolean verifyBarrier
        end local 0 // java.lang.Object object
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0         object  Ljava/lang/Object;
            0    4     1  verifyBarrier  Z
            0    4     2       counters  Lorg/graalvm/compiler/hotspot/replacements/WriteBarrierSnippets$Counters;
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.Snippet()
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      2:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
    MethodParameters:
               Name  Flags
      object         
      verifyBarrier  
      counters       

  public static void serialPreciseWriteBarrier(org.graalvm.compiler.nodes.memory.address.AddressNode$Address, org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Counters);
    descriptor: (Lorg/graalvm/compiler/nodes/memory/address/AddressNode$Address;Lorg/graalvm/compiler/hotspot/replacements/WriteBarrierSnippets$Counters;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.graalvm.compiler.nodes.memory.address.AddressNode$Address address
        start local 1 // org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Counters counters
         0: .line 158
            aload 0 /* address */
            invokestatic org.graalvm.compiler.word.Word.fromAddress:(Lorg/graalvm/compiler/nodes/memory/address/AddressNode$Address;)Lorg/graalvm/compiler/word/Word;
            aload 1 /* counters */
            invokestatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.serialWriteBarrier:(Ljdk/internal/vm/compiler/word/Pointer;Lorg/graalvm/compiler/hotspot/replacements/WriteBarrierSnippets$Counters;)V
         1: .line 159
            return
        end local 1 // org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Counters counters
        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;
            0    2     1  counters  Lorg/graalvm/compiler/hotspot/replacements/WriteBarrierSnippets$Counters;
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.Snippet()
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
    MethodParameters:
          Name  Flags
      address   
      counters  

  public static void serialArrayRangeWriteBarrier(org.graalvm.compiler.nodes.memory.address.AddressNode$Address, int, int);
    descriptor: (Lorg/graalvm/compiler/nodes/memory/address/AddressNode$Address;II)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=12, args_size=3
        start local 0 // org.graalvm.compiler.nodes.memory.address.AddressNode$Address address
        start local 1 // int length
        start local 2 // int elementStride
         0: .line 163
            iload 1 /* length */
            ifne 2
         1: .line 164
            return
         2: .line 166
      StackMap locals:
      StackMap stack:
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfigBase.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.cardTableShift:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            istore 3 /* cardShift */
        start local 3 // int cardShift
         3: .line 167
            invokestatic org.graalvm.compiler.hotspot.nodes.GraalHotSpotVMConfigNode.cardTableAddress:()J
            lstore 4 /* cardStart */
        start local 4 // long cardStart
         4: .line 168
            aload 0 /* address */
            iload 1 /* length */
            iload 2 /* elementStride */
            invokestatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.getPointerToFirstArrayElement:(Lorg/graalvm/compiler/nodes/memory/address/AddressNode$Address;II)J
            iload 3 /* cardShift */
            lushr
            lstore 6 /* start */
        start local 6 // long start
         5: .line 169
            aload 0 /* address */
            iload 1 /* length */
            iload 2 /* elementStride */
            invokestatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.getPointerToLastArrayElement:(Lorg/graalvm/compiler/nodes/memory/address/AddressNode$Address;II)J
            iload 3 /* cardShift */
            lushr
            lstore 8 /* end */
        start local 8 // long end
         6: .line 170
            lload 8 /* end */
            lload 6 /* start */
            lsub
            lconst_1
            ladd
            lstore 10 /* count */
        start local 10 // long count
         7: .line 171
            goto 9
         8: .line 172
      StackMap locals: org.graalvm.compiler.nodes.memory.address.AddressNode$Address int int int long long long long
      StackMap stack:
            lload 6 /* start */
            lload 4 /* cardStart */
            ladd
            lload 10 /* 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
         9: .line 171
      StackMap locals:
      StackMap stack:
            lload 10 /* count */
            dup2
            lconst_1
            lsub
            lstore 10 /* count */
            lconst_0
            lcmp
            ifgt 8
        10: .line 174
            return
        end local 10 // long count
        end local 8 // long end
        end local 6 // long start
        end local 4 // long cardStart
        end local 3 // int cardShift
        end local 2 // int elementStride
        end local 1 // int length
        end local 0 // org.graalvm.compiler.nodes.memory.address.AddressNode$Address address
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   11     0        address  Lorg/graalvm/compiler/nodes/memory/address/AddressNode$Address;
            0   11     1         length  I
            0   11     2  elementStride  I
            3   11     3      cardShift  I
            4   11     4      cardStart  J
            5   11     6          start  J
            6   11     8            end  J
            7   11    10          count  J
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.Snippet()
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
    MethodParameters:
               Name  Flags
      address        
      length         
      elementStride  

  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, org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Counters);
    descriptor: (Lorg/graalvm/compiler/nodes/memory/address/AddressNode$Address;Ljava/lang/Object;Ljava/lang/Object;ZZLjdk/vm/ci/code/Register;ZLorg/graalvm/compiler/hotspot/replacements/WriteBarrierSnippets$Counters;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=8, locals=19, args_size=8
        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
        start local 7 // org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Counters counters
         0: .line 179
            iload 4 /* nullCheck */
            ifeq 2
         1: .line 180
            aload 0 /* address */
            invokestatic org.graalvm.compiler.nodes.extended.NullCheckNode.nullCheck:(Ljava/lang/Object;)V
         2: .line 182
      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 8 /* thread */
        start local 8 // org.graalvm.compiler.word.Word thread
         3: .line 183
            aload 1 /* object */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.verifyOop:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         4: .line 184
            aload 2 /* expectedObject */
            invokestatic org.graalvm.compiler.nodes.extended.FixedValueAnchorNode.getObject:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 9 /* fixedExpectedObject */
        start local 9 // java.lang.Object fixedExpectedObject
         5: .line 185
            aload 0 /* address */
            invokestatic org.graalvm.compiler.word.Word.fromAddress:(Lorg/graalvm/compiler/nodes/memory/address/AddressNode$Address;)Lorg/graalvm/compiler/word/Word;
            astore 10 /* field */
        start local 10 // org.graalvm.compiler.word.Word field
         6: .line 186
            aload 9 /* fixedExpectedObject */
            invokestatic org.graalvm.compiler.word.Word.objectToTrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Word;
            astore 11 /* previousOop */
        start local 11 // jdk.internal.vm.compiler.word.Pointer previousOop
         7: .line 187
            aload 8 /* thread */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfigBase.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 12 /* markingValue */
        start local 12 // byte markingValue
         8: .line 188
            iconst_0
            istore 13 /* gcCycle */
        start local 13 // int gcCycle
         9: .line 189
            iload 6 /* trace */
            ifeq 19
        10: .line 190
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfigBase.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.gcTotalCollectionsAddress:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)J
            invokestatic jdk.internal.vm.compiler.word.WordFactory.pointer:(J)Ljdk/internal/vm/compiler/word/PointerBase;
            checkcast jdk.internal.vm.compiler.word.Pointer
            astore 14 /* gcTotalCollectionsAddress */
        start local 14 // jdk.internal.vm.compiler.word.Pointer gcTotalCollectionsAddress
        11: .line 191
            aload 14 /* gcTotalCollectionsAddress */
            iconst_0
            invokeinterface jdk.internal.vm.compiler.word.Pointer.readLong:(I)J
            l2i
            istore 13 /* gcCycle */
        12: .line 192
            iload 6 /* trace */
            ldc "[%d] G1-Pre Thread %p Object %p\n"
            iload 13 /* gcCycle */
            i2l
            aload 8 /* 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/Word;
            invokevirtual org.graalvm.compiler.word.Word.rawValue:()J
            invokestatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.log:(ZLjava/lang/String;JJJ)V
        13: .line 193
            iload 6 /* trace */
            ldc "[%d] G1-Pre Thread %p Expected Object %p\n"
            iload 13 /* gcCycle */
            i2l
            aload 8 /* thread */
            invokevirtual org.graalvm.compiler.word.Word.rawValue:()J
            aload 9 /* fixedExpectedObject */
            invokestatic org.graalvm.compiler.word.Word.objectToTrackedPointer:(Ljava/lang/Object;)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
        14: .line 194
            iload 6 /* trace */
            ldc "[%d] G1-Pre Thread %p Field %p\n"
            iload 13 /* gcCycle */
            i2l
            aload 8 /* thread */
            invokevirtual org.graalvm.compiler.word.Word.rawValue:()J
            aload 10 /* field */
            invokevirtual org.graalvm.compiler.word.Word.rawValue:()J
            invokestatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.log:(ZLjava/lang/String;JJJ)V
        15: .line 195
            iload 6 /* trace */
            ldc "[%d] G1-Pre Thread %p Marking %d\n"
            iload 13 /* gcCycle */
            i2l
            aload 8 /* thread */
            invokevirtual org.graalvm.compiler.word.Word.rawValue:()J
            iload 12 /* markingValue */
            i2l
            invokestatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.log:(ZLjava/lang/String;JJJ)V
        16: .line 196
            iload 6 /* trace */
            ldc "[%d] G1-Pre Thread %p DoLoad %d\n"
            iload 13 /* gcCycle */
            i2l
            aload 8 /* thread */
            invokevirtual org.graalvm.compiler.word.Word.rawValue:()J
            iload 3 /* doLoad */
            ifeq 17
            lconst_1
            goto 18
      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.hotspot.replacements.WriteBarrierSnippets$Counters org.graalvm.compiler.word.Word java.lang.Object org.graalvm.compiler.word.Word jdk.internal.vm.compiler.word.Pointer int int jdk.internal.vm.compiler.word.Pointer
      StackMap stack: int java.lang.String long long
        17: 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.hotspot.replacements.WriteBarrierSnippets$Counters org.graalvm.compiler.word.Word java.lang.Object org.graalvm.compiler.word.Word jdk.internal.vm.compiler.word.Pointer int int jdk.internal.vm.compiler.word.Pointer
      StackMap stack: int java.lang.String long long long
        18: invokestatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.log:(ZLjava/lang/String;JJJ)V
        end local 14 // jdk.internal.vm.compiler.word.Pointer gcTotalCollectionsAddress
        19: .line 198
      StackMap locals:
      StackMap stack:
            aload 7 /* counters */
            getfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Counters.g1AttemptedPreWriteBarrierCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        20: .line 200
            ldc 0.09999999999999998
            iload 12 /* markingValue */
            ifeq 21
            iconst_1
            goto 22
      StackMap locals:
      StackMap stack: double
        21: 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.hotspot.replacements.WriteBarrierSnippets$Counters org.graalvm.compiler.word.Word java.lang.Object org.graalvm.compiler.word.Word jdk.internal.vm.compiler.word.Pointer int int
      StackMap stack: double int
        22: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 41
        23: .line 203
            ldc 0.6
            iload 3 /* doLoad */
            invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 28
        24: .line 204
            aload 10 /* field */
            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/Word;
            astore 11 /* previousOop */
        25: .line 205
            iload 6 /* trace */
            ifeq 28
        26: .line 206
            iload 6 /* trace */
            ldc "[%d] G1-Pre Thread %p Previous Object %p\n "
            iload 13 /* gcCycle */
            i2l
            aload 8 /* thread */
            invokevirtual org.graalvm.compiler.word.Word.rawValue:()J
            aload 11 /* previousOop */
            invokeinterface jdk.internal.vm.compiler.word.Pointer.rawValue:()J
            invokestatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.log:(ZLjava/lang/String;JJJ)V
        27: .line 207
            aload 11 /* previousOop */
            invokeinterface jdk.internal.vm.compiler.word.Pointer.toObject:()Ljava/lang/Object;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.verifyOop:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
        28: .line 210
      StackMap locals:
      StackMap stack:
            aload 7 /* counters */
            getfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Counters.g1EffectivePreWriteBarrierCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        29: .line 212
            ldc 0.9
            aload 11 /* previousOop */
            iconst_0
            invokeinterface jdk.internal.vm.compiler.word.Pointer.notEqual:(I)Z
            invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 41
        30: .line 213
            aload 7 /* counters */
            getfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Counters.g1ExecutedPreWriteBarrierCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        31: .line 216
            aload 8 /* thread */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfigBase.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 14 /* indexAddress */
        start local 14 // org.graalvm.compiler.word.Word indexAddress
        32: .line 217
            aload 14 /* indexAddress */
            iconst_0
            invokevirtual org.graalvm.compiler.word.Word.readWord:(I)Ljdk/internal/vm/compiler/word/WordBase;
            checkcast org.graalvm.compiler.word.Word
            astore 15 /* indexValue */
        start local 15 // org.graalvm.compiler.word.Word indexValue
        33: .line 218
            ldc 0.9
            aload 15 /* indexValue */
            iconst_0
            invokevirtual org.graalvm.compiler.word.Word.notEqual:(I)Z
            invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 40
        34: .line 219
            aload 8 /* thread */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfigBase.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)Ljdk/internal/vm/compiler/word/WordBase;
            checkcast org.graalvm.compiler.word.Word
            astore 16 /* bufferAddress */
        start local 16 // org.graalvm.compiler.word.Word bufferAddress
        35: .line 220
            aload 15 /* indexValue */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.wordSize:()I
            invokevirtual org.graalvm.compiler.word.Word.subtract:(I)Lorg/graalvm/compiler/word/Word;
            astore 17 /* nextIndex */
        start local 17 // org.graalvm.compiler.word.Word nextIndex
        36: .line 221
            aload 16 /* bufferAddress */
            aload 17 /* nextIndex */
            invokevirtual org.graalvm.compiler.word.Word.add:(Lorg/graalvm/compiler/word/Word;)Lorg/graalvm/compiler/word/Word;
            astore 18 /* logAddress */
        start local 18 // org.graalvm.compiler.word.Word logAddress
        37: .line 223
            aload 18 /* logAddress */
            iconst_0
            aload 11 /* previousOop */
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_LOG_LOCATION:Ljdk/internal/vm/compiler/word/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.writeWord:(ILjdk/internal/vm/compiler/word/WordBase;Ljdk/internal/vm/compiler/word/LocationIdentity;)V
        38: .line 224
            aload 14 /* indexAddress */
            iconst_0
            aload 17 /* nextIndex */
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_INDEX_LOCATION:Ljdk/internal/vm/compiler/word/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.writeWord:(ILjdk/internal/vm/compiler/word/WordBase;Ljdk/internal/vm/compiler/word/LocationIdentity;)V
        end local 18 // org.graalvm.compiler.word.Word logAddress
        end local 17 // org.graalvm.compiler.word.Word nextIndex
        end local 16 // org.graalvm.compiler.word.Word bufferAddress
        39: .line 225
            goto 41
        40: .line 226
      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 11 /* previousOop */
            invokeinterface jdk.internal.vm.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 15 // org.graalvm.compiler.word.Word indexValue
        end local 14 // org.graalvm.compiler.word.Word indexAddress
        41: .line 230
      StackMap locals:
      StackMap stack:
            return
        end local 13 // int gcCycle
        end local 12 // byte markingValue
        end local 11 // jdk.internal.vm.compiler.word.Pointer previousOop
        end local 10 // org.graalvm.compiler.word.Word field
        end local 9 // java.lang.Object fixedExpectedObject
        end local 8 // org.graalvm.compiler.word.Word thread
        end local 7 // org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Counters counters
        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   42     0                    address  Lorg/graalvm/compiler/nodes/memory/address/AddressNode$Address;
            0   42     1                     object  Ljava/lang/Object;
            0   42     2             expectedObject  Ljava/lang/Object;
            0   42     3                     doLoad  Z
            0   42     4                  nullCheck  Z
            0   42     5             threadRegister  Ljdk/vm/ci/code/Register;
            0   42     6                      trace  Z
            0   42     7                   counters  Lorg/graalvm/compiler/hotspot/replacements/WriteBarrierSnippets$Counters;
            3   42     8                     thread  Lorg/graalvm/compiler/word/Word;
            5   42     9        fixedExpectedObject  Ljava/lang/Object;
            6   42    10                      field  Lorg/graalvm/compiler/word/Word;
            7   42    11                previousOop  Ljdk/internal/vm/compiler/word/Pointer;
            8   42    12               markingValue  B
            9   42    13                    gcCycle  I
           11   19    14  gcTotalCollectionsAddress  Ljdk/internal/vm/compiler/word/Pointer;
           32   41    14               indexAddress  Lorg/graalvm/compiler/word/Word;
           33   41    15                 indexValue  Lorg/graalvm/compiler/word/Word;
           35   39    16              bufferAddress  Lorg/graalvm/compiler/word/Word;
           36   39    17                  nextIndex  Lorg/graalvm/compiler/word/Word;
           37   39    18                 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()
      7:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
    MethodParameters:
                Name  Flags
      address         
      object          
      expectedObject  
      doLoad          
      nullCheck       
      threadRegister  
      trace           
      counters        

  public static void g1PostWriteBarrier(org.graalvm.compiler.nodes.memory.address.AddressNode$Address, java.lang.Object, java.lang.Object, boolean, boolean, jdk.vm.ci.code.Register, boolean, org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Counters);
    descriptor: (Lorg/graalvm/compiler/nodes/memory/address/AddressNode$Address;Ljava/lang/Object;Ljava/lang/Object;ZZLjdk/vm/ci/code/Register;ZLorg/graalvm/compiler/hotspot/replacements/WriteBarrierSnippets$Counters;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=8, locals=27, args_size=8
        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 // boolean verifyBarrier
        start local 5 // jdk.vm.ci.code.Register threadRegister
        start local 6 // boolean trace
        start local 7 // org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Counters counters
         0: .line 235
            aload 5 /* threadRegister */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.registerAsWord:(Ljdk/vm/ci/code/Register;)Lorg/graalvm/compiler/word/Word;
            astore 8 /* thread */
        start local 8 // org.graalvm.compiler.word.Word thread
         1: .line 236
            aload 2 /* value */
            invokestatic org.graalvm.compiler.nodes.extended.FixedValueAnchorNode.getObject:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 9 /* fixedValue */
        start local 9 // java.lang.Object fixedValue
         2: .line 237
            aload 1 /* object */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.verifyOop:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 238
            aload 9 /* fixedValue */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.verifyOop:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         4: .line 239
            aload 1 /* object */
            aload 9 /* fixedValue */
            invokestatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.validateObject:(Ljava/lang/Object;Ljava/lang/Object;)V
         5: .line 241
            iload 3 /* usePrecise */
            ifeq 8
         6: .line 242
            aload 0 /* address */
            invokestatic org.graalvm.compiler.word.Word.fromAddress:(Lorg/graalvm/compiler/nodes/memory/address/AddressNode$Address;)Lorg/graalvm/compiler/word/Word;
            astore 10 /* oop */
        start local 10 // jdk.internal.vm.compiler.word.Pointer oop
         7: .line 243
            goto 11
        end local 10 // jdk.internal.vm.compiler.word.Pointer oop
         8: .line 244
      StackMap locals: org.graalvm.compiler.word.Word java.lang.Object
      StackMap stack:
            iload 4 /* verifyBarrier */
            ifeq 10
         9: .line 245
            aload 1 /* object */
            invokestatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.verifyNotArray:(Ljava/lang/Object;)V
        10: .line 247
      StackMap locals:
      StackMap stack:
            aload 1 /* object */
            invokestatic org.graalvm.compiler.word.Word.objectToTrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Word;
            astore 10 /* oop */
        start local 10 // jdk.internal.vm.compiler.word.Pointer oop
        11: .line 249
      StackMap locals: jdk.internal.vm.compiler.word.Pointer
      StackMap stack:
            iconst_0
            istore 11 /* gcCycle */
        start local 11 // int gcCycle
        12: .line 250
            iload 6 /* trace */
            ifeq 17
        13: .line 251
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfigBase.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.gcTotalCollectionsAddress:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)J
            invokestatic jdk.internal.vm.compiler.word.WordFactory.pointer:(J)Ljdk/internal/vm/compiler/word/PointerBase;
            checkcast jdk.internal.vm.compiler.word.Pointer
            astore 12 /* gcTotalCollectionsAddress */
        start local 12 // jdk.internal.vm.compiler.word.Pointer gcTotalCollectionsAddress
        14: .line 252
            aload 12 /* gcTotalCollectionsAddress */
            iconst_0
            invokeinterface jdk.internal.vm.compiler.word.Pointer.readLong:(I)J
            l2i
            istore 11 /* gcCycle */
        15: .line 253
            iload 6 /* trace */
            ldc "[%d] G1-Post Thread: %p Object: %p\n"
            iload 11 /* gcCycle */
            i2l
            aload 8 /* 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/Word;
            invokevirtual org.graalvm.compiler.word.Word.rawValue:()J
            invokestatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.log:(ZLjava/lang/String;JJJ)V
        16: .line 254
            iload 6 /* trace */
            ldc "[%d] G1-Post Thread: %p Field: %p\n"
            iload 11 /* gcCycle */
            i2l
            aload 8 /* thread */
            invokevirtual org.graalvm.compiler.word.Word.rawValue:()J
            aload 10 /* oop */
            invokeinterface jdk.internal.vm.compiler.word.Pointer.rawValue:()J
            invokestatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.log:(ZLjava/lang/String;JJJ)V
        end local 12 // jdk.internal.vm.compiler.word.Pointer gcTotalCollectionsAddress
        17: .line 256
      StackMap locals: int
      StackMap stack:
            aload 9 /* fixedValue */
            invokestatic org.graalvm.compiler.word.Word.objectToTrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Word;
            astore 12 /* writtenValue */
        start local 12 // jdk.internal.vm.compiler.word.Pointer writtenValue
        18: .line 259
            invokestatic org.graalvm.compiler.hotspot.nodes.GraalHotSpotVMConfigNode.logOfHeapRegionGrainBytes:()I
            istore 13 /* logOfHeapRegionGrainBytes */
        start local 13 // int logOfHeapRegionGrainBytes
        19: .line 260
            aload 10 /* oop */
            aload 12 /* writtenValue */
            invokeinterface jdk.internal.vm.compiler.word.Pointer.xor:(Ljdk/internal/vm/compiler/word/UnsignedWord;)Ljdk/internal/vm/compiler/word/UnsignedWord;
            iload 13 /* logOfHeapRegionGrainBytes */
            invokeinterface jdk.internal.vm.compiler.word.UnsignedWord.unsignedShiftRight:(I)Ljdk/internal/vm/compiler/word/UnsignedWord;
            astore 14 /* xorResult */
        start local 14 // jdk.internal.vm.compiler.word.UnsignedWord xorResult
        20: .line 264
            aload 10 /* oop */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfigBase.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.cardTableShift:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            invokeinterface jdk.internal.vm.compiler.word.Pointer.unsignedShiftRight:(I)Ljdk/internal/vm/compiler/word/UnsignedWord;
            astore 15 /* cardBase */
        start local 15 // jdk.internal.vm.compiler.word.UnsignedWord cardBase
        21: .line 265
            invokestatic org.graalvm.compiler.hotspot.nodes.GraalHotSpotVMConfigNode.cardTableAddress:()J
            lstore 16 /* startAddress */
        start local 16 // long startAddress
        22: .line 266
            iconst_0
            istore 18 /* displacement */
        start local 18 // int displacement
        23: .line 267
            lload 16 /* startAddress */
            l2i
            i2l
            lload 16 /* startAddress */
            lcmp
            ifne 26
            invokestatic org.graalvm.compiler.hotspot.nodes.GraalHotSpotVMConfigNode.isCardTableAddressConstant:()Z
            ifeq 26
        24: .line 268
            lload 16 /* startAddress */
            l2i
            istore 18 /* displacement */
        25: .line 269
            goto 27
        26: .line 270
      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.hotspot.replacements.WriteBarrierSnippets$Counters org.graalvm.compiler.word.Word java.lang.Object jdk.internal.vm.compiler.word.Pointer int jdk.internal.vm.compiler.word.Pointer int jdk.internal.vm.compiler.word.UnsignedWord jdk.internal.vm.compiler.word.UnsignedWord long int
      StackMap stack:
            aload 15 /* cardBase */
            lload 16 /* startAddress */
            invokestatic jdk.internal.vm.compiler.word.WordFactory.unsigned:(J)Ljdk/internal/vm/compiler/word/UnsignedWord;
            invokeinterface jdk.internal.vm.compiler.word.UnsignedWord.add:(Ljdk/internal/vm/compiler/word/UnsignedWord;)Ljdk/internal/vm/compiler/word/UnsignedWord;
            astore 15 /* cardBase */
        27: .line 272
      StackMap locals:
      StackMap stack:
            aload 15 /* cardBase */
            iload 18 /* displacement */
            invokeinterface jdk.internal.vm.compiler.word.UnsignedWord.add:(I)Ljdk/internal/vm/compiler/word/UnsignedWord;
            checkcast org.graalvm.compiler.word.Word
            astore 19 /* cardAddress */
        start local 19 // org.graalvm.compiler.word.Word cardAddress
        28: .line 274
            aload 7 /* counters */
            getfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Counters.g1AttemptedPostWriteBarrierCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        29: .line 275
            ldc 0.9
            aload 14 /* xorResult */
            iconst_0
            invokeinterface jdk.internal.vm.compiler.word.UnsignedWord.notEqual:(I)Z
            invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 55
        30: .line 276
            aload 7 /* counters */
            getfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Counters.g1EffectiveAfterXORPostWriteBarrierCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        31: .line 279
            ldc 0.9
            aload 12 /* writtenValue */
            iconst_0
            invokeinterface jdk.internal.vm.compiler.word.Pointer.notEqual:(I)Z
            invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 55
        32: .line 280
            aload 19 /* cardAddress */
            iconst_0
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_CARD_LOCATION:Ljdk/internal/vm/compiler/word/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.readByte:(ILjdk/internal/vm/compiler/word/LocationIdentity;)B
            istore 20 /* cardByte */
        start local 20 // byte cardByte
        33: .line 281
            aload 7 /* counters */
            getfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Counters.g1EffectiveAfterNullPostWriteBarrierCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        34: .line 284
            ldc 0.09999999999999998
            iload 20 /* cardByte */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfigBase.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.g1YoungCardValue:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)B
            if_icmpeq 35
            iconst_1
            goto 36
      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.hotspot.replacements.WriteBarrierSnippets$Counters org.graalvm.compiler.word.Word java.lang.Object jdk.internal.vm.compiler.word.Pointer int jdk.internal.vm.compiler.word.Pointer int jdk.internal.vm.compiler.word.UnsignedWord jdk.internal.vm.compiler.word.UnsignedWord long int org.graalvm.compiler.word.Word int
      StackMap stack: double
        35: 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.hotspot.replacements.WriteBarrierSnippets$Counters org.graalvm.compiler.word.Word java.lang.Object jdk.internal.vm.compiler.word.Pointer int jdk.internal.vm.compiler.word.Pointer int jdk.internal.vm.compiler.word.UnsignedWord jdk.internal.vm.compiler.word.UnsignedWord long int org.graalvm.compiler.word.Word int
      StackMap stack: double int
        36: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 55
        37: .line 285
            iconst_4
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_CARD_LOCATION:Ljdk/internal/vm/compiler/word/LocationIdentity;
            invokestatic org.graalvm.compiler.nodes.extended.MembarNode.memoryBarrier:(ILjdk/internal/vm/compiler/word/LocationIdentity;)V
        38: .line 286
            aload 19 /* cardAddress */
            iconst_0
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_CARD_LOCATION:Ljdk/internal/vm/compiler/word/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.readByte:(ILjdk/internal/vm/compiler/word/LocationIdentity;)B
            istore 21 /* cardByteReload */
        start local 21 // byte cardByteReload
        39: .line 287
            ldc 0.09999999999999998
            iload 21 /* cardByteReload */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfigBase.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.dirtyCardValue:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)B
            if_icmpeq 40
            iconst_1
            goto 41
      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.hotspot.replacements.WriteBarrierSnippets$Counters org.graalvm.compiler.word.Word java.lang.Object jdk.internal.vm.compiler.word.Pointer int jdk.internal.vm.compiler.word.Pointer int jdk.internal.vm.compiler.word.UnsignedWord jdk.internal.vm.compiler.word.UnsignedWord long int org.graalvm.compiler.word.Word int int
      StackMap stack: double
        40: 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.hotspot.replacements.WriteBarrierSnippets$Counters org.graalvm.compiler.word.Word java.lang.Object jdk.internal.vm.compiler.word.Pointer int jdk.internal.vm.compiler.word.Pointer int jdk.internal.vm.compiler.word.UnsignedWord jdk.internal.vm.compiler.word.UnsignedWord long int org.graalvm.compiler.word.Word int int
      StackMap stack: double int
        41: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 55
        42: .line 288
            iload 6 /* trace */
            ldc "[%d] G1-Post Thread: %p Card: %p \n"
            iload 11 /* gcCycle */
            i2l
            aload 8 /* thread */
            invokevirtual org.graalvm.compiler.word.Word.rawValue:()J
            iload 20 /* cardByte */
            invokestatic jdk.internal.vm.compiler.word.WordFactory.unsigned:(I)Ljdk/internal/vm/compiler/word/UnsignedWord;
            invokeinterface jdk.internal.vm.compiler.word.UnsignedWord.rawValue:()J
            invokestatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.log:(ZLjava/lang/String;JJJ)V
        43: .line 289
            aload 19 /* cardAddress */
            iconst_0
            iconst_0
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_CARD_LOCATION:Ljdk/internal/vm/compiler/word/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.writeByte:(IBLjdk/internal/vm/compiler/word/LocationIdentity;)V
        44: .line 290
            aload 7 /* counters */
            getfield org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Counters.g1ExecutedPostWriteBarrierCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        45: .line 294
            aload 8 /* thread */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfigBase.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 22 /* indexAddress */
        start local 22 // org.graalvm.compiler.word.Word indexAddress
        46: .line 295
            aload 8 /* thread */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfigBase.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)Ljdk/internal/vm/compiler/word/WordBase;
            checkcast org.graalvm.compiler.word.Word
            astore 23 /* indexValue */
        start local 23 // org.graalvm.compiler.word.Word indexValue
        47: .line 296
            ldc 0.9
            aload 23 /* indexValue */
            iconst_0
            invokevirtual org.graalvm.compiler.word.Word.notEqual:(I)Z
            invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 54
        48: .line 297
            aload 8 /* thread */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfigBase.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)Ljdk/internal/vm/compiler/word/WordBase;
            checkcast org.graalvm.compiler.word.Word
            astore 24 /* bufferAddress */
        start local 24 // org.graalvm.compiler.word.Word bufferAddress
        49: .line 298
            aload 23 /* indexValue */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.wordSize:()I
            invokevirtual org.graalvm.compiler.word.Word.subtract:(I)Lorg/graalvm/compiler/word/Word;
            astore 25 /* nextIndex */
        start local 25 // org.graalvm.compiler.word.Word nextIndex
        50: .line 299
            aload 24 /* bufferAddress */
            aload 25 /* nextIndex */
            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
        51: .line 302
            aload 26 /* logAddress */
            iconst_0
            aload 19 /* cardAddress */
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_LOG_LOCATION:Ljdk/internal/vm/compiler/word/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.writeWord:(ILjdk/internal/vm/compiler/word/WordBase;Ljdk/internal/vm/compiler/word/LocationIdentity;)V
        52: .line 303
            aload 22 /* indexAddress */
            iconst_0
            aload 25 /* nextIndex */
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_INDEX_LOCATION:Ljdk/internal/vm/compiler/word/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.writeWord:(ILjdk/internal/vm/compiler/word/WordBase;Ljdk/internal/vm/compiler/word/LocationIdentity;)V
        end local 26 // org.graalvm.compiler.word.Word logAddress
        end local 25 // org.graalvm.compiler.word.Word nextIndex
        end local 24 // org.graalvm.compiler.word.Word bufferAddress
        53: .line 304
            goto 55
        54: .line 305
      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 19 /* cardAddress */
            invokestatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.g1PostBarrierStub:(Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;Lorg/graalvm/compiler/word/Word;)V
        end local 23 // org.graalvm.compiler.word.Word indexValue
        end local 22 // org.graalvm.compiler.word.Word indexAddress
        end local 21 // byte cardByteReload
        end local 20 // byte cardByte
        55: .line 311
      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.hotspot.replacements.WriteBarrierSnippets$Counters org.graalvm.compiler.word.Word java.lang.Object jdk.internal.vm.compiler.word.Pointer int jdk.internal.vm.compiler.word.Pointer int jdk.internal.vm.compiler.word.UnsignedWord jdk.internal.vm.compiler.word.UnsignedWord long int org.graalvm.compiler.word.Word
      StackMap stack:
            return
        end local 19 // org.graalvm.compiler.word.Word cardAddress
        end local 18 // int displacement
        end local 16 // long startAddress
        end local 15 // jdk.internal.vm.compiler.word.UnsignedWord cardBase
        end local 14 // jdk.internal.vm.compiler.word.UnsignedWord xorResult
        end local 13 // int logOfHeapRegionGrainBytes
        end local 12 // jdk.internal.vm.compiler.word.Pointer writtenValue
        end local 11 // int gcCycle
        end local 10 // jdk.internal.vm.compiler.word.Pointer oop
        end local 9 // java.lang.Object fixedValue
        end local 8 // org.graalvm.compiler.word.Word thread
        end local 7 // org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Counters counters
        end local 6 // boolean trace
        end local 5 // jdk.vm.ci.code.Register threadRegister
        end local 4 // boolean verifyBarrier
        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   56     0                    address  Lorg/graalvm/compiler/nodes/memory/address/AddressNode$Address;
            0   56     1                     object  Ljava/lang/Object;
            0   56     2                      value  Ljava/lang/Object;
            0   56     3                 usePrecise  Z
            0   56     4              verifyBarrier  Z
            0   56     5             threadRegister  Ljdk/vm/ci/code/Register;
            0   56     6                      trace  Z
            0   56     7                   counters  Lorg/graalvm/compiler/hotspot/replacements/WriteBarrierSnippets$Counters;
            1   56     8                     thread  Lorg/graalvm/compiler/word/Word;
            2   56     9                 fixedValue  Ljava/lang/Object;
            7    8    10                        oop  Ljdk/internal/vm/compiler/word/Pointer;
           11   56    10                        oop  Ljdk/internal/vm/compiler/word/Pointer;
           12   56    11                    gcCycle  I
           14   17    12  gcTotalCollectionsAddress  Ljdk/internal/vm/compiler/word/Pointer;
           18   56    12               writtenValue  Ljdk/internal/vm/compiler/word/Pointer;
           19   56    13  logOfHeapRegionGrainBytes  I
           20   56    14                  xorResult  Ljdk/internal/vm/compiler/word/UnsignedWord;
           21   56    15                   cardBase  Ljdk/internal/vm/compiler/word/UnsignedWord;
           22   56    16               startAddress  J
           23   56    18               displacement  I
           28   56    19                cardAddress  Lorg/graalvm/compiler/word/Word;
           33   55    20                   cardByte  B
           39   55    21             cardByteReload  B
           46   55    22               indexAddress  Lorg/graalvm/compiler/word/Word;
           47   55    23                 indexValue  Lorg/graalvm/compiler/word/Word;
           49   53    24              bufferAddress  Lorg/graalvm/compiler/word/Word;
           50   53    25                  nextIndex  Lorg/graalvm/compiler/word/Word;
           51   53    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()
      4:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      5:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      6:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      7:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
    MethodParameters:
                Name  Flags
      address         
      object          
      value           
      usePrecise      
      verifyBarrier   
      threadRegister  
      trace           
      counters        

  private static void verifyNotArray(java.lang.Object);
    descriptor: (Ljava/lang/Object;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.Object object
         0: .line 314
            aload 0 /* object */
            ifnull 4
         1: .line 316
            iconst_0
            aload 0 /* object */
            ldc Ljava/lang/Object;
            invokestatic org.graalvm.compiler.nodes.PiNode.piCastNonNull:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.isArray:()Z
            ifeq 2
            iconst_0
            goto 3
      StackMap locals:
      StackMap stack: int
         2: iconst_1
      StackMap locals: java.lang.Object
      StackMap stack: int int
         3: ldc "imprecise card mark used with array"
            invokestatic org.graalvm.compiler.replacements.nodes.AssertionNode.assertion:(ZZLjava/lang/String;)V
         4: .line 318
      StackMap locals:
      StackMap stack:
            return
        end local 0 // java.lang.Object object
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0  object  Ljava/lang/Object;
    MethodParameters:
        Name  Flags
      object  

  public static void g1ArrayRangePreWriteBarrier(org.graalvm.compiler.nodes.memory.address.AddressNode$Address, int, int, jdk.vm.ci.code.Register);
    descriptor: (Lorg/graalvm/compiler/nodes/memory/address/AddressNode$Address;IILjdk/vm/ci/code/Register;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=17, args_size=4
        start local 0 // org.graalvm.compiler.nodes.memory.address.AddressNode$Address address
        start local 1 // int length
        start local 2 // int elementStride
        start local 3 // jdk.vm.ci.code.Register threadRegister
         0: .line 322
            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 323
            aload 4 /* thread */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfigBase.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 325
            iload 5 /* markingValue */
            ifeq 3
            iload 1 /* length */
            ifne 4
         3: .line 326
      StackMap locals: org.graalvm.compiler.word.Word int
      StackMap stack:
            return
         4: .line 328
      StackMap locals:
      StackMap stack:
            aload 4 /* thread */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfigBase.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)Ljdk/internal/vm/compiler/word/WordBase;
            checkcast org.graalvm.compiler.word.Word
            astore 6 /* bufferAddress */
        start local 6 // org.graalvm.compiler.word.Word bufferAddress
         5: .line 329
            aload 4 /* thread */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfigBase.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 7 /* indexAddress */
        start local 7 // org.graalvm.compiler.word.Word indexAddress
         6: .line 330
            aload 7 /* indexAddress */
            iconst_0
            invokevirtual org.graalvm.compiler.word.Word.readWord:(I)Ljdk/internal/vm/compiler/word/WordBase;
            invokeinterface jdk.internal.vm.compiler.word.WordBase.rawValue:()J
            lstore 8 /* indexValue */
        start local 8 // long indexValue
         7: .line 331
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfigBase.INJECTED_METAACCESS:Ljdk/vm/ci/meta/MetaAccessProvider;
            getstatic jdk.vm.ci.meta.JavaKind.Object:Ljdk/vm/ci/meta/JavaKind;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.arrayIndexScale:(Ljdk/vm/ci/meta/MetaAccessProvider;Ljdk/vm/ci/meta/JavaKind;)I
            istore 10 /* scale */
        start local 10 // int scale
         8: .line 332
            aload 0 /* address */
            iload 1 /* length */
            iload 2 /* elementStride */
            invokestatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.getPointerToFirstArrayElement:(Lorg/graalvm/compiler/nodes/memory/address/AddressNode$Address;II)J
            lstore 11 /* start */
        start local 11 // long start
         9: .line 334
            iconst_0
            istore 13 /* i */
        start local 13 // int i
        10: goto 23
        11: .line 335
      StackMap locals: org.graalvm.compiler.nodes.memory.address.AddressNode$Address int int jdk.vm.ci.code.Register org.graalvm.compiler.word.Word int org.graalvm.compiler.word.Word org.graalvm.compiler.word.Word long int long int
      StackMap stack:
            lload 11 /* start */
            iload 13 /* i */
            iload 10 /* scale */
            imul
            i2l
            ladd
            invokestatic jdk.internal.vm.compiler.word.WordFactory.pointer:(J)Ljdk/internal/vm/compiler/word/PointerBase;
            checkcast org.graalvm.compiler.word.Word
            astore 14 /* arrElemPtr */
        start local 14 // org.graalvm.compiler.word.Word arrElemPtr
        12: .line 336
            aload 14 /* arrElemPtr */
            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/Word;
            astore 15 /* oop */
        start local 15 // jdk.internal.vm.compiler.word.Pointer oop
        13: .line 337
            aload 15 /* oop */
            invokeinterface jdk.internal.vm.compiler.word.Pointer.toObject:()Ljava/lang/Object;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.verifyOop:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
        14: .line 338
            aload 15 /* oop */
            iconst_0
            invokeinterface jdk.internal.vm.compiler.word.Pointer.notEqual:(I)Z
            ifeq 22
        15: .line 339
            lload 8 /* indexValue */
            lconst_0
            lcmp
            ifeq 21
        16: .line 340
            lload 8 /* indexValue */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.wordSize:()I
            i2l
            lsub
            lstore 8 /* indexValue */
        17: .line 341
            aload 6 /* bufferAddress */
            lload 8 /* indexValue */
            invokestatic jdk.internal.vm.compiler.word.WordFactory.unsigned:(J)Ljdk/internal/vm/compiler/word/UnsignedWord;
            checkcast org.graalvm.compiler.word.Word
            invokevirtual org.graalvm.compiler.word.Word.add:(Lorg/graalvm/compiler/word/Word;)Lorg/graalvm/compiler/word/Word;
            astore 16 /* logAddress */
        start local 16 // org.graalvm.compiler.word.Word logAddress
        18: .line 343
            aload 16 /* logAddress */
            iconst_0
            aload 15 /* oop */
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_LOG_LOCATION:Ljdk/internal/vm/compiler/word/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.writeWord:(ILjdk/internal/vm/compiler/word/WordBase;Ljdk/internal/vm/compiler/word/LocationIdentity;)V
        19: .line 344
            aload 7 /* indexAddress */
            iconst_0
            lload 8 /* indexValue */
            invokestatic jdk.internal.vm.compiler.word.WordFactory.unsigned:(J)Ljdk/internal/vm/compiler/word/UnsignedWord;
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_INDEX_LOCATION:Ljdk/internal/vm/compiler/word/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.writeWord:(ILjdk/internal/vm/compiler/word/WordBase;Ljdk/internal/vm/compiler/word/LocationIdentity;)V
        end local 16 // org.graalvm.compiler.word.Word logAddress
        20: .line 345
            goto 22
        21: .line 346
      StackMap locals: org.graalvm.compiler.word.Word jdk.internal.vm.compiler.word.Pointer
      StackMap stack:
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.G1WBPRECALL:Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
            aload 15 /* oop */
            invokeinterface jdk.internal.vm.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 15 // jdk.internal.vm.compiler.word.Pointer oop
        end local 14 // org.graalvm.compiler.word.Word arrElemPtr
        22: .line 334
      StackMap locals:
      StackMap stack:
            iinc 13 /* i */ 1
      StackMap locals:
      StackMap stack:
        23: iload 13 /* i */
            iload 1 /* length */
            if_icmplt 11
        end local 13 // int i
        24: .line 350
            return
        end local 11 // long start
        end local 10 // int scale
        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 // byte markingValue
        end local 4 // org.graalvm.compiler.word.Word thread
        end local 3 // jdk.vm.ci.code.Register threadRegister
        end local 2 // int elementStride
        end local 1 // int length
        end local 0 // org.graalvm.compiler.nodes.memory.address.AddressNode$Address address
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   25     0         address  Lorg/graalvm/compiler/nodes/memory/address/AddressNode$Address;
            0   25     1          length  I
            0   25     2   elementStride  I
            0   25     3  threadRegister  Ljdk/vm/ci/code/Register;
            1   25     4          thread  Lorg/graalvm/compiler/word/Word;
            2   25     5    markingValue  B
            5   25     6   bufferAddress  Lorg/graalvm/compiler/word/Word;
            6   25     7    indexAddress  Lorg/graalvm/compiler/word/Word;
            7   25     8      indexValue  J
            8   25    10           scale  I
            9   25    11           start  J
           10   24    13               i  I
           12   22    14      arrElemPtr  Lorg/graalvm/compiler/word/Word;
           13   22    15             oop  Ljdk/internal/vm/compiler/word/Pointer;
           18   20    16      logAddress  Lorg/graalvm/compiler/word/Word;
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.Snippet()
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      3:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
    MethodParameters:
                Name  Flags
      address         
      length          
      elementStride   
      threadRegister  

  public static void g1ArrayRangePostWriteBarrier(org.graalvm.compiler.nodes.memory.address.AddressNode$Address, int, int, jdk.vm.ci.code.Register);
    descriptor: (Lorg/graalvm/compiler/nodes/memory/address/AddressNode$Address;IILjdk/vm/ci/code/Register;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=22, args_size=4
        start local 0 // org.graalvm.compiler.nodes.memory.address.AddressNode$Address address
        start local 1 // int length
        start local 2 // int elementStride
        start local 3 // jdk.vm.ci.code.Register threadRegister
         0: .line 354
            iload 1 /* length */
            ifne 2
         1: .line 355
            return
         2: .line 357
      StackMap locals:
      StackMap stack:
            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
         3: .line 358
            aload 4 /* thread */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfigBase.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)Ljdk/internal/vm/compiler/word/WordBase;
            checkcast org.graalvm.compiler.word.Word
            astore 5 /* bufferAddress */
        start local 5 // org.graalvm.compiler.word.Word bufferAddress
         4: .line 359
            aload 4 /* thread */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfigBase.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 6 /* indexAddress */
        start local 6 // org.graalvm.compiler.word.Word indexAddress
         5: .line 360
            aload 4 /* thread */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfigBase.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)Ljdk/internal/vm/compiler/word/WordBase;
            invokeinterface jdk.internal.vm.compiler.word.WordBase.rawValue:()J
            lstore 7 /* indexValue */
        start local 7 // long indexValue
         6: .line 362
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfigBase.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.cardTableShift:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            istore 9 /* cardShift */
        start local 9 // int cardShift
         7: .line 363
            invokestatic org.graalvm.compiler.hotspot.nodes.GraalHotSpotVMConfigNode.cardTableAddress:()J
            lstore 10 /* cardStart */
        start local 10 // long cardStart
         8: .line 364
            aload 0 /* address */
            iload 1 /* length */
            iload 2 /* elementStride */
            invokestatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.getPointerToFirstArrayElement:(Lorg/graalvm/compiler/nodes/memory/address/AddressNode$Address;II)J
            iload 9 /* cardShift */
            lushr
            lstore 12 /* start */
        start local 12 // long start
         9: .line 365
            aload 0 /* address */
            iload 1 /* length */
            iload 2 /* elementStride */
            invokestatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.getPointerToLastArrayElement:(Lorg/graalvm/compiler/nodes/memory/address/AddressNode$Address;II)J
            iload 9 /* cardShift */
            lushr
            lstore 14 /* end */
        start local 14 // long end
        10: .line 366
            lload 14 /* end */
            lload 12 /* start */
            lsub
            lconst_1
            ladd
            lstore 16 /* count */
        start local 16 // long count
        11: .line 368
            goto 30
        12: .line 369
      StackMap locals: org.graalvm.compiler.nodes.memory.address.AddressNode$Address int int jdk.vm.ci.code.Register org.graalvm.compiler.word.Word org.graalvm.compiler.word.Word org.graalvm.compiler.word.Word long int long long long long
      StackMap stack:
            lload 12 /* start */
            lload 10 /* cardStart */
            ladd
            lload 16 /* count */
            ladd
            invokestatic jdk.internal.vm.compiler.word.WordFactory.unsigned:(J)Ljdk/internal/vm/compiler/word/UnsignedWord;
            checkcast org.graalvm.compiler.word.Word
            astore 18 /* cardAddress */
        start local 18 // org.graalvm.compiler.word.Word cardAddress
        13: .line 370
            aload 18 /* cardAddress */
            iconst_0
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_CARD_LOCATION:Ljdk/internal/vm/compiler/word/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.readByte:(ILjdk/internal/vm/compiler/word/LocationIdentity;)B
            istore 19 /* cardByte */
        start local 19 // byte cardByte
        14: .line 372
            ldc 0.09999999999999998
            iload 19 /* cardByte */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfigBase.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.g1YoungCardValue:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)B
            if_icmpeq 15
            iconst_1
            goto 16
      StackMap locals: org.graalvm.compiler.nodes.memory.address.AddressNode$Address int int jdk.vm.ci.code.Register org.graalvm.compiler.word.Word org.graalvm.compiler.word.Word org.graalvm.compiler.word.Word long int long long long long org.graalvm.compiler.word.Word int
      StackMap stack: double
        15: iconst_0
      StackMap locals: org.graalvm.compiler.nodes.memory.address.AddressNode$Address int int jdk.vm.ci.code.Register org.graalvm.compiler.word.Word org.graalvm.compiler.word.Word org.graalvm.compiler.word.Word long int long long long long org.graalvm.compiler.word.Word int
      StackMap stack: double int
        16: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 30
        17: .line 373
            iconst_4
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_CARD_LOCATION:Ljdk/internal/vm/compiler/word/LocationIdentity;
            invokestatic org.graalvm.compiler.nodes.extended.MembarNode.memoryBarrier:(ILjdk/internal/vm/compiler/word/LocationIdentity;)V
        18: .line 374
            aload 18 /* cardAddress */
            iconst_0
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_CARD_LOCATION:Ljdk/internal/vm/compiler/word/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.readByte:(ILjdk/internal/vm/compiler/word/LocationIdentity;)B
            istore 20 /* cardByteReload */
        start local 20 // byte cardByteReload
        19: .line 375
            ldc 0.09999999999999998
            iload 20 /* cardByteReload */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfigBase.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.dirtyCardValue:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)B
            if_icmpeq 20
            iconst_1
            goto 21
      StackMap locals: org.graalvm.compiler.nodes.memory.address.AddressNode$Address int int jdk.vm.ci.code.Register org.graalvm.compiler.word.Word org.graalvm.compiler.word.Word org.graalvm.compiler.word.Word long int long long long long org.graalvm.compiler.word.Word int int
      StackMap stack: double
        20: iconst_0
      StackMap locals: org.graalvm.compiler.nodes.memory.address.AddressNode$Address int int jdk.vm.ci.code.Register org.graalvm.compiler.word.Word org.graalvm.compiler.word.Word org.graalvm.compiler.word.Word long int long long long long org.graalvm.compiler.word.Word int int
      StackMap stack: double int
        21: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 30
        22: .line 376
            aload 18 /* cardAddress */
            iconst_0
            iconst_0
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_CARD_LOCATION:Ljdk/internal/vm/compiler/word/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.writeByte:(IBLjdk/internal/vm/compiler/word/LocationIdentity;)V
        23: .line 379
            lload 7 /* indexValue */
            lconst_0
            lcmp
            ifeq 29
        24: .line 380
            lload 7 /* indexValue */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.wordSize:()I
            i2l
            lsub
            lstore 7 /* indexValue */
        25: .line 381
            aload 5 /* bufferAddress */
            lload 7 /* indexValue */
            invokestatic jdk.internal.vm.compiler.word.WordFactory.unsigned:(J)Ljdk/internal/vm/compiler/word/UnsignedWord;
            checkcast org.graalvm.compiler.word.Word
            invokevirtual org.graalvm.compiler.word.Word.add:(Lorg/graalvm/compiler/word/Word;)Lorg/graalvm/compiler/word/Word;
            astore 21 /* logAddress */
        start local 21 // org.graalvm.compiler.word.Word logAddress
        26: .line 384
            aload 21 /* logAddress */
            iconst_0
            aload 18 /* cardAddress */
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_LOG_LOCATION:Ljdk/internal/vm/compiler/word/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.writeWord:(ILjdk/internal/vm/compiler/word/WordBase;Ljdk/internal/vm/compiler/word/LocationIdentity;)V
        27: .line 385
            aload 6 /* indexAddress */
            iconst_0
            lload 7 /* indexValue */
            invokestatic jdk.internal.vm.compiler.word.WordFactory.unsigned:(J)Ljdk/internal/vm/compiler/word/UnsignedWord;
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.GC_INDEX_LOCATION:Ljdk/internal/vm/compiler/word/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.writeWord:(ILjdk/internal/vm/compiler/word/WordBase;Ljdk/internal/vm/compiler/word/LocationIdentity;)V
        end local 21 // org.graalvm.compiler.word.Word logAddress
        28: .line 386
            goto 30
        29: .line 387
      StackMap locals:
      StackMap stack:
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.G1WBPOSTCALL:Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
            aload 18 /* cardAddress */
            invokestatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.g1PostBarrierStub:(Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;Lorg/graalvm/compiler/word/Word;)V
        end local 20 // byte cardByteReload
        end local 19 // byte cardByte
        end local 18 // org.graalvm.compiler.word.Word cardAddress
        30: .line 368
      StackMap locals:
      StackMap stack:
            lload 16 /* count */
            dup2
            lconst_1
            lsub
            lstore 16 /* count */
            lconst_0
            lcmp
            ifgt 12
        31: .line 392
            return
        end local 16 // long count
        end local 14 // long end
        end local 12 // long start
        end local 10 // long cardStart
        end local 9 // int cardShift
        end local 7 // long indexValue
        end local 6 // org.graalvm.compiler.word.Word indexAddress
        end local 5 // org.graalvm.compiler.word.Word bufferAddress
        end local 4 // org.graalvm.compiler.word.Word thread
        end local 3 // jdk.vm.ci.code.Register threadRegister
        end local 2 // int elementStride
        end local 1 // int length
        end local 0 // org.graalvm.compiler.nodes.memory.address.AddressNode$Address address
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   32     0         address  Lorg/graalvm/compiler/nodes/memory/address/AddressNode$Address;
            0   32     1          length  I
            0   32     2   elementStride  I
            0   32     3  threadRegister  Ljdk/vm/ci/code/Register;
            3   32     4          thread  Lorg/graalvm/compiler/word/Word;
            4   32     5   bufferAddress  Lorg/graalvm/compiler/word/Word;
            5   32     6    indexAddress  Lorg/graalvm/compiler/word/Word;
            6   32     7      indexValue  J
            7   32     9       cardShift  I
            8   32    10       cardStart  J
            9   32    12           start  J
           10   32    14             end  J
           11   32    16           count  J
           13   30    18     cardAddress  Lorg/graalvm/compiler/word/Word;
           14   30    19        cardByte  B
           19   30    20  cardByteReload  B
           26   28    21      logAddress  Lorg/graalvm/compiler/word/Word;
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.Snippet()
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      3:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
    MethodParameters:
                Name  Flags
      address         
      length          
      elementStride   
      threadRegister  

  private static long getPointerToFirstArrayElement(org.graalvm.compiler.nodes.memory.address.AddressNode$Address, int, int);
    descriptor: (Lorg/graalvm/compiler/nodes/memory/address/AddressNode$Address;II)J
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // org.graalvm.compiler.nodes.memory.address.AddressNode$Address address
        start local 1 // int length
        start local 2 // int elementStride
         0: .line 395
            aload 0 /* address */
            invokestatic org.graalvm.compiler.word.Word.fromAddress:(Lorg/graalvm/compiler/nodes/memory/address/AddressNode$Address;)Lorg/graalvm/compiler/word/Word;
            invokevirtual org.graalvm.compiler.word.Word.rawValue:()J
            lstore 3 /* result */
        start local 3 // long result
         1: .line 396
            iload 2 /* elementStride */
            ifge 3
         2: .line 398
            lload 3 /* result */
            iload 2 /* elementStride */
            iload 1 /* length */
            imul
            i2l
            ladd
            lstore 3 /* result */
         3: .line 400
      StackMap locals: long
      StackMap stack:
            lload 3 /* result */
            lreturn
        end local 3 // long result
        end local 2 // int elementStride
        end local 1 // int length
        end local 0 // org.graalvm.compiler.nodes.memory.address.AddressNode$Address address
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0        address  Lorg/graalvm/compiler/nodes/memory/address/AddressNode$Address;
            0    4     1         length  I
            0    4     2  elementStride  I
            1    4     3         result  J
    MethodParameters:
               Name  Flags
      address        
      length         
      elementStride  

  private static long getPointerToLastArrayElement(org.graalvm.compiler.nodes.memory.address.AddressNode$Address, int, int);
    descriptor: (Lorg/graalvm/compiler/nodes/memory/address/AddressNode$Address;II)J
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // org.graalvm.compiler.nodes.memory.address.AddressNode$Address address
        start local 1 // int length
        start local 2 // int elementStride
         0: .line 404
            aload 0 /* address */
            invokestatic org.graalvm.compiler.word.Word.fromAddress:(Lorg/graalvm/compiler/nodes/memory/address/AddressNode$Address;)Lorg/graalvm/compiler/word/Word;
            invokevirtual org.graalvm.compiler.word.Word.rawValue:()J
            lstore 3 /* result */
        start local 3 // long result
         1: .line 405
            iload 2 /* elementStride */
            ifge 4
         2: .line 407
            lload 3 /* result */
            iload 2 /* elementStride */
            i2l
            ladd
            lstore 3 /* result */
         3: .line 408
            goto 5
         4: .line 409
      StackMap locals: long
      StackMap stack:
            lload 3 /* result */
            iload 1 /* length */
            iconst_1
            isub
            iload 2 /* elementStride */
            imul
            i2l
            ladd
            lstore 3 /* result */
         5: .line 411
      StackMap locals:
      StackMap stack:
            lload 3 /* result */
            lreturn
        end local 3 // long result
        end local 2 // int elementStride
        end local 1 // int length
        end local 0 // org.graalvm.compiler.nodes.memory.address.AddressNode$Address address
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0        address  Lorg/graalvm/compiler/nodes/memory/address/AddressNode$Address;
            0    6     1         length  I
            0    6     2  elementStride  I
            1    6     3         result  J
    MethodParameters:
               Name  Flags
      address        
      length         
      elementStride  

  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 574
            iload 0 /* enabled */
            ifeq 2
         1: .line 575
            aload 1 /* format */
            lload 2 /* value */
            invokestatic org.graalvm.compiler.replacements.Log.printf:(Ljava/lang/String;J)V
         2: .line 577
      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 580
            iload 0 /* enabled */
            ifeq 2
         1: .line 581
            aload 1 /* format */
            lload 2 /* value1 */
            lload 4 /* value2 */
            invokestatic org.graalvm.compiler.replacements.Log.printf:(Ljava/lang/String;JJ)V
         2: .line 583
      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 586
            iload 0 /* enabled */
            ifeq 2
         1: .line 587
            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 589
      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(org.graalvm.compiler.nodes.StructuredGraph);
    descriptor: (Lorg/graalvm/compiler/nodes/StructuredGraph;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.nodes.StructuredGraph graph
         0: .line 592
            getstatic org.graalvm.compiler.core.common.GraalOptions.GCDebugStartCycle:Lorg/graalvm/compiler/options/OptionKey;
            aload 0 /* graph */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getOptions:()Lorg/graalvm/compiler/options/OptionValues;
            invokevirtual org.graalvm.compiler.options.OptionKey.getValue:(Lorg/graalvm/compiler/options/OptionValues;)Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            ifle 5
         1: .line 593
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfigBase.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.gcTotalCollectionsAddress:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)J
            invokestatic jdk.internal.vm.compiler.word.WordFactory.pointer:(J)Ljdk/internal/vm/compiler/word/PointerBase;
            checkcast jdk.internal.vm.compiler.word.Pointer
            iconst_0
            invokeinterface jdk.internal.vm.compiler.word.Pointer.readLong:(I)J
            l2i
            getstatic org.graalvm.compiler.core.common.GraalOptions.GCDebugStartCycle:Lorg/graalvm/compiler/options/OptionKey;
         2: .line 594
            aload 0 /* graph */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getOptions:()Lorg/graalvm/compiler/options/OptionValues;
         3: .line 593
            invokevirtual org.graalvm.compiler.options.OptionKey.getValue:(Lorg/graalvm/compiler/options/OptionValues;)Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
         4: .line 592
            if_icmple 5
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         5: iconst_0
            ireturn
        end local 0 // org.graalvm.compiler.nodes.StructuredGraph graph
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0  graph  Lorg/graalvm/compiler/nodes/StructuredGraph;
    MethodParameters:
       Name  Flags
      graph  

  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=6, locals=4, args_size=2
        start local 0 // java.lang.Object parent
        start local 1 // java.lang.Object child
         0: .line 604
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfigBase.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.verifyOops:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)Z
            ifeq 6
            aload 1 /* child */
            ifnull 6
         1: .line 605
            aload 0 /* parent */
            invokestatic org.graalvm.compiler.word.Word.objectToTrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Word;
            astore 2 /* parentWord */
        start local 2 // org.graalvm.compiler.word.Word parentWord
         2: .line 606
            aload 1 /* child */
            invokestatic org.graalvm.compiler.word.Word.objectToTrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Word;
            astore 3 /* childWord */
        start local 3 // org.graalvm.compiler.word.Word childWord
         3: .line 607
            getstatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.VALIDATE_OBJECT:Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
            aload 2 /* parentWord */
            aload 3 /* childWord */
            invokestatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.validateOop:(Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;Lorg/graalvm/compiler/word/Word;Lorg/graalvm/compiler/word/Word;)Z
            ifne 6
         4: .line 608
            iconst_1
            ldc "Verification ERROR, Parent: %p Child: %p\n"
            aload 2 /* parentWord */
            invokevirtual org.graalvm.compiler.word.Word.rawValue:()J
            aload 3 /* childWord */
            invokevirtual org.graalvm.compiler.word.Word.rawValue:()J
            invokestatic org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets.log:(ZLjava/lang/String;JJ)V
         5: .line 609
            ldc "Verification ERROR, Parent: %p\n"
            aload 2 /* parentWord */
            invokevirtual org.graalvm.compiler.word.Word.rawValue:()J
            invokestatic org.graalvm.compiler.hotspot.nodes.VMErrorNode.vmError:(Ljava/lang/String;J)V
        end local 3 // org.graalvm.compiler.word.Word childWord
        end local 2 // org.graalvm.compiler.word.Word parentWord
         6: .line 612
      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    7     0      parent  Ljava/lang/Object;
            0    7     1       child  Ljava/lang/Object;
            2    6     2  parentWord  Lorg/graalvm/compiler/word/Word;
            3    6     3   childWord  Lorg/graalvm/compiler/word/Word;
    MethodParameters:
        Name  Flags
      parent  
      child   

  private static native boolean validateOop(org.graalvm.compiler.core.common.spi.ForeignCallDescriptor, org.graalvm.compiler.word.Word, org.graalvm.compiler.word.Word);
    descriptor: (Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;Lorg/graalvm/compiler/word/Word;Lorg/graalvm/compiler/word/Word;)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$Counters  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
  Counters = org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Counters of org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets
  public Templates = org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets$Templates of org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets
  public final 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