public abstract class org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets 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.arraycopy.ArrayCopySnippets
  super_class: java.lang.Object
{
  static final jdk.vm.ci.meta.MetaAccessProvider INJECTED_META_ACCESS;
    descriptor: Ljdk/vm/ci/meta/MetaAccessProvider;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 90
            aconst_null
            putstatic org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets.INJECTED_META_ACCESS:Ljdk/vm/ci/meta/MetaAccessProvider;
            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.replacements.arraycopy.ArrayCopySnippets this
         0: .line 76
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets;

  public abstract boolean hubsEqual(java.lang.Object, java.lang.Object);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;)Z
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
             Name  Flags
      nonNullSrc   
      nonNullDest  

  public abstract boolean layoutHelpersEqual(java.lang.Object, java.lang.Object);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;)Z
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
             Name  Flags
      nonNullSrc   
      nonNullDest  

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

  protected boolean useOriginalArraycopy();
    descriptor: ()Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets this
         0: .line 99
            iconst_1
            ireturn
        end local 0 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets;

  public void arraycopyExactSnippet(java.lang.Object, int, java.lang.Object, int, int, org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck, org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo, jdk.vm.ci.meta.JavaKind, jdk.internal.vm.compiler.word.LocationIdentity, org.graalvm.compiler.replacements.SnippetCounter, org.graalvm.compiler.replacements.SnippetCounter, org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters);
    descriptor: (Ljava/lang/Object;ILjava/lang/Object;IILorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;Ljdk/vm/ci/meta/JavaKind;Ljdk/internal/vm/compiler/word/LocationIdentity;Lorg/graalvm/compiler/replacements/SnippetCounter;Lorg/graalvm/compiler/replacements/SnippetCounter;Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Counters;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=15, args_size=13
        start local 0 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets this
        start local 1 // java.lang.Object src
        start local 2 // int srcPos
        start local 3 // java.lang.Object dest
        start local 4 // int destPos
        start local 5 // int length
        start local 6 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        start local 7 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo workSnippet
        start local 8 // jdk.vm.ci.meta.JavaKind elementKind
        start local 9 // jdk.internal.vm.compiler.word.LocationIdentity locationIdentity
        start local 10 // org.graalvm.compiler.replacements.SnippetCounter elementKindCounter
        start local 11 // org.graalvm.compiler.replacements.SnippetCounter elementKindCopiedCounter
        start local 12 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters counters
         0: .line 107
            aload 1 /* src */
            invokestatic org.graalvm.compiler.api.directives.GraalDirectives.guardingNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 13 /* nonNullSrc */
        start local 13 // java.lang.Object nonNullSrc
         1: .line 108
            aload 3 /* dest */
            invokestatic org.graalvm.compiler.api.directives.GraalDirectives.guardingNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 14 /* nonNullDest */
        start local 14 // java.lang.Object nonNullDest
         2: .line 109
            aload 0 /* this */
            aload 13 /* nonNullSrc */
            aload 14 /* nonNullDest */
            aload 6 /* arrayTypeCheck */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets.checkArrayTypes:(Ljava/lang/Object;Ljava/lang/Object;Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;)V
         3: .line 110
            aload 13 /* nonNullSrc */
            iload 2 /* srcPos */
            aload 14 /* nonNullDest */
            iload 4 /* destPos */
            iload 5 /* length */
            aload 12 /* counters */
            invokestatic org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets.checkLimits:(Ljava/lang/Object;ILjava/lang/Object;IILorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Counters;)V
         4: .line 111
            iload 5 /* length */
            aload 12 /* counters */
            invokestatic org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets.incrementLengthCounter:(ILorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Counters;)V
         5: .line 113
            aload 10 /* elementKindCounter */
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
         6: .line 114
            aload 11 /* elementKindCopiedCounter */
            iload 5 /* length */
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.add:(I)V
         7: .line 116
            aload 13 /* nonNullSrc */
            iload 2 /* srcPos */
            aload 14 /* nonNullDest */
            iload 4 /* destPos */
            iload 5 /* length */
            aload 7 /* workSnippet */
            aload 8 /* elementKind */
            invokestatic org.graalvm.compiler.replacements.arraycopy.ArrayCopyWithDelayedLoweringNode.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;IILorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;Ljdk/vm/ci/meta/JavaKind;)V
         8: .line 117
            return
        end local 14 // java.lang.Object nonNullDest
        end local 13 // java.lang.Object nonNullSrc
        end local 12 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters counters
        end local 11 // org.graalvm.compiler.replacements.SnippetCounter elementKindCopiedCounter
        end local 10 // org.graalvm.compiler.replacements.SnippetCounter elementKindCounter
        end local 9 // jdk.internal.vm.compiler.word.LocationIdentity locationIdentity
        end local 8 // jdk.vm.ci.meta.JavaKind elementKind
        end local 7 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo workSnippet
        end local 6 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        end local 5 // int length
        end local 4 // int destPos
        end local 3 // java.lang.Object dest
        end local 2 // int srcPos
        end local 1 // java.lang.Object src
        end local 0 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets this
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0    9     0                      this  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets;
            0    9     1                       src  Ljava/lang/Object;
            0    9     2                    srcPos  I
            0    9     3                      dest  Ljava/lang/Object;
            0    9     4                   destPos  I
            0    9     5                    length  I
            0    9     6            arrayTypeCheck  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
            0    9     7               workSnippet  Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            0    9     8               elementKind  Ljdk/vm/ci/meta/JavaKind;
            0    9     9          locationIdentity  Ljdk/internal/vm/compiler/word/LocationIdentity;
            0    9    10        elementKindCounter  Lorg/graalvm/compiler/replacements/SnippetCounter;
            0    9    11  elementKindCopiedCounter  Lorg/graalvm/compiler/replacements/SnippetCounter;
            0    9    12                  counters  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Counters;
            1    9    13                nonNullSrc  Ljava/lang/Object;
            2    9    14               nonNullDest  Ljava/lang/Object;
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.Snippet()
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
      4:
      5:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      6:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      7:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      8:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      9:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      10:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      11:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
    MethodParameters:
                          Name  Flags
      src                       
      srcPos                    
      dest                      
      destPos                   
      length                    
      arrayTypeCheck            
      workSnippet               
      elementKind               
      locationIdentity          
      elementKindCounter        
      elementKindCopiedCounter  
      counters                  

  public void arraycopyExactStubCallSnippet(java.lang.Object, int, java.lang.Object, int, int, org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck, org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo, jdk.vm.ci.meta.JavaKind, jdk.internal.vm.compiler.word.LocationIdentity, org.graalvm.compiler.replacements.SnippetCounter, org.graalvm.compiler.replacements.SnippetCounter, org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters);
    descriptor: (Ljava/lang/Object;ILjava/lang/Object;IILorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;Ljdk/vm/ci/meta/JavaKind;Ljdk/internal/vm/compiler/word/LocationIdentity;Lorg/graalvm/compiler/replacements/SnippetCounter;Lorg/graalvm/compiler/replacements/SnippetCounter;Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Counters;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=15, args_size=13
        start local 0 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets this
        start local 1 // java.lang.Object src
        start local 2 // int srcPos
        start local 3 // java.lang.Object dest
        start local 4 // int destPos
        start local 5 // int length
        start local 6 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        start local 7 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo workSnippet
        start local 8 // jdk.vm.ci.meta.JavaKind elementKind
        start local 9 // jdk.internal.vm.compiler.word.LocationIdentity locationIdentity
        start local 10 // org.graalvm.compiler.replacements.SnippetCounter elementKindCounter
        start local 11 // org.graalvm.compiler.replacements.SnippetCounter elementKindCopiedCounter
        start local 12 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters counters
         0: .line 124
            aload 1 /* src */
            invokestatic org.graalvm.compiler.api.directives.GraalDirectives.guardingNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 13 /* nonNullSrc */
        start local 13 // java.lang.Object nonNullSrc
         1: .line 125
            aload 3 /* dest */
            invokestatic org.graalvm.compiler.api.directives.GraalDirectives.guardingNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 14 /* nonNullDest */
        start local 14 // java.lang.Object nonNullDest
         2: .line 126
            aload 0 /* this */
            aload 13 /* nonNullSrc */
            aload 14 /* nonNullDest */
            aload 6 /* arrayTypeCheck */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets.checkArrayTypes:(Ljava/lang/Object;Ljava/lang/Object;Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;)V
         3: .line 127
            aload 13 /* nonNullSrc */
            iload 2 /* srcPos */
            aload 14 /* nonNullDest */
            iload 4 /* destPos */
            iload 5 /* length */
            aload 12 /* counters */
            invokestatic org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets.checkLimits:(Ljava/lang/Object;ILjava/lang/Object;IILorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Counters;)V
         4: .line 128
            iload 5 /* length */
            aload 12 /* counters */
            invokestatic org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets.incrementLengthCounter:(ILorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Counters;)V
         5: .line 130
            aload 10 /* elementKindCounter */
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
         6: .line 131
            aload 11 /* elementKindCopiedCounter */
            iload 5 /* length */
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.add:(I)V
         7: .line 133
            aload 13 /* nonNullSrc */
            iload 2 /* srcPos */
            aload 14 /* nonNullDest */
            iload 4 /* destPos */
            iload 5 /* length */
            aload 8 /* elementKind */
            aload 9 /* locationIdentity */
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets.heapWordSize:()I
            invokestatic org.graalvm.compiler.replacements.arraycopy.ArrayCopyCallNode.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;IILjdk/vm/ci/meta/JavaKind;Ljdk/internal/vm/compiler/word/LocationIdentity;I)V
         8: .line 134
            return
        end local 14 // java.lang.Object nonNullDest
        end local 13 // java.lang.Object nonNullSrc
        end local 12 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters counters
        end local 11 // org.graalvm.compiler.replacements.SnippetCounter elementKindCopiedCounter
        end local 10 // org.graalvm.compiler.replacements.SnippetCounter elementKindCounter
        end local 9 // jdk.internal.vm.compiler.word.LocationIdentity locationIdentity
        end local 8 // jdk.vm.ci.meta.JavaKind elementKind
        end local 7 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo workSnippet
        end local 6 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        end local 5 // int length
        end local 4 // int destPos
        end local 3 // java.lang.Object dest
        end local 2 // int srcPos
        end local 1 // java.lang.Object src
        end local 0 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets this
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0    9     0                      this  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets;
            0    9     1                       src  Ljava/lang/Object;
            0    9     2                    srcPos  I
            0    9     3                      dest  Ljava/lang/Object;
            0    9     4                   destPos  I
            0    9     5                    length  I
            0    9     6            arrayTypeCheck  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
            0    9     7               workSnippet  Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            0    9     8               elementKind  Ljdk/vm/ci/meta/JavaKind;
            0    9     9          locationIdentity  Ljdk/internal/vm/compiler/word/LocationIdentity;
            0    9    10        elementKindCounter  Lorg/graalvm/compiler/replacements/SnippetCounter;
            0    9    11  elementKindCopiedCounter  Lorg/graalvm/compiler/replacements/SnippetCounter;
            0    9    12                  counters  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Counters;
            1    9    13                nonNullSrc  Ljava/lang/Object;
            2    9    14               nonNullDest  Ljava/lang/Object;
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.Snippet()
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
      4:
      5:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      6:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      7:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      8:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      9:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      10:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      11:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
    MethodParameters:
                          Name  Flags
      src                       
      srcPos                    
      dest                      
      destPos                   
      length                    
      arrayTypeCheck            
      workSnippet               
      elementKind               
      locationIdentity          
      elementKindCounter        
      elementKindCopiedCounter  
      counters                  

  public void arraycopyCheckcastSnippet(java.lang.Object, int, java.lang.Object, int, int, org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck, org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters, org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo, jdk.vm.ci.meta.JavaKind);
    descriptor: (Ljava/lang/Object;ILjava/lang/Object;IILorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Counters;Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;Ljdk/vm/ci/meta/JavaKind;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=12, args_size=10
        start local 0 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets this
        start local 1 // java.lang.Object src
        start local 2 // int srcPos
        start local 3 // java.lang.Object dest
        start local 4 // int destPos
        start local 5 // int length
        start local 6 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        start local 7 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters counters
        start local 8 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo workSnippet
        start local 9 // jdk.vm.ci.meta.JavaKind elementKind
         0: .line 139
            aload 1 /* src */
            invokestatic org.graalvm.compiler.api.directives.GraalDirectives.guardingNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 10 /* nonNullSrc */
        start local 10 // java.lang.Object nonNullSrc
         1: .line 140
            aload 3 /* dest */
            invokestatic org.graalvm.compiler.api.directives.GraalDirectives.guardingNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 11 /* nonNullDest */
        start local 11 // java.lang.Object nonNullDest
         2: .line 141
            aload 0 /* this */
            aload 10 /* nonNullSrc */
            aload 11 /* nonNullDest */
            aload 6 /* arrayTypeCheck */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets.checkArrayTypes:(Ljava/lang/Object;Ljava/lang/Object;Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;)V
         3: .line 142
            aload 10 /* nonNullSrc */
            iload 2 /* srcPos */
            aload 11 /* nonNullDest */
            iload 4 /* destPos */
            iload 5 /* length */
            aload 7 /* counters */
            invokestatic org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets.checkLimits:(Ljava/lang/Object;ILjava/lang/Object;IILorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Counters;)V
         4: .line 143
            iload 5 /* length */
            aload 7 /* counters */
            invokestatic org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets.incrementLengthCounter:(ILorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Counters;)V
         5: .line 145
            aload 10 /* nonNullSrc */
            iload 2 /* srcPos */
            aload 11 /* nonNullDest */
            iload 4 /* destPos */
            iload 5 /* length */
            aload 8 /* workSnippet */
            aload 9 /* elementKind */
            invokestatic org.graalvm.compiler.replacements.arraycopy.ArrayCopyWithDelayedLoweringNode.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;IILorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;Ljdk/vm/ci/meta/JavaKind;)V
         6: .line 146
            return
        end local 11 // java.lang.Object nonNullDest
        end local 10 // java.lang.Object nonNullSrc
        end local 9 // jdk.vm.ci.meta.JavaKind elementKind
        end local 8 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo workSnippet
        end local 7 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters counters
        end local 6 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        end local 5 // int length
        end local 4 // int destPos
        end local 3 // java.lang.Object dest
        end local 2 // int srcPos
        end local 1 // java.lang.Object src
        end local 0 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    7     0            this  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets;
            0    7     1             src  Ljava/lang/Object;
            0    7     2          srcPos  I
            0    7     3            dest  Ljava/lang/Object;
            0    7     4         destPos  I
            0    7     5          length  I
            0    7     6  arrayTypeCheck  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
            0    7     7        counters  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Counters;
            0    7     8     workSnippet  Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            0    7     9     elementKind  Ljdk/vm/ci/meta/JavaKind;
            1    7    10      nonNullSrc  Ljava/lang/Object;
            2    7    11     nonNullDest  Ljava/lang/Object;
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.Snippet()
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
      4:
      5:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      6:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      7:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      8:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
    MethodParameters:
                Name  Flags
      src             
      srcPos          
      dest            
      destPos         
      length          
      arrayTypeCheck  
      counters        
      workSnippet     
      elementKind     

  public void arraycopyGenericSnippet(java.lang.Object, int, java.lang.Object, int, int, org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck, org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters, org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo, jdk.vm.ci.meta.JavaKind);
    descriptor: (Ljava/lang/Object;ILjava/lang/Object;IILorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Counters;Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;Ljdk/vm/ci/meta/JavaKind;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=12, args_size=10
        start local 0 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets this
        start local 1 // java.lang.Object src
        start local 2 // int srcPos
        start local 3 // java.lang.Object dest
        start local 4 // int destPos
        start local 5 // int length
        start local 6 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        start local 7 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters counters
        start local 8 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo workSnippet
        start local 9 // jdk.vm.ci.meta.JavaKind elementKind
         0: .line 151
            aload 1 /* src */
            invokestatic org.graalvm.compiler.api.directives.GraalDirectives.guardingNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 10 /* nonNullSrc */
        start local 10 // java.lang.Object nonNullSrc
         1: .line 152
            aload 3 /* dest */
            invokestatic org.graalvm.compiler.api.directives.GraalDirectives.guardingNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 11 /* nonNullDest */
        start local 11 // java.lang.Object nonNullDest
         2: .line 153
            aload 0 /* this */
            aload 10 /* nonNullSrc */
            aload 11 /* nonNullDest */
            aload 6 /* arrayTypeCheck */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets.checkArrayTypes:(Ljava/lang/Object;Ljava/lang/Object;Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;)V
         3: .line 154
            aload 10 /* nonNullSrc */
            iload 2 /* srcPos */
            aload 11 /* nonNullDest */
            iload 4 /* destPos */
            iload 5 /* length */
            aload 7 /* counters */
            invokestatic org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets.checkLimits:(Ljava/lang/Object;ILjava/lang/Object;IILorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Counters;)V
         4: .line 155
            iload 5 /* length */
            aload 7 /* counters */
            invokestatic org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets.incrementLengthCounter:(ILorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Counters;)V
         5: .line 157
            aload 10 /* nonNullSrc */
            iload 2 /* srcPos */
            aload 11 /* nonNullDest */
            iload 4 /* destPos */
            iload 5 /* length */
            aload 8 /* workSnippet */
            aload 9 /* elementKind */
            invokestatic org.graalvm.compiler.replacements.arraycopy.ArrayCopyWithDelayedLoweringNode.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;IILorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;Ljdk/vm/ci/meta/JavaKind;)V
         6: .line 158
            return
        end local 11 // java.lang.Object nonNullDest
        end local 10 // java.lang.Object nonNullSrc
        end local 9 // jdk.vm.ci.meta.JavaKind elementKind
        end local 8 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo workSnippet
        end local 7 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters counters
        end local 6 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        end local 5 // int length
        end local 4 // int destPos
        end local 3 // java.lang.Object dest
        end local 2 // int srcPos
        end local 1 // java.lang.Object src
        end local 0 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    7     0            this  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets;
            0    7     1             src  Ljava/lang/Object;
            0    7     2          srcPos  I
            0    7     3            dest  Ljava/lang/Object;
            0    7     4         destPos  I
            0    7     5          length  I
            0    7     6  arrayTypeCheck  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
            0    7     7        counters  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Counters;
            0    7     8     workSnippet  Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            0    7     9     elementKind  Ljdk/vm/ci/meta/JavaKind;
            1    7    10      nonNullSrc  Ljava/lang/Object;
            2    7    11     nonNullDest  Ljava/lang/Object;
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.Snippet()
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
      4:
      5:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      6:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      7:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      8:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
    MethodParameters:
                Name  Flags
      src             
      srcPos          
      dest            
      destPos         
      length          
      arrayTypeCheck  
      counters        
      workSnippet     
      elementKind     

  public static void arraycopyNativeSnippet(java.lang.Object, int, java.lang.Object, int, int, org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters);
    descriptor: (Ljava/lang/Object;ILjava/lang/Object;IILorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Counters;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=6, args_size=6
        start local 0 // java.lang.Object src
        start local 1 // int srcPos
        start local 2 // java.lang.Object dest
        start local 3 // int destPos
        start local 4 // int length
        start local 5 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters counters
         0: .line 163
            iload 4 /* length */
            aload 5 /* counters */
            invokestatic org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets.incrementLengthCounter:(ILorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Counters;)V
         1: .line 164
            aload 5 /* counters */
            getfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters.systemArraycopyCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
         2: .line 165
            aload 5 /* counters */
            getfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters.systemArraycopyCopiedCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            iload 4 /* length */
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.add:(I)V
         3: .line 167
            aload 0 /* src */
            iload 1 /* srcPos */
            aload 2 /* dest */
            iload 3 /* destPos */
            iload 4 /* length */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         4: .line 168
            return
        end local 5 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters counters
        end local 4 // int length
        end local 3 // int destPos
        end local 2 // java.lang.Object dest
        end local 1 // int srcPos
        end local 0 // java.lang.Object src
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    5     0       src  Ljava/lang/Object;
            0    5     1    srcPos  I
            0    5     2      dest  Ljava/lang/Object;
            0    5     3   destPos  I
            0    5     4    length  I
            0    5     5  counters  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Counters;
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.Snippet()
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
      4:
      5:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
    MethodParameters:
          Name  Flags
      src       
      srcPos    
      dest      
      destPos   
      length    
      counters  

  public void exactArraycopyWithSlowPathWork(java.lang.Object, int, java.lang.Object, int, int, jdk.vm.ci.meta.JavaKind, jdk.internal.vm.compiler.word.LocationIdentity, org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters);
    descriptor: (Ljava/lang/Object;ILjava/lang/Object;IILjdk/vm/ci/meta/JavaKind;Ljdk/internal/vm/compiler/word/LocationIdentity;Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Counters;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=10, locals=9, args_size=9
        start local 0 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets this
        start local 1 // java.lang.Object src
        start local 2 // int srcPos
        start local 3 // java.lang.Object dest
        start local 4 // int destPos
        start local 5 // int length
        start local 6 // jdk.vm.ci.meta.JavaKind elementKind
        start local 7 // jdk.internal.vm.compiler.word.LocationIdentity arrayLocation
        start local 8 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters counters
         0: .line 174
            aload 0 /* this */
            aload 1 /* src */
            iload 2 /* srcPos */
            aload 3 /* dest */
            iload 4 /* destPos */
            iload 5 /* length */
            aload 6 /* elementKind */
            aload 7 /* arrayLocation */
            aload 8 /* counters */
            getstatic org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets.INJECTED_META_ACCESS:Ljdk/vm/ci/meta/MetaAccessProvider;
            invokevirtual org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets.doExactArraycopyWithSlowPathWork:(Ljava/lang/Object;ILjava/lang/Object;IILjdk/vm/ci/meta/JavaKind;Ljdk/internal/vm/compiler/word/LocationIdentity;Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Counters;Ljdk/vm/ci/meta/MetaAccessProvider;)V
         1: .line 175
            return
        end local 8 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters counters
        end local 7 // jdk.internal.vm.compiler.word.LocationIdentity arrayLocation
        end local 6 // jdk.vm.ci.meta.JavaKind elementKind
        end local 5 // int length
        end local 4 // int destPos
        end local 3 // java.lang.Object dest
        end local 2 // int srcPos
        end local 1 // java.lang.Object src
        end local 0 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    2     0           this  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets;
            0    2     1            src  Ljava/lang/Object;
            0    2     2         srcPos  I
            0    2     3           dest  Ljava/lang/Object;
            0    2     4        destPos  I
            0    2     5         length  I
            0    2     6    elementKind  Ljdk/vm/ci/meta/JavaKind;
            0    2     7  arrayLocation  Ljdk/internal/vm/compiler/word/LocationIdentity;
            0    2     8       counters  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Counters;
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.Snippet(allowPartialIntrinsicArgumentMismatch = true)
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
      4:
      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
      src            
      srcPos         
      dest           
      destPos        
      length         
      elementKind    
      arrayLocation  
      counters       

  protected abstract void doExactArraycopyWithSlowPathWork(java.lang.Object, int, java.lang.Object, int, int, jdk.vm.ci.meta.JavaKind, jdk.internal.vm.compiler.word.LocationIdentity, org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters, jdk.vm.ci.meta.MetaAccessProvider);
    descriptor: (Ljava/lang/Object;ILjava/lang/Object;IILjdk/vm/ci/meta/JavaKind;Ljdk/internal/vm/compiler/word/LocationIdentity;Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Counters;Ljdk/vm/ci/meta/MetaAccessProvider;)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
               Name  Flags
      src            
      srcPos         
      dest           
      destPos        
      length         
      elementKind    
      arrayLocation  
      counters       
      metaAccess     

  public void checkcastArraycopyWithSlowPathWork(java.lang.Object, int, java.lang.Object, int, int, jdk.vm.ci.meta.JavaKind, jdk.internal.vm.compiler.word.LocationIdentity, org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters);
    descriptor: (Ljava/lang/Object;ILjava/lang/Object;IILjdk/vm/ci/meta/JavaKind;Ljdk/internal/vm/compiler/word/LocationIdentity;Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Counters;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=9, locals=9, args_size=9
        start local 0 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets this
        start local 1 // java.lang.Object src
        start local 2 // int srcPos
        start local 3 // java.lang.Object dest
        start local 4 // int destPos
        start local 5 // int length
        start local 6 // jdk.vm.ci.meta.JavaKind elementKind
        start local 7 // jdk.internal.vm.compiler.word.LocationIdentity arrayLocation
        start local 8 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters counters
         0: .line 184
            aload 0 /* this */
            aload 1 /* src */
            iload 2 /* srcPos */
            aload 3 /* dest */
            iload 4 /* destPos */
            iload 5 /* length */
            aload 6 /* elementKind */
            aload 7 /* arrayLocation */
            aload 8 /* counters */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets.doCheckcastArraycopyWithSlowPathWork:(Ljava/lang/Object;ILjava/lang/Object;IILjdk/vm/ci/meta/JavaKind;Ljdk/internal/vm/compiler/word/LocationIdentity;Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Counters;)V
         1: .line 185
            return
        end local 8 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters counters
        end local 7 // jdk.internal.vm.compiler.word.LocationIdentity arrayLocation
        end local 6 // jdk.vm.ci.meta.JavaKind elementKind
        end local 5 // int length
        end local 4 // int destPos
        end local 3 // java.lang.Object dest
        end local 2 // int srcPos
        end local 1 // java.lang.Object src
        end local 0 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    2     0           this  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets;
            0    2     1            src  Ljava/lang/Object;
            0    2     2         srcPos  I
            0    2     3           dest  Ljava/lang/Object;
            0    2     4        destPos  I
            0    2     5         length  I
            0    2     6    elementKind  Ljdk/vm/ci/meta/JavaKind;
            0    2     7  arrayLocation  Ljdk/internal/vm/compiler/word/LocationIdentity;
            0    2     8       counters  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Counters;
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.Snippet(allowPartialIntrinsicArgumentMismatch = true)
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
      4:
      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
      src            
      srcPos         
      dest           
      destPos        
      length         
      elementKind    
      arrayLocation  
      counters       

  protected abstract void doCheckcastArraycopyWithSlowPathWork(java.lang.Object, int, java.lang.Object, int, int, jdk.vm.ci.meta.JavaKind, jdk.internal.vm.compiler.word.LocationIdentity, org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters);
    descriptor: (Ljava/lang/Object;ILjava/lang/Object;IILjdk/vm/ci/meta/JavaKind;Ljdk/internal/vm/compiler/word/LocationIdentity;Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Counters;)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
               Name  Flags
      src            
      srcPos         
      dest           
      destPos        
      length         
      elementKind    
      arrayLocation  
      counters       

  public void genericArraycopyWithSlowPathWork(java.lang.Object, int, java.lang.Object, int, int, jdk.vm.ci.meta.JavaKind, jdk.internal.vm.compiler.word.LocationIdentity, org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters);
    descriptor: (Ljava/lang/Object;ILjava/lang/Object;IILjdk/vm/ci/meta/JavaKind;Ljdk/internal/vm/compiler/word/LocationIdentity;Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Counters;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=10, args_size=9
        start local 0 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets this
        start local 1 // java.lang.Object src
        start local 2 // int srcPos
        start local 3 // java.lang.Object dest
        start local 4 // int destPos
        start local 5 // int length
        start local 6 // jdk.vm.ci.meta.JavaKind elementKind
        start local 7 // jdk.internal.vm.compiler.word.LocationIdentity arrayLocation
        start local 8 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters counters
         0: .line 196
            aload 8 /* counters */
            getfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters.genericArraycopyDifferentTypeCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
         1: .line 197
            aload 8 /* counters */
            getfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters.genericArraycopyDifferentTypeCopiedCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            iload 5 /* length */
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.add:(I)V
         2: .line 198
            aload 1 /* src */
            iload 2 /* srcPos */
            aload 3 /* dest */
            iload 4 /* destPos */
            iload 5 /* length */
            invokestatic org.graalvm.compiler.replacements.arraycopy.GenericArrayCopyCallNode.genericArraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)I
            istore 9 /* copiedElements */
        start local 9 // int copiedElements
         3: .line 199
            ldc 0.010000000000000009
            iload 9 /* copiedElements */
            ifeq 4
            iconst_1
            goto 5
      StackMap locals: org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets java.lang.Object int java.lang.Object int int jdk.vm.ci.meta.JavaKind jdk.internal.vm.compiler.word.LocationIdentity org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters int
      StackMap stack: double
         4: iconst_0
      StackMap locals: org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets java.lang.Object int java.lang.Object int int jdk.vm.ci.meta.JavaKind jdk.internal.vm.compiler.word.LocationIdentity org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters int
      StackMap stack: double int
         5: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 8
         6: .line 204
            iload 9 /* copiedElements */
            iconst_m1
            ixor
            istore 9 /* copiedElements */
         7: .line 205
            aload 1 /* src */
            iload 2 /* srcPos */
            iload 9 /* copiedElements */
            iadd
            aload 3 /* dest */
            iload 4 /* destPos */
            iload 9 /* copiedElements */
            iadd
            iload 5 /* length */
            iload 9 /* copiedElements */
            isub
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         8: .line 207
      StackMap locals:
      StackMap stack:
            return
        end local 9 // int copiedElements
        end local 8 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters counters
        end local 7 // jdk.internal.vm.compiler.word.LocationIdentity arrayLocation
        end local 6 // jdk.vm.ci.meta.JavaKind elementKind
        end local 5 // int length
        end local 4 // int destPos
        end local 3 // java.lang.Object dest
        end local 2 // int srcPos
        end local 1 // java.lang.Object src
        end local 0 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    9     0            this  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets;
            0    9     1             src  Ljava/lang/Object;
            0    9     2          srcPos  I
            0    9     3            dest  Ljava/lang/Object;
            0    9     4         destPos  I
            0    9     5          length  I
            0    9     6     elementKind  Ljdk/vm/ci/meta/JavaKind;
            0    9     7   arrayLocation  Ljdk/internal/vm/compiler/word/LocationIdentity;
            0    9     8        counters  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Counters;
            3    9     9  copiedElements  I
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.Snippet(allowPartialIntrinsicArgumentMismatch = true)
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
      4:
      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
      src            
      srcPos         
      dest           
      destPos        
      length         
      elementKind    
      arrayLocation  
      counters       

  private static void incrementLengthCounter(int, org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters);
    descriptor: (ILorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Counters;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // int length
        start local 1 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters counters
         0: .line 210
            getstatic jdk.vm.ci.services.Services.IS_BUILDING_NATIVE_IMAGE:Z
            ifne 2
         1: .line 211
            aload 1 /* counters */
            getfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters.lengthHistogram:Lorg/graalvm/compiler/replacements/SnippetIntegerHistogram;
            iload 0 /* length */
            i2l
            invokevirtual org.graalvm.compiler.replacements.SnippetIntegerHistogram.inc:(J)V
         2: .line 213
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters counters
        end local 0 // int length
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0    length  I
            0    3     1  counters  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Counters;
    MethodParameters:
          Name  Flags
      length    
      counters  

  private static void checkLimits(java.lang.Object, int, java.lang.Object, int, int, org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters);
    descriptor: (Ljava/lang/Object;ILjava/lang/Object;IILorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Counters;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=6, args_size=6
        start local 0 // java.lang.Object src
        start local 1 // int srcPos
        start local 2 // java.lang.Object dest
        start local 3 // int destPos
        start local 4 // int length
        start local 5 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters counters
         0: .line 219
            dconst_0
            iload 1 /* srcPos */
            ifge 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack: double
         1: iconst_0
      StackMap locals: java.lang.Object int java.lang.Object int int org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters
      StackMap stack: double int
         2: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 5
         3: .line 220
            aload 5 /* counters */
            getfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters.checkAIOOBECounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
         4: .line 221
            getstatic jdk.vm.ci.meta.DeoptimizationAction.None:Ljdk/vm/ci/meta/DeoptimizationAction;
            getstatic jdk.vm.ci.meta.DeoptimizationReason.BoundsCheckException:Ljdk/vm/ci/meta/DeoptimizationReason;
            invokestatic org.graalvm.compiler.nodes.DeoptimizeNode.deopt:(Ljdk/vm/ci/meta/DeoptimizationAction;Ljdk/vm/ci/meta/DeoptimizationReason;)V
         5: .line 223
      StackMap locals:
      StackMap stack:
            dconst_0
            iload 3 /* destPos */
            ifge 6
            iconst_1
            goto 7
      StackMap locals:
      StackMap stack: double
         6: iconst_0
      StackMap locals: java.lang.Object int java.lang.Object int int org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters
      StackMap stack: double int
         7: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 10
         8: .line 224
            aload 5 /* counters */
            getfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters.checkAIOOBECounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
         9: .line 225
            getstatic jdk.vm.ci.meta.DeoptimizationAction.None:Ljdk/vm/ci/meta/DeoptimizationAction;
            getstatic jdk.vm.ci.meta.DeoptimizationReason.BoundsCheckException:Ljdk/vm/ci/meta/DeoptimizationReason;
            invokestatic org.graalvm.compiler.nodes.DeoptimizeNode.deopt:(Ljdk/vm/ci/meta/DeoptimizationAction;Ljdk/vm/ci/meta/DeoptimizationReason;)V
        10: .line 227
      StackMap locals:
      StackMap stack:
            dconst_0
            iload 4 /* length */
            ifge 11
            iconst_1
            goto 12
      StackMap locals:
      StackMap stack: double
        11: iconst_0
      StackMap locals: java.lang.Object int java.lang.Object int int org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters
      StackMap stack: double int
        12: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 15
        13: .line 228
            aload 5 /* counters */
            getfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters.checkAIOOBECounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        14: .line 229
            getstatic jdk.vm.ci.meta.DeoptimizationAction.None:Ljdk/vm/ci/meta/DeoptimizationAction;
            getstatic jdk.vm.ci.meta.DeoptimizationReason.BoundsCheckException:Ljdk/vm/ci/meta/DeoptimizationReason;
            invokestatic org.graalvm.compiler.nodes.DeoptimizeNode.deopt:(Ljdk/vm/ci/meta/DeoptimizationAction;Ljdk/vm/ci/meta/DeoptimizationReason;)V
        15: .line 231
      StackMap locals:
      StackMap stack:
            dconst_0
            iload 1 /* srcPos */
            aload 0 /* src */
            invokestatic org.graalvm.compiler.nodes.java.ArrayLengthNode.arrayLength:(Ljava/lang/Object;)I
            iload 4 /* length */
            isub
            if_icmple 16
            iconst_1
            goto 17
      StackMap locals:
      StackMap stack: double
        16: iconst_0
      StackMap locals: java.lang.Object int java.lang.Object int int org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters
      StackMap stack: double int
        17: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 20
        18: .line 232
            aload 5 /* counters */
            getfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters.checkAIOOBECounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        19: .line 233
            getstatic jdk.vm.ci.meta.DeoptimizationAction.None:Ljdk/vm/ci/meta/DeoptimizationAction;
            getstatic jdk.vm.ci.meta.DeoptimizationReason.BoundsCheckException:Ljdk/vm/ci/meta/DeoptimizationReason;
            invokestatic org.graalvm.compiler.nodes.DeoptimizeNode.deopt:(Ljdk/vm/ci/meta/DeoptimizationAction;Ljdk/vm/ci/meta/DeoptimizationReason;)V
        20: .line 235
      StackMap locals:
      StackMap stack:
            dconst_0
            iload 3 /* destPos */
            aload 2 /* dest */
            invokestatic org.graalvm.compiler.nodes.java.ArrayLengthNode.arrayLength:(Ljava/lang/Object;)I
            iload 4 /* length */
            isub
            if_icmple 21
            iconst_1
            goto 22
      StackMap locals:
      StackMap stack: double
        21: iconst_0
      StackMap locals: java.lang.Object int java.lang.Object int int org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters
      StackMap stack: double int
        22: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 25
        23: .line 236
            aload 5 /* counters */
            getfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters.checkAIOOBECounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        24: .line 237
            getstatic jdk.vm.ci.meta.DeoptimizationAction.None:Ljdk/vm/ci/meta/DeoptimizationAction;
            getstatic jdk.vm.ci.meta.DeoptimizationReason.BoundsCheckException:Ljdk/vm/ci/meta/DeoptimizationReason;
            invokestatic org.graalvm.compiler.nodes.DeoptimizeNode.deopt:(Ljdk/vm/ci/meta/DeoptimizationAction;Ljdk/vm/ci/meta/DeoptimizationReason;)V
        25: .line 239
      StackMap locals:
      StackMap stack:
            aload 5 /* counters */
            getfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters.checkSuccessCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        26: .line 240
            return
        end local 5 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters counters
        end local 4 // int length
        end local 3 // int destPos
        end local 2 // java.lang.Object dest
        end local 1 // int srcPos
        end local 0 // java.lang.Object src
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   27     0       src  Ljava/lang/Object;
            0   27     1    srcPos  I
            0   27     2      dest  Ljava/lang/Object;
            0   27     3   destPos  I
            0   27     4    length  I
            0   27     5  counters  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Counters;
    MethodParameters:
          Name  Flags
      src       
      srcPos    
      dest      
      destPos   
      length    
      counters  

  private void checkArrayTypes(java.lang.Object, java.lang.Object, org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets this
        start local 1 // java.lang.Object nonNullSrc
        start local 2 // java.lang.Object nonNullDest
        start local 3 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
         0: .line 243
            aload 3 /* arrayTypeCheck */
            getstatic org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck.NO_ARRAY_TYPE_CHECK:Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
            if_acmpeq 14
         1: .line 245
            aload 3 /* arrayTypeCheck */
            getstatic org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck.HUB_BASED_ARRAY_TYPE_CHECK:Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
            if_acmpne 7
         2: .line 246
            dconst_0
            aload 0 /* this */
            aload 1 /* nonNullSrc */
            aload 2 /* nonNullDest */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets.hubsEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
            ifeq 3
            iconst_0
            goto 4
      StackMap locals:
      StackMap stack: double
         3: iconst_1
      StackMap locals: org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets java.lang.Object java.lang.Object org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck
      StackMap stack: double int
         4: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 14
         5: .line 247
            getstatic jdk.vm.ci.meta.DeoptimizationAction.None:Ljdk/vm/ci/meta/DeoptimizationAction;
            getstatic jdk.vm.ci.meta.DeoptimizationReason.RuntimeConstraint:Ljdk/vm/ci/meta/DeoptimizationReason;
            invokestatic org.graalvm.compiler.nodes.DeoptimizeNode.deopt:(Ljdk/vm/ci/meta/DeoptimizationAction;Ljdk/vm/ci/meta/DeoptimizationReason;)V
         6: .line 249
            goto 14
      StackMap locals:
      StackMap stack:
         7: aload 3 /* arrayTypeCheck */
            getstatic org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck.LAYOUT_HELPER_BASED_ARRAY_TYPE_CHECK:Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
            if_acmpne 13
         8: .line 250
            dconst_0
            aload 0 /* this */
            aload 1 /* nonNullSrc */
            aload 2 /* nonNullDest */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets.layoutHelpersEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
            ifeq 9
            iconst_0
            goto 10
      StackMap locals:
      StackMap stack: double
         9: iconst_1
      StackMap locals: org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets java.lang.Object java.lang.Object org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck
      StackMap stack: double int
        10: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 14
        11: .line 251
            getstatic jdk.vm.ci.meta.DeoptimizationAction.None:Ljdk/vm/ci/meta/DeoptimizationAction;
            getstatic jdk.vm.ci.meta.DeoptimizationReason.RuntimeConstraint:Ljdk/vm/ci/meta/DeoptimizationReason;
            invokestatic org.graalvm.compiler.nodes.DeoptimizeNode.deopt:(Ljdk/vm/ci/meta/DeoptimizationAction;Ljdk/vm/ci/meta/DeoptimizationReason;)V
        12: .line 253
            goto 14
        13: .line 254
      StackMap locals:
      StackMap stack:
            iconst_0
            ldc "unknown array type check "
            aload 3 /* arrayTypeCheck */
            invokestatic org.graalvm.compiler.replacements.ReplacementsUtil.staticAssert:(ZLjava/lang/String;Ljava/lang/Object;)V
        14: .line 256
      StackMap locals:
      StackMap stack:
            return
        end local 3 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        end local 2 // java.lang.Object nonNullDest
        end local 1 // java.lang.Object nonNullSrc
        end local 0 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   15     0            this  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets;
            0   15     1      nonNullSrc  Ljava/lang/Object;
            0   15     2     nonNullDest  Ljava/lang/Object;
            0   15     3  arrayTypeCheck  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
    MethodParameters:
                Name  Flags
      nonNullSrc      
      nonNullDest     
      arrayTypeCheck  
}
SourceFile: "ArrayCopySnippets.java"
NestMembers:
  org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck  org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters  org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates
InnerClasses:
  public abstract ConstantParameter = org.graalvm.compiler.api.replacements.Snippet$ConstantParameter of org.graalvm.compiler.api.replacements.Snippet
  public abstract SnippetInfo = org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo of org.graalvm.compiler.replacements.SnippetTemplate
  private final ArrayCopyTypeCheck = org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck of org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets
  protected Counters = org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters of org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets
  public Templates = org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Templates of org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets