public class org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets 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.arraycopy.ArrayCopySnippets
  super_class: java.lang.Object
{
  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.arraycopy.ArrayCopySnippets this
         0: .line 93
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets;

  public static void arraycopyZeroLengthSnippet(java.lang.Object, int, java.lang.Object, int, int, org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck, org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters);
    descriptor: (Ljava/lang/Object;ILjava/lang/Object;IILorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$Counters;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=9, args_size=7
        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.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        start local 6 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters counters
         0: .line 109
            aload 0 /* src */
            invokestatic org.graalvm.compiler.api.directives.GraalDirectives.guardingNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 7 /* nonNullSrc */
        start local 7 // java.lang.Object nonNullSrc
         1: .line 110
            aload 2 /* dest */
            invokestatic org.graalvm.compiler.api.directives.GraalDirectives.guardingNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 8 /* nonNullDest */
        start local 8 // java.lang.Object nonNullDest
         2: .line 111
            aload 7 /* nonNullSrc */
            aload 8 /* nonNullDest */
            aload 5 /* arrayTypeCheck */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.checkArrayTypes:(Ljava/lang/Object;Ljava/lang/Object;Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;)V
         3: .line 112
            aload 7 /* nonNullSrc */
            iload 1 /* srcPos */
            aload 8 /* nonNullDest */
            iload 3 /* destPos */
            iload 4 /* length */
            aload 6 /* counters */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.checkLimits:(Ljava/lang/Object;ILjava/lang/Object;IILorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$Counters;)V
         4: .line 113
            aload 6 /* counters */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters.zeroLengthStaticCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
         5: .line 114
            return
        end local 8 // java.lang.Object nonNullDest
        end local 7 // java.lang.Object nonNullSrc
        end local 6 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters counters
        end local 5 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        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    6     0             src  Ljava/lang/Object;
            0    6     1          srcPos  I
            0    6     2            dest  Ljava/lang/Object;
            0    6     3         destPos  I
            0    6     4          length  I
            0    6     5  arrayTypeCheck  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
            0    6     6        counters  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$Counters;
            1    6     7      nonNullSrc  Ljava/lang/Object;
            2    6     8     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()
    MethodParameters:
                Name  Flags
      src             
      srcPos          
      dest            
      destPos         
      length          
      arrayTypeCheck  
      counters        

  public static void arraycopyExactSnippet(java.lang.Object, int, java.lang.Object, int, int, org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck, jdk.vm.ci.meta.JavaKind, org.graalvm.compiler.replacements.SnippetCounter, org.graalvm.compiler.replacements.SnippetCounter, org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters);
    descriptor: (Ljava/lang/Object;ILjava/lang/Object;IILorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;Ljdk/vm/ci/meta/JavaKind;Lorg/graalvm/compiler/replacements/SnippetCounter;Lorg/graalvm/compiler/replacements/SnippetCounter;Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$Counters;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=12, args_size=10
        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.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        start local 6 // jdk.vm.ci.meta.JavaKind elementKind
        start local 7 // org.graalvm.compiler.replacements.SnippetCounter elementKindCounter
        start local 8 // org.graalvm.compiler.replacements.SnippetCounter elementKindCopiedCounter
        start local 9 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters counters
         0: .line 120
            aload 0 /* 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 121
            aload 2 /* 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 122
            aload 10 /* nonNullSrc */
            aload 11 /* nonNullDest */
            aload 5 /* arrayTypeCheck */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.checkArrayTypes:(Ljava/lang/Object;Ljava/lang/Object;Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;)V
         3: .line 123
            aload 10 /* nonNullSrc */
            iload 1 /* srcPos */
            aload 11 /* nonNullDest */
            iload 3 /* destPos */
            iload 4 /* length */
            aload 9 /* counters */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.checkLimits:(Ljava/lang/Object;ILjava/lang/Object;IILorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$Counters;)V
         4: .line 124
            iload 4 /* length */
            aload 9 /* counters */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.incrementLengthCounter:(ILorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$Counters;)V
         5: .line 126
            aload 7 /* elementKindCounter */
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
         6: .line 127
            aload 8 /* elementKindCopiedCounter */
            iload 4 /* length */
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.add:(I)V
         7: .line 128
            aload 10 /* nonNullSrc */
            iload 1 /* srcPos */
            aload 11 /* nonNullDest */
            iload 3 /* destPos */
            iload 4 /* length */
            aload 6 /* elementKind */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyCallNode.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;IILjdk/vm/ci/meta/JavaKind;)V
         8: .line 129
            return
        end local 11 // java.lang.Object nonNullDest
        end local 10 // java.lang.Object nonNullSrc
        end local 9 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters counters
        end local 8 // org.graalvm.compiler.replacements.SnippetCounter elementKindCopiedCounter
        end local 7 // org.graalvm.compiler.replacements.SnippetCounter elementKindCounter
        end local 6 // jdk.vm.ci.meta.JavaKind elementKind
        end local 5 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        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    9     0                       src  Ljava/lang/Object;
            0    9     1                    srcPos  I
            0    9     2                      dest  Ljava/lang/Object;
            0    9     3                   destPos  I
            0    9     4                    length  I
            0    9     5            arrayTypeCheck  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
            0    9     6               elementKind  Ljdk/vm/ci/meta/JavaKind;
            0    9     7        elementKindCounter  Lorg/graalvm/compiler/replacements/SnippetCounter;
            0    9     8  elementKindCopiedCounter  Lorg/graalvm/compiler/replacements/SnippetCounter;
            0    9     9                  counters  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$Counters;
            1    9    10                nonNullSrc  Ljava/lang/Object;
            2    9    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()
      9:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
    MethodParameters:
                          Name  Flags
      src                       
      srcPos                    
      dest                      
      destPos                   
      length                    
      arrayTypeCheck            
      elementKind               
      elementKindCounter        
      elementKindCopiedCounter  
      counters                  

  public static void arraycopyUnrolledSnippet(java.lang.Object, int, java.lang.Object, int, int, org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck, jdk.vm.ci.meta.JavaKind, int, org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters);
    descriptor: (Ljava/lang/Object;ILjava/lang/Object;IILorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;Ljdk/vm/ci/meta/JavaKind;ILorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$Counters;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=11, args_size=9
        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.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        start local 6 // jdk.vm.ci.meta.JavaKind elementKind
        start local 7 // int unrolledLength
        start local 8 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters counters
         0: .line 134
            aload 0 /* src */
            invokestatic org.graalvm.compiler.api.directives.GraalDirectives.guardingNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 9 /* nonNullSrc */
        start local 9 // java.lang.Object nonNullSrc
         1: .line 135
            aload 2 /* dest */
            invokestatic org.graalvm.compiler.api.directives.GraalDirectives.guardingNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 10 /* nonNullDest */
        start local 10 // java.lang.Object nonNullDest
         2: .line 136
            aload 9 /* nonNullSrc */
            aload 10 /* nonNullDest */
            aload 5 /* arrayTypeCheck */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.checkArrayTypes:(Ljava/lang/Object;Ljava/lang/Object;Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;)V
         3: .line 137
            aload 9 /* nonNullSrc */
            iload 1 /* srcPos */
            aload 10 /* nonNullDest */
            iload 3 /* destPos */
            iload 4 /* length */
            aload 8 /* counters */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.checkLimits:(Ljava/lang/Object;ILjava/lang/Object;IILorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$Counters;)V
         4: .line 138
            iload 4 /* length */
            aload 8 /* counters */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.incrementLengthCounter:(ILorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$Counters;)V
         5: .line 140
            aload 9 /* nonNullSrc */
            iload 1 /* srcPos */
            aload 10 /* nonNullDest */
            iload 3 /* destPos */
            iload 7 /* unrolledLength */
            aload 6 /* elementKind */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.unrolledArraycopyWork:(Ljava/lang/Object;ILjava/lang/Object;IILjdk/vm/ci/meta/JavaKind;)V
         6: .line 141
            return
        end local 10 // java.lang.Object nonNullDest
        end local 9 // java.lang.Object nonNullSrc
        end local 8 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters counters
        end local 7 // int unrolledLength
        end local 6 // jdk.vm.ci.meta.JavaKind elementKind
        end local 5 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        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    7     0             src  Ljava/lang/Object;
            0    7     1          srcPos  I
            0    7     2            dest  Ljava/lang/Object;
            0    7     3         destPos  I
            0    7     4          length  I
            0    7     5  arrayTypeCheck  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
            0    7     6     elementKind  Ljdk/vm/ci/meta/JavaKind;
            0    7     7  unrolledLength  I
            0    7     8        counters  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$Counters;
            1    7     9      nonNullSrc  Ljava/lang/Object;
            2    7    10     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  
      elementKind     
      unrolledLength  
      counters        

  public static void arraycopyCheckcastSnippet(java.lang.Object, int, java.lang.Object, int, int, org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck, org.graalvm.compiler.hotspot.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/hotspot/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$Counters;Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;Ljdk/vm/ci/meta/JavaKind;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=11, args_size=9
        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.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        start local 6 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters counters
        start local 7 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo workSnippet
        start local 8 // jdk.vm.ci.meta.JavaKind elementKind
         0: .line 146
            aload 0 /* src */
            invokestatic org.graalvm.compiler.api.directives.GraalDirectives.guardingNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 9 /* nonNullSrc */
        start local 9 // java.lang.Object nonNullSrc
         1: .line 147
            aload 2 /* dest */
            invokestatic org.graalvm.compiler.api.directives.GraalDirectives.guardingNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 10 /* nonNullDest */
        start local 10 // java.lang.Object nonNullDest
         2: .line 148
            aload 9 /* nonNullSrc */
            aload 10 /* nonNullDest */
            aload 5 /* arrayTypeCheck */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.checkArrayTypes:(Ljava/lang/Object;Ljava/lang/Object;Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;)V
         3: .line 149
            aload 9 /* nonNullSrc */
            iload 1 /* srcPos */
            aload 10 /* nonNullDest */
            iload 3 /* destPos */
            iload 4 /* length */
            aload 6 /* counters */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.checkLimits:(Ljava/lang/Object;ILjava/lang/Object;IILorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$Counters;)V
         4: .line 150
            iload 4 /* length */
            aload 6 /* counters */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.incrementLengthCounter:(ILorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$Counters;)V
         5: .line 152
            aload 9 /* nonNullSrc */
            iload 1 /* srcPos */
            aload 10 /* nonNullDest */
            iload 3 /* destPos */
            iload 4 /* length */
            aload 7 /* workSnippet */
            aload 8 /* elementKind */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyWithSlowPathNode.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;IILorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;Ljdk/vm/ci/meta/JavaKind;)V
         6: .line 153
            return
        end local 10 // java.lang.Object nonNullDest
        end local 9 // java.lang.Object nonNullSrc
        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.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters counters
        end local 5 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        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    7     0             src  Ljava/lang/Object;
            0    7     1          srcPos  I
            0    7     2            dest  Ljava/lang/Object;
            0    7     3         destPos  I
            0    7     4          length  I
            0    7     5  arrayTypeCheck  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
            0    7     6        counters  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$Counters;
            0    7     7     workSnippet  Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            0    7     8     elementKind  Ljdk/vm/ci/meta/JavaKind;
            1    7     9      nonNullSrc  Ljava/lang/Object;
            2    7    10     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 arraycopyGenericSnippet(java.lang.Object, int, java.lang.Object, int, int, org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck, org.graalvm.compiler.hotspot.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/hotspot/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$Counters;Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;Ljdk/vm/ci/meta/JavaKind;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=11, args_size=9
        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.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        start local 6 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters counters
        start local 7 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo workSnippet
        start local 8 // jdk.vm.ci.meta.JavaKind elementKind
         0: .line 158
            aload 0 /* src */
            invokestatic org.graalvm.compiler.api.directives.GraalDirectives.guardingNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 9 /* nonNullSrc */
        start local 9 // java.lang.Object nonNullSrc
         1: .line 159
            aload 2 /* dest */
            invokestatic org.graalvm.compiler.api.directives.GraalDirectives.guardingNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 10 /* nonNullDest */
        start local 10 // java.lang.Object nonNullDest
         2: .line 160
            aload 9 /* nonNullSrc */
            aload 10 /* nonNullDest */
            aload 5 /* arrayTypeCheck */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.checkArrayTypes:(Ljava/lang/Object;Ljava/lang/Object;Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;)V
         3: .line 161
            aload 9 /* nonNullSrc */
            iload 1 /* srcPos */
            aload 10 /* nonNullDest */
            iload 3 /* destPos */
            iload 4 /* length */
            aload 6 /* counters */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.checkLimits:(Ljava/lang/Object;ILjava/lang/Object;IILorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$Counters;)V
         4: .line 162
            iload 4 /* length */
            aload 6 /* counters */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.incrementLengthCounter:(ILorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$Counters;)V
         5: .line 164
            aload 9 /* nonNullSrc */
            iload 1 /* srcPos */
            aload 10 /* nonNullDest */
            iload 3 /* destPos */
            iload 4 /* length */
            aload 7 /* workSnippet */
            aload 8 /* elementKind */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyWithSlowPathNode.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;IILorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;Ljdk/vm/ci/meta/JavaKind;)V
         6: .line 165
            return
        end local 10 // java.lang.Object nonNullDest
        end local 9 // java.lang.Object nonNullSrc
        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.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters counters
        end local 5 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        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    7     0             src  Ljava/lang/Object;
            0    7     1          srcPos  I
            0    7     2            dest  Ljava/lang/Object;
            0    7     3         destPos  I
            0    7     4          length  I
            0    7     5  arrayTypeCheck  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
            0    7     6        counters  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$Counters;
            0    7     7     workSnippet  Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            0    7     8     elementKind  Ljdk/vm/ci/meta/JavaKind;
            1    7     9      nonNullSrc  Ljava/lang/Object;
            2    7    10     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.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters);
    descriptor: (Ljava/lang/Object;ILjava/lang/Object;IILorg/graalvm/compiler/hotspot/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.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters counters
         0: .line 170
            iload 4 /* length */
            aload 5 /* counters */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.incrementLengthCounter:(ILorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$Counters;)V
         1: .line 171
            aload 5 /* counters */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters.systemArraycopyCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
         2: .line 172
            aload 5 /* counters */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters.systemArraycopyCopiedCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            iload 4 /* length */
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.add:(I)V
         3: .line 174
            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 175
            return
        end local 5 // org.graalvm.compiler.hotspot.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/hotspot/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  

  static jdk.internal.vm.compiler.word.LocationIdentity getArrayLocation(jdk.vm.ci.meta.JavaKind);
    descriptor: (Ljdk/vm/ci/meta/JavaKind;)Ljdk/internal/vm/compiler/word/LocationIdentity;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.vm.ci.meta.JavaKind kind
         0: .line 179
            aload 0 /* kind */
            invokestatic org.graalvm.compiler.nodes.NamedLocationIdentity.getArrayLocation:(Ljdk/vm/ci/meta/JavaKind;)Ljdk/internal/vm/compiler/word/LocationIdentity;
            areturn
        end local 0 // jdk.vm.ci.meta.JavaKind kind
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  kind  Ljdk/vm/ci/meta/JavaKind;
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.Fold()
    MethodParameters:
      Name  Flags
      kind  

  private static void unrolledArraycopyWork(java.lang.Object, int, java.lang.Object, int, int, jdk.vm.ci.meta.JavaKind);
    descriptor: (Ljava/lang/Object;ILjava/lang/Object;IILjdk/vm/ci/meta/JavaKind;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=7, locals=19, args_size=6
        start local 0 // java.lang.Object nonNullSrc
        start local 1 // int srcPos
        start local 2 // java.lang.Object nonNullDest
        start local 3 // int destPos
        start local 4 // int length
        start local 5 // jdk.vm.ci.meta.JavaKind elementKind
         0: .line 183
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfigBase.INJECTED_METAACCESS:Ljdk/vm/ci/meta/MetaAccessProvider;
            aload 5 /* elementKind */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.arrayIndexScale:(Ljdk/vm/ci/meta/MetaAccessProvider;Ljdk/vm/ci/meta/JavaKind;)I
            istore 6 /* scale */
        start local 6 // int scale
         1: .line 184
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfigBase.INJECTED_METAACCESS:Ljdk/vm/ci/meta/MetaAccessProvider;
            aload 5 /* elementKind */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.getArrayBaseOffset:(Ljdk/vm/ci/meta/MetaAccessProvider;Ljdk/vm/ci/meta/JavaKind;)I
            istore 7 /* arrayBaseOffset */
        start local 7 // int arrayBaseOffset
         2: .line 185
            aload 5 /* elementKind */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.getArrayLocation:(Ljdk/vm/ci/meta/JavaKind;)Ljdk/internal/vm/compiler/word/LocationIdentity;
            astore 8 /* arrayLocation */
        start local 8 // jdk.internal.vm.compiler.word.LocationIdentity arrayLocation
         3: .line 187
            iload 7 /* arrayBaseOffset */
            i2l
            iload 1 /* srcPos */
            i2l
            iload 6 /* scale */
            i2l
            lmul
            ladd
            lstore 9 /* sourceOffset */
        start local 9 // long sourceOffset
         4: .line 188
            iload 7 /* arrayBaseOffset */
            i2l
            iload 3 /* destPos */
            i2l
            iload 6 /* scale */
            i2l
            lmul
            ladd
            lstore 11 /* destOffset */
        start local 11 // long destOffset
         5: .line 189
            lconst_0
            lstore 13 /* position */
        start local 13 // long position
         6: .line 190
            iload 6 /* scale */
            i2l
            lstore 15 /* delta */
        start local 15 // long delta
         7: .line 191
            ldc 0.09999999999999998
            aload 0 /* nonNullSrc */
            aload 2 /* nonNullDest */
            if_acmpne 8
            iload 1 /* srcPos */
            iload 3 /* destPos */
            if_icmpge 8
            iconst_1
            goto 9
      StackMap locals: java.lang.Object int java.lang.Object int int jdk.vm.ci.meta.JavaKind int int jdk.internal.vm.compiler.word.LocationIdentity long long long long
      StackMap stack: double
         8: iconst_0
      StackMap locals: java.lang.Object int java.lang.Object int int jdk.vm.ci.meta.JavaKind int int jdk.internal.vm.compiler.word.LocationIdentity long long long long
      StackMap stack: double int
         9: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 12
        10: .line 193
            iload 4 /* length */
            iconst_1
            isub
            i2l
            iload 6 /* scale */
            i2l
            lmul
            lstore 13 /* position */
        11: .line 194
            lload 15 /* delta */
            lneg
            lstore 15 /* delta */
        12: .line 198
      StackMap locals:
      StackMap stack:
            invokestatic org.graalvm.compiler.replacements.nodes.ExplodeLoopNode.explodeLoop:()V
        13: .line 199
            iconst_0
            istore 17 /* iteration */
        start local 17 // int iteration
        14: goto 19
        15: .line 200
      StackMap locals: int
      StackMap stack:
            aload 0 /* nonNullSrc */
            lload 9 /* sourceOffset */
            lload 13 /* position */
            ladd
            aload 5 /* elementKind */
            aload 8 /* arrayLocation */
            invokestatic org.graalvm.compiler.nodes.extended.RawLoadNode.load:(Ljava/lang/Object;JLjdk/vm/ci/meta/JavaKind;Ljdk/internal/vm/compiler/word/LocationIdentity;)Ljava/lang/Object;
            astore 18 /* value */
        start local 18 // java.lang.Object value
        16: .line 201
            aload 2 /* nonNullDest */
            lload 11 /* destOffset */
            lload 13 /* position */
            ladd
            aload 18 /* value */
            aload 5 /* elementKind */
            aload 8 /* arrayLocation */
            iconst_0
            invokestatic org.graalvm.compiler.nodes.extended.RawStoreNode.storeObject:(Ljava/lang/Object;JLjava/lang/Object;Ljdk/vm/ci/meta/JavaKind;Ljdk/internal/vm/compiler/word/LocationIdentity;Z)Ljava/lang/Object;
            pop
        17: .line 202
            lload 13 /* position */
            lload 15 /* delta */
            ladd
            lstore 13 /* position */
        end local 18 // java.lang.Object value
        18: .line 199
            iinc 17 /* iteration */ 1
      StackMap locals:
      StackMap stack:
        19: iload 17 /* iteration */
            iload 4 /* length */
            if_icmplt 15
        end local 17 // int iteration
        20: .line 204
            return
        end local 15 // long delta
        end local 13 // long position
        end local 11 // long destOffset
        end local 9 // long sourceOffset
        end local 8 // jdk.internal.vm.compiler.word.LocationIdentity arrayLocation
        end local 7 // int arrayBaseOffset
        end local 6 // int scale
        end local 5 // jdk.vm.ci.meta.JavaKind elementKind
        end local 4 // int length
        end local 3 // int destPos
        end local 2 // java.lang.Object nonNullDest
        end local 1 // int srcPos
        end local 0 // java.lang.Object nonNullSrc
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   21     0       nonNullSrc  Ljava/lang/Object;
            0   21     1           srcPos  I
            0   21     2      nonNullDest  Ljava/lang/Object;
            0   21     3          destPos  I
            0   21     4           length  I
            0   21     5      elementKind  Ljdk/vm/ci/meta/JavaKind;
            1   21     6            scale  I
            2   21     7  arrayBaseOffset  I
            3   21     8    arrayLocation  Ljdk/internal/vm/compiler/word/LocationIdentity;
            4   21     9     sourceOffset  J
            5   21    11       destOffset  J
            6   21    13         position  J
            7   21    15            delta  J
           14   20    17        iteration  I
           16   18    18            value  Ljava/lang/Object;
    MethodParameters:
             Name  Flags
      nonNullSrc   
      srcPos       
      nonNullDest  
      destPos      
      length       
      elementKind  

  public static void checkcastArraycopyWithSlowPathWork(java.lang.Object, int, java.lang.Object, int, int, org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters);
    descriptor: (Ljava/lang/Object;ILjava/lang/Object;IILorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$Counters;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=8, locals=13, 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.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters counters
         0: .line 208
            ldc 0.9
            iload 4 /* length */
            ifle 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.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters
      StackMap stack: double int
         2: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 24
         3: .line 209
            aload 0 /* src */
            invokestatic org.graalvm.compiler.nodes.PiNode.asNonNullObject:(Ljava/lang/Object;)Ljava/lang/Class;
            astore 6 /* nonNullSrc */
        start local 6 // java.lang.Object nonNullSrc
         4: .line 210
            aload 2 /* dest */
            invokestatic org.graalvm.compiler.nodes.PiNode.asNonNullObject:(Ljava/lang/Object;)Ljava/lang/Class;
            astore 7 /* nonNullDest */
        start local 7 // java.lang.Object nonNullDest
         5: .line 211
            aload 6 /* nonNullSrc */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.loadHub:(Ljava/lang/Object;)Lorg/graalvm/compiler/hotspot/word/KlassPointer;
            astore 8 /* srcKlass */
        start local 8 // org.graalvm.compiler.hotspot.word.KlassPointer srcKlass
         6: .line 212
            aload 7 /* nonNullDest */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.loadHub:(Ljava/lang/Object;)Lorg/graalvm/compiler/hotspot/word/KlassPointer;
            astore 9 /* destKlass */
        start local 9 // org.graalvm.compiler.hotspot.word.KlassPointer destKlass
         7: .line 213
            ldc 0.6
            aload 8 /* srcKlass */
            aload 9 /* destKlass */
            if_acmpne 8
            iconst_1
            goto 9
      StackMap locals: java.lang.Object int java.lang.Object int int org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters java.lang.Object java.lang.Object org.graalvm.compiler.hotspot.word.KlassPointer org.graalvm.compiler.hotspot.word.KlassPointer
      StackMap stack: double
         8: iconst_0
      StackMap locals: java.lang.Object int java.lang.Object int int org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters java.lang.Object java.lang.Object org.graalvm.compiler.hotspot.word.KlassPointer org.graalvm.compiler.hotspot.word.KlassPointer
      StackMap stack: double int
         9: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 14
        10: .line 215
            aload 5 /* counters */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters.objectCheckcastSameTypeCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        11: .line 216
            aload 5 /* counters */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters.objectCheckcastSameTypeCopiedCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            iload 4 /* length */
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.add:(I)V
        12: .line 217
            aload 6 /* nonNullSrc */
            iload 1 /* srcPos */
            aload 7 /* nonNullDest */
            iload 3 /* destPos */
            iload 4 /* length */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyCallNode.arraycopyObjectKillsAny:(Ljava/lang/Object;ILjava/lang/Object;II)V
        13: .line 218
            goto 24
        14: .line 219
      StackMap locals:
      StackMap stack:
            aload 9 /* destKlass */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfigBase.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.arrayClassElementOffset:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            getstatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.OBJ_ARRAY_KLASS_ELEMENT_KLASS_LOCATION:Ljdk/internal/vm/compiler/word/LocationIdentity;
            invokevirtual org.graalvm.compiler.hotspot.word.KlassPointer.readKlassPointer:(ILjdk/internal/vm/compiler/word/LocationIdentity;)Lorg/graalvm/compiler/hotspot/word/KlassPointer;
            astore 10 /* destElemKlass */
        start local 10 // org.graalvm.compiler.hotspot.word.KlassPointer destElemKlass
        15: .line 220
            aload 10 /* destElemKlass */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfigBase.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.superCheckOffsetOffset:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            getstatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.KLASS_SUPER_CHECK_OFFSET_LOCATION:Ljdk/internal/vm/compiler/word/LocationIdentity;
            invokevirtual org.graalvm.compiler.hotspot.word.KlassPointer.readInt:(ILjdk/internal/vm/compiler/word/LocationIdentity;)I
            invokestatic jdk.internal.vm.compiler.word.WordFactory.signed:(I)Ljdk/internal/vm/compiler/word/SignedWord;
            checkcast org.graalvm.compiler.word.Word
            astore 11 /* superCheckOffset */
        start local 11 // org.graalvm.compiler.word.Word superCheckOffset
        16: .line 222
            aload 5 /* counters */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters.objectCheckcastDifferentTypeCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        17: .line 223
            aload 5 /* counters */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters.objectCheckcastDifferentTypeCopiedCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            iload 4 /* length */
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.add:(I)V
        18: .line 225
            aload 6 /* nonNullSrc */
            iload 1 /* srcPos */
            aload 7 /* nonNullDest */
            iload 3 /* destPos */
            iload 4 /* length */
            aload 11 /* superCheckOffset */
            aload 10 /* destElemKlass */
            iconst_0
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.CheckcastArrayCopyCallNode.checkcastArraycopy:(Ljava/lang/Object;ILjava/lang/Object;IILorg/graalvm/compiler/word/Word;Ljava/lang/Object;Z)I
            istore 12 /* copiedElements */
        start local 12 // int copiedElements
        19: .line 226
            ldc 0.010000000000000009
            iload 12 /* copiedElements */
            ifeq 20
            iconst_1
            goto 21
      StackMap locals: java.lang.Object int java.lang.Object int int org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters java.lang.Object java.lang.Object org.graalvm.compiler.hotspot.word.KlassPointer org.graalvm.compiler.hotspot.word.KlassPointer org.graalvm.compiler.hotspot.word.KlassPointer org.graalvm.compiler.word.Word int
      StackMap stack: double
        20: iconst_0
      StackMap locals: java.lang.Object int java.lang.Object int int org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters java.lang.Object java.lang.Object org.graalvm.compiler.hotspot.word.KlassPointer org.graalvm.compiler.hotspot.word.KlassPointer org.graalvm.compiler.hotspot.word.KlassPointer org.graalvm.compiler.word.Word int
      StackMap stack: double int
        21: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 24
        22: .line 231
            iload 12 /* copiedElements */
            iconst_m1
            ixor
            istore 12 /* copiedElements */
        23: .line 232
            aload 6 /* nonNullSrc */
            iload 1 /* srcPos */
            iload 12 /* copiedElements */
            iadd
            aload 7 /* nonNullDest */
            iload 3 /* destPos */
            iload 12 /* copiedElements */
            iadd
            iload 4 /* length */
            iload 12 /* copiedElements */
            isub
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        end local 12 // int copiedElements
        end local 11 // org.graalvm.compiler.word.Word superCheckOffset
        end local 10 // org.graalvm.compiler.hotspot.word.KlassPointer destElemKlass
        end local 9 // org.graalvm.compiler.hotspot.word.KlassPointer destKlass
        end local 8 // org.graalvm.compiler.hotspot.word.KlassPointer srcKlass
        end local 7 // java.lang.Object nonNullDest
        end local 6 // java.lang.Object nonNullSrc
        24: .line 236
      StackMap locals: java.lang.Object int java.lang.Object int int org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters
      StackMap stack:
            return
        end local 5 // org.graalvm.compiler.hotspot.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   25     0               src  Ljava/lang/Object;
            0   25     1            srcPos  I
            0   25     2              dest  Ljava/lang/Object;
            0   25     3           destPos  I
            0   25     4            length  I
            0   25     5          counters  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$Counters;
            4   24     6        nonNullSrc  Ljava/lang/Object;
            5   24     7       nonNullDest  Ljava/lang/Object;
            6   24     8          srcKlass  Lorg/graalvm/compiler/hotspot/word/KlassPointer;
            7   24     9         destKlass  Lorg/graalvm/compiler/hotspot/word/KlassPointer;
           15   24    10     destElemKlass  Lorg/graalvm/compiler/hotspot/word/KlassPointer;
           16   24    11  superCheckOffset  Lorg/graalvm/compiler/word/Word;
           19   24    12    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()
    MethodParameters:
          Name  Flags
      src       
      srcPos    
      dest      
      destPos   
      length    
      counters  

  public static void genericArraycopyWithSlowPathWork(java.lang.Object, int, java.lang.Object, int, int, org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters);
    descriptor: (Ljava/lang/Object;ILjava/lang/Object;IILorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$Counters;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=7, 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.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters counters
         0: .line 242
            aload 5 /* counters */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters.genericArraycopyDifferentTypeCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
         1: .line 243
            aload 5 /* counters */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters.genericArraycopyDifferentTypeCopiedCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            iload 4 /* length */
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.add:(I)V
         2: .line 244
            aload 0 /* src */
            iload 1 /* srcPos */
            aload 2 /* dest */
            iload 3 /* destPos */
            iload 4 /* length */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.GenericArrayCopyCallNode.genericArraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)I
            istore 6 /* copiedElements */
        start local 6 // int copiedElements
         3: .line 245
            ldc 0.010000000000000009
            iload 6 /* copiedElements */
            ifeq 4
            iconst_1
            goto 5
      StackMap locals: java.lang.Object int java.lang.Object int int org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters int
      StackMap stack: double
         4: iconst_0
      StackMap locals: java.lang.Object int java.lang.Object int int org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters int
      StackMap stack: double int
         5: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 8
         6: .line 250
            iload 6 /* copiedElements */
            iconst_m1
            ixor
            istore 6 /* copiedElements */
         7: .line 251
            aload 0 /* src */
            iload 1 /* srcPos */
            iload 6 /* copiedElements */
            iadd
            aload 2 /* dest */
            iload 3 /* destPos */
            iload 6 /* copiedElements */
            iadd
            iload 4 /* length */
            iload 6 /* copiedElements */
            isub
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         8: .line 253
      StackMap locals:
      StackMap stack:
            return
        end local 6 // int copiedElements
        end local 5 // org.graalvm.compiler.hotspot.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    9     0             src  Ljava/lang/Object;
            0    9     1          srcPos  I
            0    9     2            dest  Ljava/lang/Object;
            0    9     3         destPos  I
            0    9     4          length  I
            0    9     5        counters  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$Counters;
            3    9     6  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()
    MethodParameters:
          Name  Flags
      src       
      srcPos    
      dest      
      destPos   
      length    
      counters  

  private static void incrementLengthCounter(int, org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters);
    descriptor: (ILorg/graalvm/compiler/hotspot/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.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters counters
         0: .line 256
            aload 1 /* counters */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters.lengthHistogram:Lorg/graalvm/compiler/replacements/SnippetIntegerHistogram;
            iload 0 /* length */
            i2l
            invokevirtual org.graalvm.compiler.replacements.SnippetIntegerHistogram.inc:(J)V
         1: .line 257
            return
        end local 1 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters counters
        end local 0 // int length
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0    length  I
            0    2     1  counters  Lorg/graalvm/compiler/hotspot/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.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters);
    descriptor: (Ljava/lang/Object;ILjava/lang/Object;IILorg/graalvm/compiler/hotspot/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.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters counters
         0: .line 260
            ldc 0.010000000000000009
            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.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters
      StackMap stack: double int
         2: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifne 15
         3: .line 261
            ldc 0.010000000000000009
            iload 3 /* destPos */
            ifge 4
            iconst_1
            goto 5
      StackMap locals:
      StackMap stack: double
         4: iconst_0
      StackMap locals: java.lang.Object int java.lang.Object int int org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters
      StackMap stack: double int
         5: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifne 15
         6: .line 262
            ldc 0.010000000000000009
            iload 4 /* length */
            ifge 7
            iconst_1
            goto 8
      StackMap locals:
      StackMap stack: double
         7: iconst_0
      StackMap locals: java.lang.Object int java.lang.Object int int org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters
      StackMap stack: double int
         8: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifne 15
         9: .line 263
            ldc 0.010000000000000009
            iload 1 /* srcPos */
            aload 0 /* src */
            invokestatic org.graalvm.compiler.nodes.java.ArrayLengthNode.arrayLength:(Ljava/lang/Object;)I
            iload 4 /* length */
            isub
            if_icmple 10
            iconst_1
            goto 11
      StackMap locals:
      StackMap stack: double
        10: iconst_0
      StackMap locals: java.lang.Object int java.lang.Object int int org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters
      StackMap stack: double int
        11: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifne 15
        12: .line 264
            ldc 0.010000000000000009
            iload 3 /* destPos */
            aload 2 /* dest */
            invokestatic org.graalvm.compiler.nodes.java.ArrayLengthNode.arrayLength:(Ljava/lang/Object;)I
            iload 4 /* length */
            isub
            if_icmple 13
            iconst_1
            goto 14
      StackMap locals:
      StackMap stack: double
        13: iconst_0
      StackMap locals: java.lang.Object int java.lang.Object int int org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters
      StackMap stack: double int
        14: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 17
        15: .line 265
      StackMap locals:
      StackMap stack:
            aload 5 /* counters */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters.checkAIOOBECounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        16: .line 266
            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
        17: .line 268
      StackMap locals:
      StackMap stack:
            aload 5 /* counters */
            getfield org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters.checkSuccessCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        18: .line 269
            return
        end local 5 // org.graalvm.compiler.hotspot.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   19     0       src  Ljava/lang/Object;
            0   19     1    srcPos  I
            0   19     2      dest  Ljava/lang/Object;
            0   19     3   destPos  I
            0   19     4    length  I
            0   19     5  counters  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$Counters;
    MethodParameters:
          Name  Flags
      src       
      srcPos    
      dest      
      destPos   
      length    
      counters  

  private static void checkArrayTypes(java.lang.Object, java.lang.Object, org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // java.lang.Object nonNullSrc
        start local 1 // java.lang.Object nonNullDest
        start local 2 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
         0: .line 272
            aload 2 /* arrayTypeCheck */
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck.NO_ARRAY_TYPE_CHECK:Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
            if_acmpeq 18
         1: .line 274
            aload 2 /* arrayTypeCheck */
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck.HUB_BASED_ARRAY_TYPE_CHECK:Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
            if_acmpne 9
         2: .line 275
            aload 0 /* nonNullSrc */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.loadHub:(Ljava/lang/Object;)Lorg/graalvm/compiler/hotspot/word/KlassPointer;
            astore 3 /* srcHub */
        start local 3 // org.graalvm.compiler.hotspot.word.KlassPointer srcHub
         3: .line 276
            aload 1 /* nonNullDest */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.loadHub:(Ljava/lang/Object;)Lorg/graalvm/compiler/hotspot/word/KlassPointer;
            astore 4 /* destHub */
        start local 4 // org.graalvm.compiler.hotspot.word.KlassPointer destHub
         4: .line 277
            ldc 0.010000000000000009
            aload 3 /* srcHub */
            aload 4 /* destHub */
            if_acmpeq 5
            iconst_1
            goto 6
      StackMap locals: java.lang.Object java.lang.Object org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck org.graalvm.compiler.hotspot.word.KlassPointer org.graalvm.compiler.hotspot.word.KlassPointer
      StackMap stack: double
         5: iconst_0
      StackMap locals: java.lang.Object java.lang.Object org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck org.graalvm.compiler.hotspot.word.KlassPointer org.graalvm.compiler.hotspot.word.KlassPointer
      StackMap stack: double int
         6: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 18
         7: .line 278
            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
        end local 4 // org.graalvm.compiler.hotspot.word.KlassPointer destHub
        end local 3 // org.graalvm.compiler.hotspot.word.KlassPointer srcHub
         8: .line 280
            goto 18
      StackMap locals:
      StackMap stack:
         9: aload 2 /* arrayTypeCheck */
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck.LAYOUT_HELPER_BASED_ARRAY_TYPE_CHECK:Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
            if_acmpne 17
        10: .line 281
            aload 0 /* nonNullSrc */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.loadHub:(Ljava/lang/Object;)Lorg/graalvm/compiler/hotspot/word/KlassPointer;
            astore 3 /* srcHub */
        start local 3 // org.graalvm.compiler.hotspot.word.KlassPointer srcHub
        11: .line 282
            aload 1 /* nonNullDest */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.loadHub:(Ljava/lang/Object;)Lorg/graalvm/compiler/hotspot/word/KlassPointer;
            astore 4 /* destHub */
        start local 4 // org.graalvm.compiler.hotspot.word.KlassPointer destHub
        12: .line 283
            ldc 0.010000000000000009
            aload 3 /* srcHub */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.readLayoutHelper:(Lorg/graalvm/compiler/hotspot/word/KlassPointer;)I
            aload 4 /* destHub */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.readLayoutHelper:(Lorg/graalvm/compiler/hotspot/word/KlassPointer;)I
            if_icmpeq 13
            iconst_1
            goto 14
      StackMap locals: java.lang.Object java.lang.Object org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck org.graalvm.compiler.hotspot.word.KlassPointer org.graalvm.compiler.hotspot.word.KlassPointer
      StackMap stack: double
        13: iconst_0
      StackMap locals: java.lang.Object java.lang.Object org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck org.graalvm.compiler.hotspot.word.KlassPointer org.graalvm.compiler.hotspot.word.KlassPointer
      StackMap stack: double int
        14: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 18
        15: .line 284
            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
        end local 4 // org.graalvm.compiler.hotspot.word.KlassPointer destHub
        end local 3 // org.graalvm.compiler.hotspot.word.KlassPointer srcHub
        16: .line 286
            goto 18
        17: .line 287
      StackMap locals:
      StackMap stack:
            iconst_0
            ldc "unknown array type check"
            invokestatic org.graalvm.compiler.replacements.ReplacementsUtil.staticAssert:(ZLjava/lang/String;)V
        18: .line 289
      StackMap locals:
      StackMap stack:
            return
        end local 2 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck arrayTypeCheck
        end local 1 // java.lang.Object nonNullDest
        end local 0 // java.lang.Object nonNullSrc
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   19     0      nonNullSrc  Ljava/lang/Object;
            0   19     1     nonNullDest  Ljava/lang/Object;
            0   19     2  arrayTypeCheck  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/ArrayCopySnippets$ArrayCopyTypeCheck;
            3    8     3          srcHub  Lorg/graalvm/compiler/hotspot/word/KlassPointer;
            4    8     4         destHub  Lorg/graalvm/compiler/hotspot/word/KlassPointer;
           11   16     3          srcHub  Lorg/graalvm/compiler/hotspot/word/KlassPointer;
           12   16     4         destHub  Lorg/graalvm/compiler/hotspot/word/KlassPointer;
    MethodParameters:
                Name  Flags
      nonNullSrc      
      nonNullDest     
      arrayTypeCheck  
}
SourceFile: "ArrayCopySnippets.java"
NestMembers:
  org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck  org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters  org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates
InnerClasses:
  public abstract ConstantParameter = org.graalvm.compiler.api.replacements.Snippet$ConstantParameter of org.graalvm.compiler.api.replacements.Snippet
  private final ArrayCopyTypeCheck = org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$ArrayCopyTypeCheck of org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets
  Counters = org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Counters of org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets
  public Templates = org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates of org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets
  public abstract SnippetInfo = org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo of org.graalvm.compiler.replacements.SnippetTemplate