public abstract class org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets extends org.graalvm.compiler.replacements.gc.WriteBarrierSnippets implements org.graalvm.compiler.replacements.Snippets
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets
  super_class: org.graalvm.compiler.replacements.gc.WriteBarrierSnippets
{
  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets this
         0: .line 48
            aload 0 /* this */
            invokespecial org.graalvm.compiler.replacements.gc.WriteBarrierSnippets.<init>:()V
            return
        end local 0 // org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/replacements/gc/SerialWriteBarrierSnippets;

  public void serialImpreciseWriteBarrier(java.lang.Object, org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets$Counters, boolean);
    descriptor: (Ljava/lang/Object;Lorg/graalvm/compiler/replacements/gc/SerialWriteBarrierSnippets$Counters;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets this
        start local 1 // java.lang.Object object
        start local 2 // org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets$Counters counters
        start local 3 // boolean verifyOnly
         0: .line 60
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets.verifyBarrier:()Z
            ifeq 2
         1: .line 61
            aload 1 /* object */
            invokestatic org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets.verifyNotArray:(Ljava/lang/Object;)V
         2: .line 63
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* object */
            invokestatic org.graalvm.compiler.word.Word.objectToTrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Word;
            aload 2 /* counters */
            iload 3 /* verifyOnly */
            invokevirtual org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets.serialWriteBarrier:(Ljdk/internal/vm/compiler/word/Pointer;Lorg/graalvm/compiler/replacements/gc/SerialWriteBarrierSnippets$Counters;Z)V
         3: .line 64
            return
        end local 3 // boolean verifyOnly
        end local 2 // org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets$Counters counters
        end local 1 // java.lang.Object object
        end local 0 // org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0        this  Lorg/graalvm/compiler/replacements/gc/SerialWriteBarrierSnippets;
            0    4     1      object  Ljava/lang/Object;
            0    4     2    counters  Lorg/graalvm/compiler/replacements/gc/SerialWriteBarrierSnippets$Counters;
            0    4     3  verifyOnly  Z
    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      
      counters    
      verifyOnly  

  public void serialPreciseWriteBarrier(org.graalvm.compiler.nodes.memory.address.AddressNode$Address, org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets$Counters, boolean);
    descriptor: (Lorg/graalvm/compiler/nodes/memory/address/AddressNode$Address;Lorg/graalvm/compiler/replacements/gc/SerialWriteBarrierSnippets$Counters;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets this
        start local 1 // org.graalvm.compiler.nodes.memory.address.AddressNode$Address address
        start local 2 // org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets$Counters counters
        start local 3 // boolean verifyOnly
         0: .line 68
            aload 0 /* this */
            aload 1 /* address */
            invokestatic org.graalvm.compiler.word.Word.fromAddress:(Lorg/graalvm/compiler/nodes/memory/address/AddressNode$Address;)Lorg/graalvm/compiler/word/Word;
            aload 2 /* counters */
            iload 3 /* verifyOnly */
            invokevirtual org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets.serialWriteBarrier:(Ljdk/internal/vm/compiler/word/Pointer;Lorg/graalvm/compiler/replacements/gc/SerialWriteBarrierSnippets$Counters;Z)V
         1: .line 69
            return
        end local 3 // boolean verifyOnly
        end local 2 // org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets$Counters counters
        end local 1 // org.graalvm.compiler.nodes.memory.address.AddressNode$Address address
        end local 0 // org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Lorg/graalvm/compiler/replacements/gc/SerialWriteBarrierSnippets;
            0    2     1     address  Lorg/graalvm/compiler/nodes/memory/address/AddressNode$Address;
            0    2     2    counters  Lorg/graalvm/compiler/replacements/gc/SerialWriteBarrierSnippets$Counters;
            0    2     3  verifyOnly  Z
    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
      address     
      counters    
      verifyOnly  

  public void serialArrayRangeWriteBarrier(org.graalvm.compiler.nodes.memory.address.AddressNode$Address, int, int);
    descriptor: (Lorg/graalvm/compiler/nodes/memory/address/AddressNode$Address;II)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=9, args_size=4
        start local 0 // org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets this
        start local 1 // org.graalvm.compiler.nodes.memory.address.AddressNode$Address address
        start local 2 // int length
        start local 3 // int elementStride
         0: .line 73
            ldc 0.09999999999999998
            iload 2 /* length */
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack: double
         1: iconst_0
      StackMap locals: org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets org.graalvm.compiler.nodes.memory.address.AddressNode$Address int int
      StackMap stack: double int
         2: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 4
         3: .line 74
            return
         4: .line 77
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets.cardTableShift:()I
            istore 4 /* cardShift */
        start local 4 // int cardShift
         5: .line 78
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets.cardTableAddress:()Lorg/graalvm/compiler/word/Word;
            astore 5 /* cardTableAddress */
        start local 5 // org.graalvm.compiler.word.Word cardTableAddress
         6: .line 79
            aload 5 /* cardTableAddress */
            aload 1 /* address */
            iload 2 /* length */
            iload 3 /* elementStride */
            invokestatic org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets.getPointerToFirstArrayElement:(Lorg/graalvm/compiler/nodes/memory/address/AddressNode$Address;II)Lorg/graalvm/compiler/word/Word;
            iload 4 /* cardShift */
            invokevirtual org.graalvm.compiler.word.Word.unsignedShiftRight:(I)Lorg/graalvm/compiler/word/Word;
            invokevirtual org.graalvm.compiler.word.Word.add:(Lorg/graalvm/compiler/word/Word;)Lorg/graalvm/compiler/word/Word;
            astore 6 /* start */
        start local 6 // org.graalvm.compiler.word.Word start
         7: .line 80
            aload 5 /* cardTableAddress */
            aload 1 /* address */
            iload 2 /* length */
            iload 3 /* elementStride */
            invokestatic org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets.getPointerToLastArrayElement:(Lorg/graalvm/compiler/nodes/memory/address/AddressNode$Address;II)Lorg/graalvm/compiler/word/Word;
            iload 4 /* cardShift */
            invokevirtual org.graalvm.compiler.word.Word.unsignedShiftRight:(I)Lorg/graalvm/compiler/word/Word;
            invokevirtual org.graalvm.compiler.word.Word.add:(Lorg/graalvm/compiler/word/Word;)Lorg/graalvm/compiler/word/Word;
            astore 7 /* end */
        start local 7 // org.graalvm.compiler.word.Word end
         8: .line 82
            aload 6 /* start */
            astore 8 /* cur */
        start local 8 // org.graalvm.compiler.word.Word cur
         9: .line 84
      StackMap locals: org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets org.graalvm.compiler.nodes.memory.address.AddressNode$Address int int int org.graalvm.compiler.word.Word org.graalvm.compiler.word.Word org.graalvm.compiler.word.Word org.graalvm.compiler.word.Word
      StackMap stack:
            aload 8 /* cur */
            iconst_0
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets.dirtyCardValue:()B
            getstatic org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets.GC_CARD_LOCATION:Ljdk/internal/vm/compiler/word/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.writeByte:(IBLjdk/internal/vm/compiler/word/LocationIdentity;)V
        10: .line 85
            aload 8 /* cur */
            iconst_1
            invokevirtual org.graalvm.compiler.word.Word.add:(I)Lorg/graalvm/compiler/word/Word;
            astore 8 /* cur */
        11: .line 86
            aload 8 /* cur */
            aload 7 /* end */
            invokevirtual org.graalvm.compiler.word.Word.belowOrEqual:(Lorg/graalvm/compiler/word/Word;)Z
            ifne 9
        12: .line 87
            return
        end local 8 // org.graalvm.compiler.word.Word cur
        end local 7 // org.graalvm.compiler.word.Word end
        end local 6 // org.graalvm.compiler.word.Word start
        end local 5 // org.graalvm.compiler.word.Word cardTableAddress
        end local 4 // int cardShift
        end local 3 // int elementStride
        end local 2 // int length
        end local 1 // org.graalvm.compiler.nodes.memory.address.AddressNode$Address address
        end local 0 // org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   13     0              this  Lorg/graalvm/compiler/replacements/gc/SerialWriteBarrierSnippets;
            0   13     1           address  Lorg/graalvm/compiler/nodes/memory/address/AddressNode$Address;
            0   13     2            length  I
            0   13     3     elementStride  I
            5   13     4         cardShift  I
            6   13     5  cardTableAddress  Lorg/graalvm/compiler/word/Word;
            7   13     6             start  Lorg/graalvm/compiler/word/Word;
            8   13     7               end  Lorg/graalvm/compiler/word/Word;
            9   13     8               cur  Lorg/graalvm/compiler/word/Word;
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.Snippet()
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
    MethodParameters:
               Name  Flags
      address        
      length         
      elementStride  

  private void serialWriteBarrier(jdk.internal.vm.compiler.word.Pointer, org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets$Counters, boolean);
    descriptor: (Ljdk/internal/vm/compiler/word/Pointer;Lorg/graalvm/compiler/replacements/gc/SerialWriteBarrierSnippets$Counters;Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=6, args_size=4
        start local 0 // org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets this
        start local 1 // jdk.internal.vm.compiler.word.Pointer ptr
        start local 2 // org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets$Counters counters
        start local 3 // boolean verifyOnly
         0: .line 90
            iload 3 /* verifyOnly */
            ifne 2
         1: .line 91
            aload 2 /* counters */
            getfield org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets$Counters.serialWriteBarrierCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
         2: .line 94
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets.cardTableAddress:()Lorg/graalvm/compiler/word/Word;
            aload 1 /* ptr */
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets.cardTableShift:()I
            invokeinterface jdk.internal.vm.compiler.word.Pointer.unsignedShiftRight:(I)Ljdk/internal/vm/compiler/word/UnsignedWord;
            invokevirtual org.graalvm.compiler.word.Word.add:(Ljdk/internal/vm/compiler/word/UnsignedWord;)Lorg/graalvm/compiler/word/Word;
            astore 4 /* base */
        start local 4 // org.graalvm.compiler.word.Word base
         3: .line 95
            iload 3 /* verifyOnly */
            ifeq 9
         4: .line 96
            aload 4 /* base */
            iconst_0
            getstatic org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets.GC_CARD_LOCATION:Ljdk/internal/vm/compiler/word/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.readByte:(ILjdk/internal/vm/compiler/word/LocationIdentity;)B
            istore 5 /* cardValue */
        start local 5 // byte cardValue
         5: .line 97
            iconst_0
            iload 5 /* cardValue */
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets.dirtyCardValue:()B
            if_icmpne 6
            iconst_1
            goto 7
      StackMap locals: org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets jdk.internal.vm.compiler.word.Pointer org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets$Counters int org.graalvm.compiler.word.Word int
      StackMap stack: int
         6: iconst_0
      StackMap locals: org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets jdk.internal.vm.compiler.word.Pointer org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets$Counters int org.graalvm.compiler.word.Word int
      StackMap stack: int int
         7: ldc "card must be dirty"
            invokestatic org.graalvm.compiler.replacements.nodes.AssertionNode.assertion:(ZZLjava/lang/String;)V
        end local 5 // byte cardValue
         8: .line 98
            goto 10
         9: .line 99
      StackMap locals:
      StackMap stack:
            aload 4 /* base */
            iconst_0
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets.dirtyCardValue:()B
            getstatic org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets.GC_CARD_LOCATION:Ljdk/internal/vm/compiler/word/LocationIdentity;
            invokevirtual org.graalvm.compiler.word.Word.writeByte:(IBLjdk/internal/vm/compiler/word/LocationIdentity;)V
        10: .line 101
      StackMap locals:
      StackMap stack:
            return
        end local 4 // org.graalvm.compiler.word.Word base
        end local 3 // boolean verifyOnly
        end local 2 // org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets$Counters counters
        end local 1 // jdk.internal.vm.compiler.word.Pointer ptr
        end local 0 // org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   11     0        this  Lorg/graalvm/compiler/replacements/gc/SerialWriteBarrierSnippets;
            0   11     1         ptr  Ljdk/internal/vm/compiler/word/Pointer;
            0   11     2    counters  Lorg/graalvm/compiler/replacements/gc/SerialWriteBarrierSnippets$Counters;
            0   11     3  verifyOnly  Z
            3   11     4        base  Lorg/graalvm/compiler/word/Word;
            5    8     5   cardValue  B
    MethodParameters:
            Name  Flags
      ptr         
      counters    
      verifyOnly  

  protected abstract org.graalvm.compiler.word.Word cardTableAddress();
    descriptor: ()Lorg/graalvm/compiler/word/Word;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract int cardTableShift();
    descriptor: ()I
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract boolean verifyBarrier();
    descriptor: ()Z
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract byte dirtyCardValue();
    descriptor: ()B
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
}
SourceFile: "SerialWriteBarrierSnippets.java"
NestMembers:
  org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets$Counters  org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets$SerialWriteBarrierLowerer
InnerClasses:
  public abstract ConstantParameter = org.graalvm.compiler.api.replacements.Snippet$ConstantParameter of org.graalvm.compiler.api.replacements.Snippet
  public abstract Address = org.graalvm.compiler.nodes.memory.address.AddressNode$Address of org.graalvm.compiler.nodes.memory.address.AddressNode
  Counters = org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets$Counters of org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets
  public SerialWriteBarrierLowerer = org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets$SerialWriteBarrierLowerer of org.graalvm.compiler.replacements.gc.SerialWriteBarrierSnippets