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
{
  private static final org.graalvm.compiler.replacements.SnippetCounter$Group checkCounters;
    descriptor: Lorg/graalvm/compiler/replacements/SnippetCounter$Group;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

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

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

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

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

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

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

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

  private static final java.util.EnumMap<jdk.vm.ci.meta.JavaKind, org.graalvm.compiler.replacements.SnippetCounter> arraycopyCallCounters;
    descriptor: Ljava/util/EnumMap;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/EnumMap<Ljdk/vm/ci/meta/JavaKind;Lorg/graalvm/compiler/replacements/SnippetCounter;>;

  private static final java.util.EnumMap<jdk.vm.ci.meta.JavaKind, org.graalvm.compiler.replacements.SnippetCounter> arraycopyCounters;
    descriptor: Ljava/util/EnumMap;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/EnumMap<Ljdk/vm/ci/meta/JavaKind;Lorg/graalvm/compiler/replacements/SnippetCounter;>;

  private static final java.util.EnumMap<jdk.vm.ci.meta.JavaKind, org.graalvm.compiler.replacements.SnippetCounter> arraycopyCallCopiedCounters;
    descriptor: Ljava/util/EnumMap;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/EnumMap<Ljdk/vm/ci/meta/JavaKind;Lorg/graalvm/compiler/replacements/SnippetCounter;>;

  private static final java.util.EnumMap<jdk.vm.ci.meta.JavaKind, org.graalvm.compiler.replacements.SnippetCounter> arraycopyCopiedCounters;
    descriptor: Ljava/util/EnumMap;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/EnumMap<Ljdk/vm/ci/meta/JavaKind;Lorg/graalvm/compiler/replacements/SnippetCounter;>;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=0, args_size=0
         0: .line 324
            getstatic org.graalvm.compiler.core.common.GraalOptions.SnippetCounters:Lorg/graalvm/compiler/options/OptionValue;
            invokevirtual org.graalvm.compiler.options.OptionValue.getValue:()Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 1
            new org.graalvm.compiler.replacements.SnippetCounter$Group
            dup
            ldc "System.arraycopy checkInputs"
            invokespecial org.graalvm.compiler.replacements.SnippetCounter$Group.<init>:(Ljava/lang/String;)V
            goto 2
      StackMap locals:
      StackMap stack:
         1: aconst_null
      StackMap locals:
      StackMap stack: org.graalvm.compiler.replacements.SnippetCounter$Group
         2: putstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.checkCounters:Lorg/graalvm/compiler/replacements/SnippetCounter$Group;
         3: .line 325
            new org.graalvm.compiler.replacements.SnippetCounter
            dup
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.checkCounters:Lorg/graalvm/compiler/replacements/SnippetCounter$Group;
            ldc "checkSuccess"
            ldc "checkSuccess"
            invokespecial org.graalvm.compiler.replacements.SnippetCounter.<init>:(Lorg/graalvm/compiler/replacements/SnippetCounter$Group;Ljava/lang/String;Ljava/lang/String;)V
            putstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.checkSuccessCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
         4: .line 326
            new org.graalvm.compiler.replacements.SnippetCounter
            dup
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.checkCounters:Lorg/graalvm/compiler/replacements/SnippetCounter$Group;
            ldc "checkAIOOBE"
            ldc "checkAIOOBE"
            invokespecial org.graalvm.compiler.replacements.SnippetCounter.<init>:(Lorg/graalvm/compiler/replacements/SnippetCounter$Group;Ljava/lang/String;Ljava/lang/String;)V
            putstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.checkAIOOBECounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
         5: .line 328
            getstatic org.graalvm.compiler.core.common.GraalOptions.SnippetCounters:Lorg/graalvm/compiler/options/OptionValue;
            invokevirtual org.graalvm.compiler.options.OptionValue.getValue:()Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 6
            new org.graalvm.compiler.replacements.SnippetCounter$Group
            dup
            ldc "System.arraycopy"
            invokespecial org.graalvm.compiler.replacements.SnippetCounter$Group.<init>:(Ljava/lang/String;)V
            goto 7
      StackMap locals:
      StackMap stack:
         6: aconst_null
      StackMap locals:
      StackMap stack: org.graalvm.compiler.replacements.SnippetCounter$Group
         7: putstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.counters:Lorg/graalvm/compiler/replacements/SnippetCounter$Group;
         8: .line 330
            new org.graalvm.compiler.replacements.SnippetCounter
            dup
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.counters:Lorg/graalvm/compiler/replacements/SnippetCounter$Group;
            ldc "Object[]{non-exact}"
            ldc "arraycopy for non-exact Object[] arrays"
            invokespecial org.graalvm.compiler.replacements.SnippetCounter.<init>:(Lorg/graalvm/compiler/replacements/SnippetCounter$Group;Ljava/lang/String;Ljava/lang/String;)V
            putstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.objectCheckcastCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
         9: .line 331
            new org.graalvm.compiler.replacements.SnippetCounter
            dup
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.counters:Lorg/graalvm/compiler/replacements/SnippetCounter$Group;
            ldc "Object[]{same-type}"
            ldc "arraycopy call for src.klass == dest.klass Object[] arrays"
            invokespecial org.graalvm.compiler.replacements.SnippetCounter.<init>:(Lorg/graalvm/compiler/replacements/SnippetCounter$Group;Ljava/lang/String;Ljava/lang/String;)V
            putstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.objectCheckcastSameTypeCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
        10: .line 332
            new org.graalvm.compiler.replacements.SnippetCounter
            dup
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.counters:Lorg/graalvm/compiler/replacements/SnippetCounter$Group;
            ldc "Object[]{slow-path}"
            ldc "used System.arraycopy slow path for predicted Object[] arrays"
            invokespecial org.graalvm.compiler.replacements.SnippetCounter.<init>:(Lorg/graalvm/compiler/replacements/SnippetCounter$Group;Ljava/lang/String;Ljava/lang/String;)V
            putstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.predictedObjectArrayCopySlowPathCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
        11: .line 333
            new org.graalvm.compiler.replacements.SnippetCounter
            dup
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.counters:Lorg/graalvm/compiler/replacements/SnippetCounter$Group;
            ldc "Object[]{fast-path}"
            ldc "used oop_arraycopy for predicted Object[] arrays"
            invokespecial org.graalvm.compiler.replacements.SnippetCounter.<init>:(Lorg/graalvm/compiler/replacements/SnippetCounter$Group;Ljava/lang/String;Ljava/lang/String;)V
            putstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.predictedObjectArrayCopyFastPathCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
        12: .line 335
            new java.util.EnumMap
            dup
            ldc Ljdk/vm/ci/meta/JavaKind;
            invokespecial java.util.EnumMap.<init>:(Ljava/lang/Class;)V
            putstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.arraycopyCallCounters:Ljava/util/EnumMap;
        13: .line 336
            new java.util.EnumMap
            dup
            ldc Ljdk/vm/ci/meta/JavaKind;
            invokespecial java.util.EnumMap.<init>:(Ljava/lang/Class;)V
            putstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.arraycopyCounters:Ljava/util/EnumMap;
        14: .line 338
            new java.util.EnumMap
            dup
            ldc Ljdk/vm/ci/meta/JavaKind;
            invokespecial java.util.EnumMap.<init>:(Ljava/lang/Class;)V
            putstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.arraycopyCallCopiedCounters:Ljava/util/EnumMap;
        15: .line 339
            new java.util.EnumMap
            dup
            ldc Ljdk/vm/ci/meta/JavaKind;
            invokespecial java.util.EnumMap.<init>:(Ljava/lang/Class;)V
            putstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.arraycopyCopiedCounters:Ljava/util/EnumMap;
        16: .line 350
            getstatic jdk.vm.ci.meta.JavaKind.Byte:Ljdk/vm/ci/meta/JavaKind;
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.createArraycopyCounter:(Ljdk/vm/ci/meta/JavaKind;)V
        17: .line 351
            getstatic jdk.vm.ci.meta.JavaKind.Boolean:Ljdk/vm/ci/meta/JavaKind;
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.createArraycopyCounter:(Ljdk/vm/ci/meta/JavaKind;)V
        18: .line 352
            getstatic jdk.vm.ci.meta.JavaKind.Char:Ljdk/vm/ci/meta/JavaKind;
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.createArraycopyCounter:(Ljdk/vm/ci/meta/JavaKind;)V
        19: .line 353
            getstatic jdk.vm.ci.meta.JavaKind.Short:Ljdk/vm/ci/meta/JavaKind;
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.createArraycopyCounter:(Ljdk/vm/ci/meta/JavaKind;)V
        20: .line 354
            getstatic jdk.vm.ci.meta.JavaKind.Int:Ljdk/vm/ci/meta/JavaKind;
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.createArraycopyCounter:(Ljdk/vm/ci/meta/JavaKind;)V
        21: .line 355
            getstatic jdk.vm.ci.meta.JavaKind.Long:Ljdk/vm/ci/meta/JavaKind;
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.createArraycopyCounter:(Ljdk/vm/ci/meta/JavaKind;)V
        22: .line 356
            getstatic jdk.vm.ci.meta.JavaKind.Float:Ljdk/vm/ci/meta/JavaKind;
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.createArraycopyCounter:(Ljdk/vm/ci/meta/JavaKind;)V
        23: .line 357
            getstatic jdk.vm.ci.meta.JavaKind.Double:Ljdk/vm/ci/meta/JavaKind;
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.createArraycopyCounter:(Ljdk/vm/ci/meta/JavaKind;)V
        24: .line 358
            getstatic jdk.vm.ci.meta.JavaKind.Object:Ljdk/vm/ci/meta/JavaKind;
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.createArraycopyCounter:(Ljdk/vm/ci/meta/JavaKind;)V
        25: .line 361
            new org.graalvm.compiler.replacements.SnippetCounter
            dup
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.counters:Lorg/graalvm/compiler/replacements/SnippetCounter$Group;
            ldc "genericPrimitive"
            ldc "generic arraycopy snippet for primitive arrays"
            invokespecial org.graalvm.compiler.replacements.SnippetCounter.<init>:(Lorg/graalvm/compiler/replacements/SnippetCounter$Group;Ljava/lang/String;Ljava/lang/String;)V
            putstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.genericPrimitiveCallCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
        26: .line 362
            new org.graalvm.compiler.replacements.SnippetCounter
            dup
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.counters:Lorg/graalvm/compiler/replacements/SnippetCounter$Group;
            ldc "genericObjectExact"
            ldc "generic arraycopy snippet for special object arrays"
            invokespecial org.graalvm.compiler.replacements.SnippetCounter.<init>:(Lorg/graalvm/compiler/replacements/SnippetCounter$Group;Ljava/lang/String;Ljava/lang/String;)V
            putstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.genericObjectExactCallCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
        27: .line 363
            new org.graalvm.compiler.replacements.SnippetCounter
            dup
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.counters:Lorg/graalvm/compiler/replacements/SnippetCounter$Group;
            ldc "genericObject"
            ldc "call to System.arraycopy"
            invokespecial org.graalvm.compiler.replacements.SnippetCounter.<init>:(Lorg/graalvm/compiler/replacements/SnippetCounter$Group;Ljava/lang/String;Ljava/lang/String;)V
            putstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.SystemArraycopyCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
        28: .line 365
            getstatic org.graalvm.compiler.core.common.GraalOptions.SnippetCounters:Lorg/graalvm/compiler/options/OptionValue;
            invokevirtual org.graalvm.compiler.options.OptionValue.getValue:()Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 29
            new org.graalvm.compiler.replacements.SnippetCounter$Group
            dup
            ldc "System.arraycopy 0-length checks"
            invokespecial org.graalvm.compiler.replacements.SnippetCounter$Group.<init>:(Ljava/lang/String;)V
            goto 30
      StackMap locals:
      StackMap stack:
        29: aconst_null
      StackMap locals:
      StackMap stack: org.graalvm.compiler.replacements.SnippetCounter$Group
        30: putstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.lengthCounters:Lorg/graalvm/compiler/replacements/SnippetCounter$Group;
        31: .line 367
            new org.graalvm.compiler.replacements.SnippetCounter
            dup
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.lengthCounters:Lorg/graalvm/compiler/replacements/SnippetCounter$Group;
            ldc "0-lengthcopy static"
            ldc "arraycopy where the length is statically 0"
            invokespecial org.graalvm.compiler.replacements.SnippetCounter.<init>:(Lorg/graalvm/compiler/replacements/SnippetCounter$Group;Ljava/lang/String;Ljava/lang/String;)V
            putstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.zeroLengthStaticCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
        32: .line 368
            new org.graalvm.compiler.replacements.SnippetCounter
            dup
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.lengthCounters:Lorg/graalvm/compiler/replacements/SnippetCounter$Group;
            ldc "0-lengthcopy dynamically"
            ldc "arraycopy where the length is dynamically 0"
            invokespecial org.graalvm.compiler.replacements.SnippetCounter.<init>:(Lorg/graalvm/compiler/replacements/SnippetCounter$Group;Ljava/lang/String;Ljava/lang/String;)V
            putstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.zeroLengthDynamicCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
        33: .line 369
            new org.graalvm.compiler.replacements.SnippetCounter
            dup
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.lengthCounters:Lorg/graalvm/compiler/replacements/SnippetCounter$Group;
            ldc "non-0-lengthcopy dynamically"
            ldc "arraycopy where the length is dynamically not zero"
            invokespecial org.graalvm.compiler.replacements.SnippetCounter.<init>:(Lorg/graalvm/compiler/replacements/SnippetCounter$Group;Ljava/lang/String;Ljava/lang/String;)V
            putstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.nonZeroLengthDynamicCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
        34: .line 371
            getstatic org.graalvm.compiler.core.common.GraalOptions.SnippetCounters:Lorg/graalvm/compiler/options/OptionValue;
            invokevirtual org.graalvm.compiler.options.OptionValue.getValue:()Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 35
            new org.graalvm.compiler.replacements.SnippetCounter$Group
            dup
            ldc "System.arraycopy copied elements"
            invokespecial org.graalvm.compiler.replacements.SnippetCounter$Group.<init>:(Ljava/lang/String;)V
            goto 36
      StackMap locals:
      StackMap stack:
        35: aconst_null
      StackMap locals:
      StackMap stack: org.graalvm.compiler.replacements.SnippetCounter$Group
        36: putstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.copiedCounters:Lorg/graalvm/compiler/replacements/SnippetCounter$Group;
        37: .line 373
            new org.graalvm.compiler.replacements.SnippetCounter
            dup
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.copiedCounters:Lorg/graalvm/compiler/replacements/SnippetCounter$Group;
            ldc "non-0-lengthcopy dynamically"
            ldc "arraycopy where the length is dynamically not zero"
            invokespecial org.graalvm.compiler.replacements.SnippetCounter.<init>:(Lorg/graalvm/compiler/replacements/SnippetCounter$Group;Ljava/lang/String;Ljava/lang/String;)V
            putstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.nonZeroLengthDynamicCopiedCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
        38: .line 374
            new org.graalvm.compiler.replacements.SnippetCounter
            dup
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.copiedCounters:Lorg/graalvm/compiler/replacements/SnippetCounter$Group;
            ldc "genericPrimitive"
            ldc "generic arraycopy snippet for primitive arrays"
            invokespecial org.graalvm.compiler.replacements.SnippetCounter.<init>:(Lorg/graalvm/compiler/replacements/SnippetCounter$Group;Ljava/lang/String;Ljava/lang/String;)V
            putstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.genericPrimitiveCallCopiedCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
        39: .line 375
            new org.graalvm.compiler.replacements.SnippetCounter
            dup
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.copiedCounters:Lorg/graalvm/compiler/replacements/SnippetCounter$Group;
            ldc "genericObjectExact"
            ldc "generic arraycopy snippet for special object arrays"
            invokespecial org.graalvm.compiler.replacements.SnippetCounter.<init>:(Lorg/graalvm/compiler/replacements/SnippetCounter$Group;Ljava/lang/String;Ljava/lang/String;)V
            putstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.genericObjectExactCallCopiedCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
        40: .line 376
            new org.graalvm.compiler.replacements.SnippetCounter
            dup
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.copiedCounters:Lorg/graalvm/compiler/replacements/SnippetCounter$Group;
            ldc "genericObject"
            ldc "call to System.arraycopy"
            invokespecial org.graalvm.compiler.replacements.SnippetCounter.<init>:(Lorg/graalvm/compiler/replacements/SnippetCounter$Group;Ljava/lang/String;Ljava/lang/String;)V
            putstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.SystemArraycopyCopiedCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
        41: .line 378
            new org.graalvm.compiler.replacements.SnippetCounter
            dup
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.copiedCounters:Lorg/graalvm/compiler/replacements/SnippetCounter$Group;
            ldc "Object[]{non-exact}"
            ldc "arraycopy for non-exact Object[] arrays"
            invokespecial org.graalvm.compiler.replacements.SnippetCounter.<init>:(Lorg/graalvm/compiler/replacements/SnippetCounter$Group;Ljava/lang/String;Ljava/lang/String;)V
            putstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.objectCheckcastCopiedCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
        42: .line 379
            new org.graalvm.compiler.replacements.SnippetCounter
            dup
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.copiedCounters:Lorg/graalvm/compiler/replacements/SnippetCounter$Group;
            ldc "Object[]{same-type}"
            ldc "arraycopy call for src.klass == dest.klass Object[] arrays"
            invokespecial org.graalvm.compiler.replacements.SnippetCounter.<init>:(Lorg/graalvm/compiler/replacements/SnippetCounter$Group;Ljava/lang/String;Ljava/lang/String;)V
            putstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.objectCheckcastSameTypeCopiedCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
        43: .line 380
            new org.graalvm.compiler.replacements.SnippetCounter
            dup
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.copiedCounters:Lorg/graalvm/compiler/replacements/SnippetCounter$Group;
            ldc "Object[]{slow-path}"
        44: .line 381
            ldc "used System.arraycopy slow path for predicted Object[] arrays"
        45: .line 380
            invokespecial org.graalvm.compiler.replacements.SnippetCounter.<init>:(Lorg/graalvm/compiler/replacements/SnippetCounter$Group;Ljava/lang/String;Ljava/lang/String;)V
            putstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.predictedObjectArrayCopySlowPathCopiedCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
        46: .line 382
            new org.graalvm.compiler.replacements.SnippetCounter
            dup
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.copiedCounters:Lorg/graalvm/compiler/replacements/SnippetCounter$Group;
            ldc "Object[]{fast-path}"
            ldc "used oop_arraycopy for predicted Object[] arrays"
            invokespecial org.graalvm.compiler.replacements.SnippetCounter.<init>:(Lorg/graalvm/compiler/replacements/SnippetCounter$Group;Ljava/lang/String;Ljava/lang/String;)V
            putstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.predictedObjectArrayCopyFastPathCopiedCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets this
         0: .line 86
            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;

  private static int checkArrayType(org.graalvm.compiler.hotspot.word.KlassPointer);
    descriptor: (Lorg/graalvm/compiler/hotspot/word/KlassPointer;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // org.graalvm.compiler.hotspot.word.KlassPointer hub
         0: .line 89
            aload 0 /* hub */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.readLayoutHelper:(Lorg/graalvm/compiler/hotspot/word/KlassPointer;)I
            istore 1 /* layoutHelper */
        start local 1 // int layoutHelper
         1: .line 90
            ldc 0.010000000000000009
            iload 1 /* layoutHelper */
            iflt 2
            iconst_1
            goto 3
      StackMap locals: org.graalvm.compiler.hotspot.word.KlassPointer int
      StackMap stack: double
         2: iconst_0
      StackMap locals: org.graalvm.compiler.hotspot.word.KlassPointer int
      StackMap stack: double int
         3: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 5
         4: .line 91
            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
         5: .line 93
      StackMap locals:
      StackMap stack:
            iload 1 /* layoutHelper */
            ireturn
        end local 1 // int layoutHelper
        end local 0 // org.graalvm.compiler.hotspot.word.KlassPointer hub
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    6     0           hub  Lorg/graalvm/compiler/hotspot/word/KlassPointer;
            1    6     1  layoutHelper  I
    MethodParameters:
      Name  Flags
      hub   

  private static void checkLimits(java.lang.Object, int, java.lang.Object, int, int);
    descriptor: (Ljava/lang/Object;ILjava/lang/Object;II)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=5
        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
         0: .line 97
            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
      StackMap stack: double int
         2: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 5
         3: .line 98
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.checkAIOOBECounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
         4: .line 99
            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
         5: .line 101
      StackMap locals:
      StackMap stack:
            ldc 0.010000000000000009
            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
      StackMap stack: double int
         7: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 10
         8: .line 102
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.checkAIOOBECounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
         9: .line 103
            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
        10: .line 105
      StackMap locals:
      StackMap stack:
            ldc 0.010000000000000009
            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
      StackMap stack: double int
        12: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 15
        13: .line 106
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.checkAIOOBECounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        14: .line 107
            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
        15: .line 109
      StackMap locals:
      StackMap stack:
            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 16
            iconst_1
            goto 17
      StackMap locals:
      StackMap stack: double
        16: iconst_0
      StackMap locals: java.lang.Object int java.lang.Object int int
      StackMap stack: double int
        17: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 20
        18: .line 110
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.checkAIOOBECounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        19: .line 111
            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
        20: .line 113
      StackMap locals:
      StackMap stack:
            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 21
            iconst_1
            goto 22
      StackMap locals:
      StackMap stack: double
        21: iconst_0
      StackMap locals: java.lang.Object int java.lang.Object int int
      StackMap stack: double int
        22: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 25
        23: .line 114
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.checkAIOOBECounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        24: .line 115
            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
        25: .line 117
      StackMap locals:
      StackMap stack:
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.checkSuccessCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        26: .line 118
            return
        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
    MethodParameters:
         Name  Flags
      src      
      srcPos   
      dest     
      destPos  
      length   

  public static void arraycopyZeroLengthIntrinsic(java.lang.Object, int, java.lang.Object, int, int);
    descriptor: (Ljava/lang/Object;ILjava/lang/Object;II)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=9, args_size=5
        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
         0: .line 122
            aload 0 /* src */
            invokestatic org.graalvm.compiler.api.directives.GraalDirectives.guardingNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 5 /* nonNullSrc */
        start local 5 // java.lang.Object nonNullSrc
         1: .line 123
            aload 2 /* dest */
            invokestatic org.graalvm.compiler.api.directives.GraalDirectives.guardingNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 6 /* nonNullDest */
        start local 6 // java.lang.Object nonNullDest
         2: .line 124
            aload 5 /* nonNullSrc */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.loadHub:(Ljava/lang/Object;)Lorg/graalvm/compiler/hotspot/word/KlassPointer;
            astore 7 /* srcHub */
        start local 7 // org.graalvm.compiler.hotspot.word.KlassPointer srcHub
         3: .line 125
            aload 6 /* nonNullDest */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.loadHub:(Ljava/lang/Object;)Lorg/graalvm/compiler/hotspot/word/KlassPointer;
            astore 8 /* destHub */
        start local 8 // org.graalvm.compiler.hotspot.word.KlassPointer destHub
         4: .line 126
            aload 7 /* srcHub */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.checkArrayType:(Lorg/graalvm/compiler/hotspot/word/KlassPointer;)I
            pop
         5: .line 127
            aload 8 /* destHub */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.checkArrayType:(Lorg/graalvm/compiler/hotspot/word/KlassPointer;)I
            pop
         6: .line 128
            aload 5 /* nonNullSrc */
            iload 1 /* srcPos */
            aload 6 /* nonNullDest */
            iload 3 /* destPos */
            iload 4 /* length */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.checkLimits:(Ljava/lang/Object;ILjava/lang/Object;II)V
         7: .line 129
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.zeroLengthStaticCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
         8: .line 130
            return
        end local 8 // org.graalvm.compiler.hotspot.word.KlassPointer destHub
        end local 7 // org.graalvm.compiler.hotspot.word.KlassPointer srcHub
        end local 6 // java.lang.Object nonNullDest
        end local 5 // java.lang.Object nonNullSrc
        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
            1    9     5   nonNullSrc  Ljava/lang/Object;
            2    9     6  nonNullDest  Ljava/lang/Object;
            3    9     7       srcHub  Lorg/graalvm/compiler/hotspot/word/KlassPointer;
            4    9     8      destHub  Lorg/graalvm/compiler/hotspot/word/KlassPointer;
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.Snippet()
    MethodParameters:
         Name  Flags
      src      
      srcPos   
      dest     
      destPos  
      length   

  public static void arraycopyExactIntrinsic(java.lang.Object, int, java.lang.Object, int, int, jdk.vm.ci.meta.JavaKind, org.graalvm.compiler.replacements.SnippetCounter, org.graalvm.compiler.replacements.SnippetCounter);
    descriptor: (Ljava/lang/Object;ILjava/lang/Object;IILjdk/vm/ci/meta/JavaKind;Lorg/graalvm/compiler/replacements/SnippetCounter;Lorg/graalvm/compiler/replacements/SnippetCounter;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=10, args_size=8
        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 // jdk.vm.ci.meta.JavaKind elementKind
        start local 6 // org.graalvm.compiler.replacements.SnippetCounter counter
        start local 7 // org.graalvm.compiler.replacements.SnippetCounter copiedCounter
         0: .line 135
            aload 0 /* src */
            invokestatic org.graalvm.compiler.api.directives.GraalDirectives.guardingNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 8 /* nonNullSrc */
        start local 8 // java.lang.Object nonNullSrc
         1: .line 136
            aload 2 /* dest */
            invokestatic org.graalvm.compiler.api.directives.GraalDirectives.guardingNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 9 /* nonNullDest */
        start local 9 // java.lang.Object nonNullDest
         2: .line 137
            aload 8 /* nonNullSrc */
            iload 1 /* srcPos */
            aload 9 /* nonNullDest */
            iload 3 /* destPos */
            iload 4 /* length */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.checkLimits:(Ljava/lang/Object;ILjava/lang/Object;II)V
         3: .line 138
            aload 6 /* counter */
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
         4: .line 139
            aload 7 /* copiedCounter */
            iload 4 /* length */
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.add:(I)V
         5: .line 140
            aload 8 /* nonNullSrc */
            iload 1 /* srcPos */
            aload 9 /* nonNullDest */
            iload 3 /* destPos */
            iload 4 /* length */
            aload 5 /* elementKind */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyCallNode.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;IILjdk/vm/ci/meta/JavaKind;)V
         6: .line 141
            iload 4 /* length */
            ifne 9
         7: .line 142
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.zeroLengthDynamicCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
         8: .line 143
            goto 11
         9: .line 144
      StackMap locals: java.lang.Object java.lang.Object
      StackMap stack:
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.nonZeroLengthDynamicCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        10: .line 145
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.nonZeroLengthDynamicCopiedCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            iload 4 /* length */
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.add:(I)V
        11: .line 147
      StackMap locals:
      StackMap stack:
            return
        end local 9 // java.lang.Object nonNullDest
        end local 8 // java.lang.Object nonNullSrc
        end local 7 // org.graalvm.compiler.replacements.SnippetCounter copiedCounter
        end local 6 // org.graalvm.compiler.replacements.SnippetCounter counter
        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 dest
        end local 1 // int srcPos
        end local 0 // java.lang.Object src
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   12     0            src  Ljava/lang/Object;
            0   12     1         srcPos  I
            0   12     2           dest  Ljava/lang/Object;
            0   12     3        destPos  I
            0   12     4         length  I
            0   12     5    elementKind  Ljdk/vm/ci/meta/JavaKind;
            0   12     6        counter  Lorg/graalvm/compiler/replacements/SnippetCounter;
            0   12     7  copiedCounter  Lorg/graalvm/compiler/replacements/SnippetCounter;
            1   12     8     nonNullSrc  Ljava/lang/Object;
            2   12     9    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()
    MethodParameters:
               Name  Flags
      src            
      srcPos         
      dest           
      destPos        
      length         
      elementKind    
      counter        
      copiedCounter  

  public static void arraycopyPredictedExactIntrinsic(java.lang.Object, int, java.lang.Object, int, int, jdk.vm.ci.meta.JavaKind, org.graalvm.compiler.replacements.SnippetCounter, org.graalvm.compiler.replacements.SnippetCounter);
    descriptor: (Ljava/lang/Object;ILjava/lang/Object;IILjdk/vm/ci/meta/JavaKind;Lorg/graalvm/compiler/replacements/SnippetCounter;Lorg/graalvm/compiler/replacements/SnippetCounter;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=12, args_size=8
        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 // jdk.vm.ci.meta.JavaKind elementKind
        start local 6 // org.graalvm.compiler.replacements.SnippetCounter counter
        start local 7 // org.graalvm.compiler.replacements.SnippetCounter copiedCounter
         0: .line 156
            aload 0 /* src */
            invokestatic org.graalvm.compiler.api.directives.GraalDirectives.guardingNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 8 /* nonNullSrc */
        start local 8 // java.lang.Object nonNullSrc
         1: .line 157
            aload 2 /* dest */
            invokestatic org.graalvm.compiler.api.directives.GraalDirectives.guardingNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 9 /* nonNullDest */
        start local 9 // java.lang.Object nonNullDest
         2: .line 158
            aload 8 /* nonNullSrc */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.loadHub:(Ljava/lang/Object;)Lorg/graalvm/compiler/hotspot/word/KlassPointer;
            astore 10 /* srcHub */
        start local 10 // org.graalvm.compiler.hotspot.word.KlassPointer srcHub
         3: .line 159
            aload 9 /* nonNullDest */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.loadHub:(Ljava/lang/Object;)Lorg/graalvm/compiler/hotspot/word/KlassPointer;
            astore 11 /* destHub */
        start local 11 // org.graalvm.compiler.hotspot.word.KlassPointer destHub
         4: .line 160
            ldc 0.010000000000000009
            aload 10 /* srcHub */
            aload 11 /* destHub */
            if_acmpeq 5
            iconst_1
            goto 6
      StackMap locals: java.lang.Object int java.lang.Object int int jdk.vm.ci.meta.JavaKind org.graalvm.compiler.replacements.SnippetCounter org.graalvm.compiler.replacements.SnippetCounter java.lang.Object java.lang.Object org.graalvm.compiler.hotspot.word.KlassPointer org.graalvm.compiler.hotspot.word.KlassPointer
      StackMap stack: double
         5: iconst_0
      StackMap locals: java.lang.Object int java.lang.Object int int jdk.vm.ci.meta.JavaKind org.graalvm.compiler.replacements.SnippetCounter org.graalvm.compiler.replacements.SnippetCounter java.lang.Object java.lang.Object 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 8
         7: .line 161
            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
         8: .line 163
      StackMap locals:
      StackMap stack:
            aload 8 /* nonNullSrc */
            iload 1 /* srcPos */
            aload 9 /* nonNullDest */
            iload 3 /* destPos */
            iload 4 /* length */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.checkLimits:(Ljava/lang/Object;ILjava/lang/Object;II)V
         9: .line 164
            aload 6 /* counter */
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        10: .line 165
            aload 7 /* copiedCounter */
            iload 4 /* length */
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.add:(I)V
        11: .line 166
            aload 8 /* nonNullSrc */
            iload 1 /* srcPos */
            aload 9 /* nonNullDest */
            iload 3 /* destPos */
            iload 4 /* length */
            aload 5 /* elementKind */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyCallNode.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;IILjdk/vm/ci/meta/JavaKind;)V
        12: .line 167
            iload 4 /* length */
            ifne 15
        13: .line 168
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.zeroLengthDynamicCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        14: .line 169
            goto 17
        15: .line 170
      StackMap locals:
      StackMap stack:
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.nonZeroLengthDynamicCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        16: .line 171
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.nonZeroLengthDynamicCopiedCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            iload 4 /* length */
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.add:(I)V
        17: .line 173
      StackMap locals:
      StackMap stack:
            return
        end local 11 // org.graalvm.compiler.hotspot.word.KlassPointer destHub
        end local 10 // org.graalvm.compiler.hotspot.word.KlassPointer srcHub
        end local 9 // java.lang.Object nonNullDest
        end local 8 // java.lang.Object nonNullSrc
        end local 7 // org.graalvm.compiler.replacements.SnippetCounter copiedCounter
        end local 6 // org.graalvm.compiler.replacements.SnippetCounter counter
        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 dest
        end local 1 // int srcPos
        end local 0 // java.lang.Object src
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   18     0            src  Ljava/lang/Object;
            0   18     1         srcPos  I
            0   18     2           dest  Ljava/lang/Object;
            0   18     3        destPos  I
            0   18     4         length  I
            0   18     5    elementKind  Ljdk/vm/ci/meta/JavaKind;
            0   18     6        counter  Lorg/graalvm/compiler/replacements/SnippetCounter;
            0   18     7  copiedCounter  Lorg/graalvm/compiler/replacements/SnippetCounter;
            1   18     8     nonNullSrc  Ljava/lang/Object;
            2   18     9    nonNullDest  Ljava/lang/Object;
            3   18    10         srcHub  Lorg/graalvm/compiler/hotspot/word/KlassPointer;
            4   18    11        destHub  Lorg/graalvm/compiler/hotspot/word/KlassPointer;
    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()
    MethodParameters:
               Name  Flags
      src            
      srcPos         
      dest           
      destPos        
      length         
      elementKind    
      counter        
      copiedCounter  

  public static void arraycopyPredictedObjectWork(java.lang.Object, int, java.lang.Object, int, int, org.graalvm.compiler.hotspot.word.KlassPointer, org.graalvm.compiler.replacements.SnippetCounter, org.graalvm.compiler.replacements.SnippetCounter);
    descriptor: (Ljava/lang/Object;ILjava/lang/Object;IILorg/graalvm/compiler/hotspot/word/KlassPointer;Lorg/graalvm/compiler/replacements/SnippetCounter;Lorg/graalvm/compiler/replacements/SnippetCounter;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=10, args_size=8
        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 // org.graalvm.compiler.hotspot.word.KlassPointer objectArrayKlass
        start local 6 // org.graalvm.compiler.replacements.SnippetCounter counter
        start local 7 // org.graalvm.compiler.replacements.SnippetCounter copiedCounter
         0: .line 178
            iload 4 /* length */
            ifle 15
         1: .line 179
            aload 0 /* nonNullSrc */
            invokestatic org.graalvm.compiler.nodes.PiNode.asNonNullObject:(Ljava/lang/Object;)Ljava/lang/Class;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.loadHub:(Ljava/lang/Object;)Lorg/graalvm/compiler/hotspot/word/KlassPointer;
            astore 8 /* srcHub */
        start local 8 // org.graalvm.compiler.hotspot.word.KlassPointer srcHub
         2: .line 180
            aload 2 /* nonNullDest */
            invokestatic org.graalvm.compiler.nodes.PiNode.asNonNullObject:(Ljava/lang/Object;)Ljava/lang/Class;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.loadHub:(Ljava/lang/Object;)Lorg/graalvm/compiler/hotspot/word/KlassPointer;
            astore 9 /* destHub */
        start local 9 // org.graalvm.compiler.hotspot.word.KlassPointer destHub
         3: .line 181
            ldc 0.99
            aload 8 /* srcHub */
            aload 9 /* destHub */
            if_acmpeq 4
            aload 9 /* destHub */
            aload 5 /* objectArrayKlass */
            if_acmpeq 4
            iconst_0
            goto 5
      StackMap locals: java.lang.Object int java.lang.Object int int org.graalvm.compiler.hotspot.word.KlassPointer org.graalvm.compiler.replacements.SnippetCounter org.graalvm.compiler.replacements.SnippetCounter org.graalvm.compiler.hotspot.word.KlassPointer org.graalvm.compiler.hotspot.word.KlassPointer
      StackMap stack: double
         4: iconst_1
      StackMap locals: java.lang.Object int java.lang.Object int int org.graalvm.compiler.hotspot.word.KlassPointer org.graalvm.compiler.replacements.SnippetCounter org.graalvm.compiler.replacements.SnippetCounter org.graalvm.compiler.hotspot.word.KlassPointer org.graalvm.compiler.hotspot.word.KlassPointer
      StackMap stack: double int
         5: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 12
         6: .line 182
            aload 6 /* counter */
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
         7: .line 183
            aload 7 /* copiedCounter */
            iload 4 /* length */
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.add:(I)V
         8: .line 184
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.predictedObjectArrayCopyFastPathCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
         9: .line 185
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.predictedObjectArrayCopyFastPathCopiedCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            iload 4 /* length */
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.add:(I)V
        10: .line 186
            aload 0 /* nonNullSrc */
            iload 1 /* srcPos */
            aload 2 /* nonNullDest */
            iload 3 /* destPos */
            iload 4 /* length */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyCallNode.arraycopyObjectKillsAny:(Ljava/lang/Object;ILjava/lang/Object;II)V
        11: .line 187
            goto 15
        12: .line 188
      StackMap locals:
      StackMap stack:
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.predictedObjectArrayCopySlowPathCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        13: .line 189
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.predictedObjectArrayCopySlowPathCopiedCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            iload 4 /* length */
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.add:(I)V
        14: .line 190
            aload 0 /* nonNullSrc */
            iload 1 /* srcPos */
            aload 2 /* nonNullDest */
            iload 3 /* destPos */
            iload 4 /* length */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        end local 9 // org.graalvm.compiler.hotspot.word.KlassPointer destHub
        end local 8 // org.graalvm.compiler.hotspot.word.KlassPointer srcHub
        15: .line 193
      StackMap locals:
      StackMap stack:
            return
        end local 7 // org.graalvm.compiler.replacements.SnippetCounter copiedCounter
        end local 6 // org.graalvm.compiler.replacements.SnippetCounter counter
        end local 5 // org.graalvm.compiler.hotspot.word.KlassPointer objectArrayKlass
        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   16     0        nonNullSrc  Ljava/lang/Object;
            0   16     1            srcPos  I
            0   16     2       nonNullDest  Ljava/lang/Object;
            0   16     3           destPos  I
            0   16     4            length  I
            0   16     5  objectArrayKlass  Lorg/graalvm/compiler/hotspot/word/KlassPointer;
            0   16     6           counter  Lorg/graalvm/compiler/replacements/SnippetCounter;
            0   16     7     copiedCounter  Lorg/graalvm/compiler/replacements/SnippetCounter;
            2   15     8            srcHub  Lorg/graalvm/compiler/hotspot/word/KlassPointer;
            3   15     9           destHub  Lorg/graalvm/compiler/hotspot/word/KlassPointer;
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.Snippet()
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
      4:
      5:
      6:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      7:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
    MethodParameters:
                  Name  Flags
      nonNullSrc        
      srcPos            
      nonNullDest       
      destPos           
      length            
      objectArrayKlass  
      counter           
      copiedCounter     

  public static void arraycopySlowPathIntrinsic(java.lang.Object, int, java.lang.Object, int, int, org.graalvm.compiler.hotspot.word.KlassPointer, jdk.vm.ci.meta.JavaKind, org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo, java.lang.Object);
    descriptor: (Ljava/lang/Object;ILjava/lang/Object;IILorg/graalvm/compiler/hotspot/word/KlassPointer;Ljdk/vm/ci/meta/JavaKind;Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;Ljava/lang/Object;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=9, locals=13, 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.word.KlassPointer predictedKlass
        start local 6 // jdk.vm.ci.meta.JavaKind elementKind
        start local 7 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo slowPath
        start local 8 // java.lang.Object slowPathArgument
         0: .line 202
            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 203
            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 204
            aload 9 /* nonNullSrc */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.loadHub:(Ljava/lang/Object;)Lorg/graalvm/compiler/hotspot/word/KlassPointer;
            astore 11 /* srcHub */
        start local 11 // org.graalvm.compiler.hotspot.word.KlassPointer srcHub
         3: .line 205
            aload 10 /* nonNullDest */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.loadHub:(Ljava/lang/Object;)Lorg/graalvm/compiler/hotspot/word/KlassPointer;
            astore 12 /* destHub */
        start local 12 // org.graalvm.compiler.hotspot.word.KlassPointer destHub
         4: .line 206
            aload 11 /* srcHub */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.checkArrayType:(Lorg/graalvm/compiler/hotspot/word/KlassPointer;)I
            pop
         5: .line 207
            aload 12 /* destHub */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.checkArrayType:(Lorg/graalvm/compiler/hotspot/word/KlassPointer;)I
            pop
         6: .line 208
            aload 9 /* nonNullSrc */
            iload 1 /* srcPos */
            aload 10 /* nonNullDest */
            iload 3 /* destPos */
            iload 4 /* length */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.checkLimits:(Ljava/lang/Object;ILjava/lang/Object;II)V
         7: .line 209
            iload 4 /* length */
            ifne 10
         8: .line 210
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.zeroLengthDynamicCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
         9: .line 211
            goto 12
        10: .line 212
      StackMap locals: java.lang.Object int java.lang.Object int int org.graalvm.compiler.hotspot.word.KlassPointer jdk.vm.ci.meta.JavaKind org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo java.lang.Object java.lang.Object java.lang.Object org.graalvm.compiler.hotspot.word.KlassPointer org.graalvm.compiler.hotspot.word.KlassPointer
      StackMap stack:
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.nonZeroLengthDynamicCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        11: .line 213
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.nonZeroLengthDynamicCopiedCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            iload 4 /* length */
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.add:(I)V
        12: .line 215
      StackMap locals:
      StackMap stack:
            aload 9 /* nonNullSrc */
            iload 1 /* srcPos */
            aload 10 /* nonNullDest */
            iload 3 /* destPos */
            iload 4 /* length */
            aload 5 /* predictedKlass */
            aload 6 /* elementKind */
            aload 7 /* slowPath */
            aload 8 /* slowPathArgument */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySlowPathNode.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;IILorg/graalvm/compiler/hotspot/word/KlassPointer;Ljdk/vm/ci/meta/JavaKind;Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;Ljava/lang/Object;)V
        13: .line 216
            return
        end local 12 // org.graalvm.compiler.hotspot.word.KlassPointer destHub
        end local 11 // org.graalvm.compiler.hotspot.word.KlassPointer srcHub
        end local 10 // java.lang.Object nonNullDest
        end local 9 // java.lang.Object nonNullSrc
        end local 8 // java.lang.Object slowPathArgument
        end local 7 // org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo slowPath
        end local 6 // jdk.vm.ci.meta.JavaKind elementKind
        end local 5 // org.graalvm.compiler.hotspot.word.KlassPointer predictedKlass
        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   14     0               src  Ljava/lang/Object;
            0   14     1            srcPos  I
            0   14     2              dest  Ljava/lang/Object;
            0   14     3           destPos  I
            0   14     4            length  I
            0   14     5    predictedKlass  Lorg/graalvm/compiler/hotspot/word/KlassPointer;
            0   14     6       elementKind  Ljdk/vm/ci/meta/JavaKind;
            0   14     7          slowPath  Lorg/graalvm/compiler/replacements/SnippetTemplate$SnippetInfo;
            0   14     8  slowPathArgument  Ljava/lang/Object;
            1   14     9        nonNullSrc  Ljava/lang/Object;
            2   14    10       nonNullDest  Ljava/lang/Object;
            3   14    11            srcHub  Lorg/graalvm/compiler/hotspot/word/KlassPointer;
            4   14    12           destHub  Lorg/graalvm/compiler/hotspot/word/KlassPointer;
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.Snippet()
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
      4:
      5:
      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            
      predictedKlass    
      elementKind       
      slowPath          
      slowPathArgument  

  public static void arraycopyUnrolledIntrinsic(java.lang.Object, int, java.lang.Object, int, int, int, jdk.vm.ci.meta.JavaKind);
    descriptor: (Ljava/lang/Object;ILjava/lang/Object;IIILjdk/vm/ci/meta/JavaKind;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, 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 // int unrolledLength
        start local 6 // jdk.vm.ci.meta.JavaKind elementKind
         0: .line 223
            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 224
            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 225
            aload 7 /* nonNullSrc */
            iload 1 /* srcPos */
            aload 8 /* nonNullDest */
            iload 3 /* destPos */
            iload 4 /* length */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.checkLimits:(Ljava/lang/Object;ILjava/lang/Object;II)V
         3: .line 226
            iload 4 /* length */
            ifne 6
         4: .line 227
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.zeroLengthDynamicCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
         5: .line 228
            goto 8
         6: .line 229
      StackMap locals: java.lang.Object java.lang.Object
      StackMap stack:
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.nonZeroLengthDynamicCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
         7: .line 230
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.nonZeroLengthDynamicCopiedCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            iload 4 /* length */
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.add:(I)V
         8: .line 232
      StackMap locals:
      StackMap stack:
            aload 7 /* nonNullSrc */
            iload 1 /* srcPos */
            aload 8 /* nonNullDest */
            iload 3 /* destPos */
            iload 4 /* length */
            iload 5 /* unrolledLength */
            aload 6 /* elementKind */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyUnrollNode.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;IIILjdk/vm/ci/meta/JavaKind;)V
         9: .line 233
            return
        end local 8 // java.lang.Object nonNullDest
        end local 7 // java.lang.Object nonNullSrc
        end local 6 // jdk.vm.ci.meta.JavaKind elementKind
        end local 5 // int unrolledLength
        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   10     0             src  Ljava/lang/Object;
            0   10     1          srcPos  I
            0   10     2            dest  Ljava/lang/Object;
            0   10     3         destPos  I
            0   10     4          length  I
            0   10     5  unrolledLength  I
            0   10     6     elementKind  Ljdk/vm/ci/meta/JavaKind;
            1   10     7      nonNullSrc  Ljava/lang/Object;
            2   10     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          
      unrolledLength  
      elementKind     

  public static void checkcastArraycopyWork(java.lang.Object, int, java.lang.Object, int, int);
    descriptor: (Ljava/lang/Object;ILjava/lang/Object;II)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=8, locals=10, args_size=5
        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
         0: .line 237
            iload 4 /* length */
            ifle 18
         1: .line 238
            aload 2 /* nonNullDest */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.loadHub:(Ljava/lang/Object;)Lorg/graalvm/compiler/hotspot/word/KlassPointer;
            astore 5 /* destKlass */
        start local 5 // org.graalvm.compiler.hotspot.word.KlassPointer destKlass
         2: .line 239
            aload 0 /* nonNullSrc */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.loadHub:(Ljava/lang/Object;)Lorg/graalvm/compiler/hotspot/word/KlassPointer;
            astore 6 /* srcKlass */
        start local 6 // org.graalvm.compiler.hotspot.word.KlassPointer srcKlass
         3: .line 240
            ldc 0.010000000000000009
            aload 6 /* srcKlass */
            aload 5 /* destKlass */
            if_acmpne 4
            iconst_1
            goto 5
      StackMap locals: java.lang.Object int java.lang.Object int int org.graalvm.compiler.hotspot.word.KlassPointer org.graalvm.compiler.hotspot.word.KlassPointer
      StackMap stack: double
         4: iconst_0
      StackMap locals: java.lang.Object int java.lang.Object int int org.graalvm.compiler.hotspot.word.KlassPointer org.graalvm.compiler.hotspot.word.KlassPointer
      StackMap stack: double int
         5: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 10
         6: .line 242
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.objectCheckcastSameTypeCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
         7: .line 243
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.objectCheckcastSameTypeCopiedCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            iload 4 /* length */
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.add:(I)V
         8: .line 244
            aload 0 /* nonNullSrc */
            iload 1 /* srcPos */
            aload 2 /* nonNullDest */
            iload 3 /* destPos */
            iload 4 /* length */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyCallNode.arraycopyObjectKillsAny:(Ljava/lang/Object;ILjava/lang/Object;II)V
         9: .line 245
            goto 18
        10: .line 246
      StackMap locals:
      StackMap stack:
            aload 5 /* destKlass */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.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:Lorg/graalvm/compiler/core/common/LocationIdentity;
            invokevirtual org.graalvm.compiler.hotspot.word.KlassPointer.readKlassPointer:(ILorg/graalvm/compiler/core/common/LocationIdentity;)Lorg/graalvm/compiler/hotspot/word/KlassPointer;
            astore 7 /* destElemKlass */
        start local 7 // org.graalvm.compiler.hotspot.word.KlassPointer destElemKlass
        11: .line 247
            aload 7 /* destElemKlass */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.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:Lorg/graalvm/compiler/core/common/LocationIdentity;
            invokevirtual org.graalvm.compiler.hotspot.word.KlassPointer.readInt:(ILorg/graalvm/compiler/core/common/LocationIdentity;)I
            invokestatic org.graalvm.compiler.word.Word.signed:(I)Lorg/graalvm/compiler/word/Word;
            astore 8 /* superCheckOffset */
        start local 8 // org.graalvm.compiler.word.Word superCheckOffset
        12: .line 248
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.objectCheckcastCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        13: .line 249
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.objectCheckcastCopiedCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            iload 4 /* length */
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.add:(I)V
        14: .line 250
            aload 0 /* nonNullSrc */
            iload 1 /* srcPos */
            aload 2 /* nonNullDest */
            iload 3 /* destPos */
            iload 4 /* length */
            aload 8 /* superCheckOffset */
            aload 7 /* 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 9 /* copiedElements */
        start local 9 // int copiedElements
        15: .line 251
            iload 9 /* copiedElements */
            ifeq 18
        16: .line 256
            iload 9 /* copiedElements */
            iconst_m1
            ixor
            istore 9 /* copiedElements */
        17: .line 257
            aload 0 /* nonNullSrc */
            iload 1 /* srcPos */
            iload 9 /* copiedElements */
            iadd
            aload 2 /* nonNullDest */
            iload 3 /* destPos */
            iload 9 /* copiedElements */
            iadd
            iload 4 /* length */
            iload 9 /* copiedElements */
            isub
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        end local 9 // int copiedElements
        end local 8 // org.graalvm.compiler.word.Word superCheckOffset
        end local 7 // org.graalvm.compiler.hotspot.word.KlassPointer destElemKlass
        end local 6 // org.graalvm.compiler.hotspot.word.KlassPointer srcKlass
        end local 5 // org.graalvm.compiler.hotspot.word.KlassPointer destKlass
        18: .line 261
      StackMap locals:
      StackMap stack:
            return
        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   19     0        nonNullSrc  Ljava/lang/Object;
            0   19     1            srcPos  I
            0   19     2       nonNullDest  Ljava/lang/Object;
            0   19     3           destPos  I
            0   19     4            length  I
            2   18     5         destKlass  Lorg/graalvm/compiler/hotspot/word/KlassPointer;
            3   18     6          srcKlass  Lorg/graalvm/compiler/hotspot/word/KlassPointer;
           11   18     7     destElemKlass  Lorg/graalvm/compiler/hotspot/word/KlassPointer;
           12   18     8  superCheckOffset  Lorg/graalvm/compiler/word/Word;
           15   18     9    copiedElements  I
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.Snippet()
    MethodParameters:
             Name  Flags
      nonNullSrc   
      srcPos       
      nonNullDest  
      destPos      
      length       

  public static void arraycopyGeneric(java.lang.Object, int, java.lang.Object, int, int);
    descriptor: (Ljava/lang/Object;ILjava/lang/Object;II)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=11, args_size=5
        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
         0: .line 265
            aload 0 /* src */
            invokestatic org.graalvm.compiler.api.directives.GraalDirectives.guardingNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 5 /* nonNullSrc */
        start local 5 // java.lang.Object nonNullSrc
         1: .line 266
            aload 2 /* dest */
            invokestatic org.graalvm.compiler.api.directives.GraalDirectives.guardingNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 6 /* nonNullDest */
        start local 6 // java.lang.Object nonNullDest
         2: .line 267
            aload 5 /* nonNullSrc */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.loadHub:(Ljava/lang/Object;)Lorg/graalvm/compiler/hotspot/word/KlassPointer;
            astore 7 /* srcHub */
        start local 7 // org.graalvm.compiler.hotspot.word.KlassPointer srcHub
         3: .line 268
            aload 6 /* nonNullDest */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.loadHub:(Ljava/lang/Object;)Lorg/graalvm/compiler/hotspot/word/KlassPointer;
            astore 8 /* destHub */
        start local 8 // org.graalvm.compiler.hotspot.word.KlassPointer destHub
         4: .line 269
            ldc 0.99
            aload 7 /* srcHub */
            aload 8 /* destHub */
            invokevirtual org.graalvm.compiler.hotspot.word.KlassPointer.equal:(Lorg/graalvm/compiler/hotspot/word/KlassPointer;)Z
            invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 21
            ldc 0.99
            aload 5 /* nonNullSrc */
            aload 6 /* nonNullDest */
            if_acmpeq 5
            iconst_1
            goto 6
      StackMap locals: java.lang.Object int java.lang.Object int int java.lang.Object java.lang.Object org.graalvm.compiler.hotspot.word.KlassPointer org.graalvm.compiler.hotspot.word.KlassPointer
      StackMap stack: double
         5: iconst_0
      StackMap locals: java.lang.Object int java.lang.Object int int java.lang.Object java.lang.Object 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 21
         7: .line 270
            aload 7 /* srcHub */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.checkArrayType:(Lorg/graalvm/compiler/hotspot/word/KlassPointer;)I
            istore 9 /* layoutHelper */
        start local 9 // int layoutHelper
         8: .line 271
            iload 9 /* layoutHelper */
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.layoutHelperElementTypePrimitiveInPlace:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            iand
            ifne 9
            iconst_1
            goto 10
      StackMap locals: int
      StackMap stack:
         9: iconst_0
      StackMap locals:
      StackMap stack: int
        10: istore 10 /* isObjectArray */
        start local 10 // boolean isObjectArray
        11: .line 272
            aload 5 /* nonNullSrc */
            iload 1 /* srcPos */
            aload 6 /* nonNullDest */
            iload 3 /* destPos */
            iload 4 /* length */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.checkLimits:(Ljava/lang/Object;ILjava/lang/Object;II)V
        12: .line 273
            ldc 0.99
            iload 10 /* isObjectArray */
            invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 17
        13: .line 274
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.genericObjectExactCallCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        14: .line 275
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.genericObjectExactCallCopiedCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            iload 4 /* length */
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.add:(I)V
        15: .line 276
            aload 5 /* nonNullSrc */
            iload 1 /* srcPos */
            aload 6 /* nonNullDest */
            iload 3 /* destPos */
            iload 4 /* length */
            getstatic jdk.vm.ci.meta.JavaKind.Object:Ljdk/vm/ci/meta/JavaKind;
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyCallNode.disjointArraycopy:(Ljava/lang/Object;ILjava/lang/Object;IILjdk/vm/ci/meta/JavaKind;)V
        16: .line 277
            goto 24
        17: .line 278
      StackMap locals: int
      StackMap stack:
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.genericPrimitiveCallCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        18: .line 279
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.genericPrimitiveCallCopiedCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            iload 4 /* length */
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.add:(I)V
        19: .line 280
            aload 5 /* nonNullSrc */
            iload 1 /* srcPos */
            aload 6 /* nonNullDest */
            iload 3 /* destPos */
            iload 4 /* length */
            iload 9 /* layoutHelper */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.UnsafeArrayCopyNode.arraycopyPrimitive:(Ljava/lang/Object;ILjava/lang/Object;III)V
        end local 10 // boolean isObjectArray
        end local 9 // int layoutHelper
        20: .line 282
            goto 24
        21: .line 283
      StackMap locals:
      StackMap stack:
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.SystemArraycopyCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        22: .line 284
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.SystemArraycopyCopiedCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            iload 4 /* length */
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.add:(I)V
        23: .line 285
            aload 5 /* nonNullSrc */
            iload 1 /* srcPos */
            aload 6 /* nonNullDest */
            iload 3 /* destPos */
            iload 4 /* length */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        24: .line 287
      StackMap locals:
      StackMap stack:
            return
        end local 8 // org.graalvm.compiler.hotspot.word.KlassPointer destHub
        end local 7 // org.graalvm.compiler.hotspot.word.KlassPointer srcHub
        end local 6 // java.lang.Object nonNullDest
        end local 5 // java.lang.Object nonNullSrc
        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
            1   25     5     nonNullSrc  Ljava/lang/Object;
            2   25     6    nonNullDest  Ljava/lang/Object;
            3   25     7         srcHub  Lorg/graalvm/compiler/hotspot/word/KlassPointer;
            4   25     8        destHub  Lorg/graalvm/compiler/hotspot/word/KlassPointer;
            8   20     9   layoutHelper  I
           11   20    10  isObjectArray  Z
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.Snippet()
    MethodParameters:
         Name  Flags
      src      
      srcPos   
      dest     
      destPos  
      length   

  static org.graalvm.compiler.core.common.LocationIdentity getArrayLocation(jdk.vm.ci.meta.JavaKind);
    descriptor: (Ljdk/vm/ci/meta/JavaKind;)Lorg/graalvm/compiler/core/common/LocationIdentity;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.vm.ci.meta.JavaKind kind
         0: .line 291
            aload 0 /* kind */
            invokestatic org.graalvm.compiler.nodes.NamedLocationIdentity.getArrayLocation:(Ljdk/vm/ci/meta/JavaKind;)Lorg/graalvm/compiler/core/common/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  

  public static void arraycopyUnrolledWork(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: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=8, locals=15, 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 296
            aload 5 /* elementKind */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.arrayIndexScale:(Ljdk/vm/ci/meta/JavaKind;)I
            istore 6 /* scale */
        start local 6 // int scale
         1: .line 297
            aload 5 /* elementKind */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.arrayBaseOffset:(Ljdk/vm/ci/meta/JavaKind;)I
            istore 7 /* arrayBaseOffset */
        start local 7 // int arrayBaseOffset
         2: .line 298
            aload 5 /* elementKind */
            invokestatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.getArrayLocation:(Ljdk/vm/ci/meta/JavaKind;)Lorg/graalvm/compiler/core/common/LocationIdentity;
            astore 8 /* arrayLocation */
        start local 8 // org.graalvm.compiler.core.common.LocationIdentity arrayLocation
         3: .line 299
            aload 0 /* nonNullSrc */
            aload 2 /* nonNullDest */
            if_acmpne 16
            iload 1 /* srcPos */
            iload 3 /* destPos */
            if_icmpge 16
         4: .line 300
            iload 4 /* length */
            iconst_1
            isub
            i2l
            iload 6 /* scale */
            i2l
            lmul
            lstore 9 /* start */
        start local 9 // long start
         5: .line 301
            lload 9 /* start */
            lstore 11 /* i */
        start local 11 // long i
         6: .line 302
            invokestatic org.graalvm.compiler.replacements.nodes.ExplodeLoopNode.explodeLoop:()V
         7: .line 303
            iconst_0
            istore 13 /* iteration */
        start local 13 // int iteration
         8: goto 14
         9: .line 304
      StackMap locals: java.lang.Object int java.lang.Object int int jdk.vm.ci.meta.JavaKind int int org.graalvm.compiler.core.common.LocationIdentity long long int
      StackMap stack:
            lload 11 /* i */
            lconst_0
            lcmp
            iflt 13
        10: .line 305
            aload 0 /* nonNullSrc */
            iload 7 /* arrayBaseOffset */
            i2l
            lload 11 /* i */
            ladd
            iload 1 /* srcPos */
            i2l
            iload 6 /* scale */
            i2l
            lmul
            ladd
            aload 5 /* elementKind */
            aload 8 /* arrayLocation */
            invokestatic org.graalvm.compiler.nodes.extended.UnsafeLoadNode.load:(Ljava/lang/Object;JLjdk/vm/ci/meta/JavaKind;Lorg/graalvm/compiler/core/common/LocationIdentity;)Ljava/lang/Object;
            astore 14 /* a */
        start local 14 // java.lang.Object a
        11: .line 306
            aload 2 /* nonNullDest */
            iload 7 /* arrayBaseOffset */
            lload 11 /* i */
            iload 3 /* destPos */
            i2l
            iload 6 /* scale */
            i2l
            lmul
            ladd
            aload 14 /* a */
            aload 8 /* arrayLocation */
            aload 5 /* elementKind */
            invokestatic org.graalvm.compiler.replacements.nodes.DirectObjectStoreNode.storeObject:(Ljava/lang/Object;IJLjava/lang/Object;Lorg/graalvm/compiler/core/common/LocationIdentity;Ljdk/vm/ci/meta/JavaKind;)V
        12: .line 307
            lload 11 /* i */
            iload 6 /* scale */
            i2l
            lsub
            lstore 11 /* i */
        end local 14 // java.lang.Object a
        13: .line 303
      StackMap locals:
      StackMap stack:
            iinc 13 /* iteration */ 1
      StackMap locals:
      StackMap stack:
        14: iload 13 /* iteration */
            iload 4 /* length */
            if_icmplt 9
        end local 13 // int iteration
        end local 11 // long i
        end local 9 // long start
        15: .line 310
            goto 27
        16: .line 311
      StackMap locals:
      StackMap stack:
            iload 4 /* length */
            i2l
            iload 6 /* scale */
            i2l
            lmul
            lstore 9 /* end */
        start local 9 // long end
        17: .line 312
            lconst_0
            lstore 11 /* i */
        start local 11 // long i
        18: .line 313
            invokestatic org.graalvm.compiler.replacements.nodes.ExplodeLoopNode.explodeLoop:()V
        19: .line 314
            iconst_0
            istore 13 /* iteration */
        start local 13 // int iteration
        20: goto 26
        21: .line 315
      StackMap locals: long long int
      StackMap stack:
            lload 11 /* i */
            lload 9 /* end */
            lcmp
            ifge 25
        22: .line 316
            aload 0 /* nonNullSrc */
            iload 7 /* arrayBaseOffset */
            i2l
            lload 11 /* i */
            ladd
            iload 1 /* srcPos */
            i2l
            iload 6 /* scale */
            i2l
            lmul
            ladd
            aload 5 /* elementKind */
            aload 8 /* arrayLocation */
            invokestatic org.graalvm.compiler.nodes.extended.UnsafeLoadNode.load:(Ljava/lang/Object;JLjdk/vm/ci/meta/JavaKind;Lorg/graalvm/compiler/core/common/LocationIdentity;)Ljava/lang/Object;
            astore 14 /* a */
        start local 14 // java.lang.Object a
        23: .line 317
            aload 2 /* nonNullDest */
            iload 7 /* arrayBaseOffset */
            lload 11 /* i */
            iload 3 /* destPos */
            i2l
            iload 6 /* scale */
            i2l
            lmul
            ladd
            aload 14 /* a */
            aload 8 /* arrayLocation */
            aload 5 /* elementKind */
            invokestatic org.graalvm.compiler.replacements.nodes.DirectObjectStoreNode.storeObject:(Ljava/lang/Object;IJLjava/lang/Object;Lorg/graalvm/compiler/core/common/LocationIdentity;Ljdk/vm/ci/meta/JavaKind;)V
        24: .line 318
            lload 11 /* i */
            iload 6 /* scale */
            i2l
            ladd
            lstore 11 /* i */
        end local 14 // java.lang.Object a
        25: .line 314
      StackMap locals:
      StackMap stack:
            iinc 13 /* iteration */ 1
      StackMap locals:
      StackMap stack:
        26: iload 13 /* iteration */
            iload 4 /* length */
            if_icmplt 21
        end local 13 // int iteration
        end local 11 // long i
        end local 9 // long end
        27: .line 322
      StackMap locals:
      StackMap stack:
            return
        end local 8 // org.graalvm.compiler.core.common.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   28     0       nonNullSrc  Ljava/lang/Object;
            0   28     1           srcPos  I
            0   28     2      nonNullDest  Ljava/lang/Object;
            0   28     3          destPos  I
            0   28     4           length  I
            0   28     5      elementKind  Ljdk/vm/ci/meta/JavaKind;
            1   28     6            scale  I
            2   28     7  arrayBaseOffset  I
            3   28     8    arrayLocation  Lorg/graalvm/compiler/core/common/LocationIdentity;
            5   15     9            start  J
            6   15    11                i  J
            8   15    13        iteration  I
           11   13    14                a  Ljava/lang/Object;
           17   27     9              end  J
           18   27    11                i  J
           20   27    13        iteration  I
           23   25    14                a  Ljava/lang/Object;
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.Snippet()
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
      4:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
      5:
        org.graalvm.compiler.api.replacements.Snippet$ConstantParameter()
    MethodParameters:
             Name  Flags
      nonNullSrc   
      srcPos       
      nonNullDest  
      destPos      
      length       
      elementKind  

  static void createArraycopyCounter(jdk.vm.ci.meta.JavaKind);
    descriptor: (Ljdk/vm/ci/meta/JavaKind;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=9, locals=1, args_size=1
        start local 0 // jdk.vm.ci.meta.JavaKind kind
         0: .line 342
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.arraycopyCallCounters:Ljava/util/EnumMap;
            aload 0 /* kind */
            new org.graalvm.compiler.replacements.SnippetCounter
            dup
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.counters:Lorg/graalvm/compiler/replacements/SnippetCounter$Group;
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            aload 0 /* kind */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "[]{stub}"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            new java.lang.StringBuilder
            dup
            ldc "arraycopy call for "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* kind */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "[] arrays"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial org.graalvm.compiler.replacements.SnippetCounter.<init>:(Lorg/graalvm/compiler/replacements/SnippetCounter$Group;Ljava/lang/String;Ljava/lang/String;)V
            invokevirtual java.util.EnumMap.put:(Ljava/lang/Enum;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 343
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.arraycopyCounters:Ljava/util/EnumMap;
            aload 0 /* kind */
            new org.graalvm.compiler.replacements.SnippetCounter
            dup
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.counters:Lorg/graalvm/compiler/replacements/SnippetCounter$Group;
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            aload 0 /* kind */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "[]{inline}"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            new java.lang.StringBuilder
            dup
            ldc "inline arraycopy for "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* kind */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "[] arrays"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial org.graalvm.compiler.replacements.SnippetCounter.<init>:(Lorg/graalvm/compiler/replacements/SnippetCounter$Group;Ljava/lang/String;Ljava/lang/String;)V
            invokevirtual java.util.EnumMap.put:(Ljava/lang/Enum;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 345
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.arraycopyCallCopiedCounters:Ljava/util/EnumMap;
            aload 0 /* kind */
            new org.graalvm.compiler.replacements.SnippetCounter
            dup
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.copiedCounters:Lorg/graalvm/compiler/replacements/SnippetCounter$Group;
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            aload 0 /* kind */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "[]{stub}"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            new java.lang.StringBuilder
            dup
            ldc "arraycopy call for "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* kind */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "[] arrays"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial org.graalvm.compiler.replacements.SnippetCounter.<init>:(Lorg/graalvm/compiler/replacements/SnippetCounter$Group;Ljava/lang/String;Ljava/lang/String;)V
            invokevirtual java.util.EnumMap.put:(Ljava/lang/Enum;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 346
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.arraycopyCopiedCounters:Ljava/util/EnumMap;
            aload 0 /* kind */
            new org.graalvm.compiler.replacements.SnippetCounter
            dup
            getstatic org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets.copiedCounters:Lorg/graalvm/compiler/replacements/SnippetCounter$Group;
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            aload 0 /* kind */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "[]{inline}"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            new java.lang.StringBuilder
            dup
            ldc "inline arraycopy for "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* kind */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "[] arrays"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial org.graalvm.compiler.replacements.SnippetCounter.<init>:(Lorg/graalvm/compiler/replacements/SnippetCounter$Group;Ljava/lang/String;Ljava/lang/String;)V
            invokevirtual java.util.EnumMap.put:(Ljava/lang/Enum;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         4: .line 347
            return
        end local 0 // jdk.vm.ci.meta.JavaKind kind
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  kind  Ljdk/vm/ci/meta/JavaKind;
    MethodParameters:
      Name  Flags
      kind  
}
SourceFile: "ArrayCopySnippets.java"
NestMembers:
  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
  public Templates = org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets$Templates of org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopySnippets
  public Group = org.graalvm.compiler.replacements.SnippetCounter$Group of org.graalvm.compiler.replacements.SnippetCounter
  public abstract SnippetInfo = org.graalvm.compiler.replacements.SnippetTemplate$SnippetInfo of org.graalvm.compiler.replacements.SnippetTemplate