public class org.graalvm.compiler.hotspot.replacements.arraycopy.HotSpotArraycopySnippets extends org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.graalvm.compiler.hotspot.replacements.arraycopy.HotSpotArraycopySnippets
  super_class: org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets
{
  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.HotSpotArraycopySnippets this
         0: .line 54
            aload 0 /* this */
            invokespecial org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets.<init>:()V
            return
        end local 0 // org.graalvm.compiler.hotspot.replacements.arraycopy.HotSpotArraycopySnippets this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/HotSpotArraycopySnippets;

  public jdk.internal.vm.compiler.word.Pointer loadHub(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Ljdk/internal/vm/compiler/word/Pointer;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.graalvm.compiler.hotspot.replacements.arraycopy.HotSpotArraycopySnippets this
        start local 1 // java.lang.Object nonNullSrc
         0: .line 57
            aload 1 /* nonNullSrc */
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.loadHub:(Ljava/lang/Object;)Lorg/graalvm/compiler/hotspot/word/KlassPointer;
            invokevirtual org.graalvm.compiler.hotspot.word.KlassPointer.asWord:()Lorg/graalvm/compiler/word/Word;
            areturn
        end local 1 // java.lang.Object nonNullSrc
        end local 0 // org.graalvm.compiler.hotspot.replacements.arraycopy.HotSpotArraycopySnippets this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        this  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/HotSpotArraycopySnippets;
            0    1     1  nonNullSrc  Ljava/lang/Object;
    MethodParameters:
            Name  Flags
      nonNullSrc  

  public boolean hubsEqual(java.lang.Object, java.lang.Object);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=3
        start local 0 // org.graalvm.compiler.hotspot.replacements.arraycopy.HotSpotArraycopySnippets this
        start local 1 // java.lang.Object nonNullSrc
        start local 2 // java.lang.Object nonNullDest
         0: .line 62
            aload 0 /* this */
            aload 1 /* nonNullSrc */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.HotSpotArraycopySnippets.loadHub:(Ljava/lang/Object;)Ljdk/internal/vm/compiler/word/Pointer;
            astore 3 /* srcHub */
        start local 3 // jdk.internal.vm.compiler.word.Pointer srcHub
         1: .line 63
            aload 0 /* this */
            aload 2 /* nonNullDest */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.HotSpotArraycopySnippets.loadHub:(Ljava/lang/Object;)Ljdk/internal/vm/compiler/word/Pointer;
            astore 4 /* destHub */
        start local 4 // jdk.internal.vm.compiler.word.Pointer destHub
         2: .line 64
            aload 3 /* srcHub */
            aload 4 /* destHub */
            if_acmpne 3
            iconst_1
            ireturn
      StackMap locals: jdk.internal.vm.compiler.word.Pointer jdk.internal.vm.compiler.word.Pointer
      StackMap stack:
         3: iconst_0
            ireturn
        end local 4 // jdk.internal.vm.compiler.word.Pointer destHub
        end local 3 // jdk.internal.vm.compiler.word.Pointer srcHub
        end local 2 // java.lang.Object nonNullDest
        end local 1 // java.lang.Object nonNullSrc
        end local 0 // org.graalvm.compiler.hotspot.replacements.arraycopy.HotSpotArraycopySnippets this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    4     0         this  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/HotSpotArraycopySnippets;
            0    4     1   nonNullSrc  Ljava/lang/Object;
            0    4     2  nonNullDest  Ljava/lang/Object;
            1    4     3       srcHub  Ljdk/internal/vm/compiler/word/Pointer;
            2    4     4      destHub  Ljdk/internal/vm/compiler/word/Pointer;
    MethodParameters:
             Name  Flags
      nonNullSrc   
      nonNullDest  

  public org.graalvm.compiler.word.Word getSuperCheckOffset(jdk.internal.vm.compiler.word.Pointer);
    descriptor: (Ljdk/internal/vm/compiler/word/Pointer;)Lorg/graalvm/compiler/word/Word;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.graalvm.compiler.hotspot.replacements.arraycopy.HotSpotArraycopySnippets this
        start local 1 // jdk.internal.vm.compiler.word.Pointer destElemKlass
         0: .line 68
            aload 1 /* 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:Ljdk/internal/vm/compiler/word/LocationIdentity;
            invokeinterface jdk.internal.vm.compiler.word.Pointer.readInt:(ILjdk/internal/vm/compiler/word/LocationIdentity;)I
            invokestatic jdk.internal.vm.compiler.word.WordFactory.signed:(I)Ljdk/internal/vm/compiler/word/SignedWord;
            checkcast org.graalvm.compiler.word.Word
            areturn
        end local 1 // jdk.internal.vm.compiler.word.Pointer destElemKlass
        end local 0 // org.graalvm.compiler.hotspot.replacements.arraycopy.HotSpotArraycopySnippets this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0           this  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/HotSpotArraycopySnippets;
            0    1     1  destElemKlass  Ljdk/internal/vm/compiler/word/Pointer;
    MethodParameters:
               Name  Flags
      destElemKlass  

  public int getReadLayoutHelper(jdk.internal.vm.compiler.word.Pointer);
    descriptor: (Ljdk/internal/vm/compiler/word/Pointer;)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.graalvm.compiler.hotspot.replacements.arraycopy.HotSpotArraycopySnippets this
        start local 1 // jdk.internal.vm.compiler.word.Pointer srcHub
         0: .line 72
            aload 1 /* srcHub */
            invokestatic org.graalvm.compiler.hotspot.word.KlassPointer.fromWord:(Ljdk/internal/vm/compiler/word/Pointer;)Lorg/graalvm/compiler/hotspot/word/KlassPointer;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.readLayoutHelper:(Lorg/graalvm/compiler/hotspot/word/KlassPointer;)I
            ireturn
        end local 1 // jdk.internal.vm.compiler.word.Pointer srcHub
        end local 0 // org.graalvm.compiler.hotspot.replacements.arraycopy.HotSpotArraycopySnippets this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/HotSpotArraycopySnippets;
            0    1     1  srcHub  Ljdk/internal/vm/compiler/word/Pointer;
    MethodParameters:
        Name  Flags
      srcHub  

  public boolean layoutHelpersEqual(java.lang.Object, java.lang.Object);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // org.graalvm.compiler.hotspot.replacements.arraycopy.HotSpotArraycopySnippets this
        start local 1 // java.lang.Object nonNullSrc
        start local 2 // java.lang.Object nonNullDest
         0: .line 77
            aload 0 /* this */
            aload 1 /* nonNullSrc */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.HotSpotArraycopySnippets.loadHub:(Ljava/lang/Object;)Ljdk/internal/vm/compiler/word/Pointer;
            astore 3 /* srcHub */
        start local 3 // jdk.internal.vm.compiler.word.Pointer srcHub
         1: .line 78
            aload 0 /* this */
            aload 2 /* nonNullDest */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.HotSpotArraycopySnippets.loadHub:(Ljava/lang/Object;)Ljdk/internal/vm/compiler/word/Pointer;
            astore 4 /* destHub */
        start local 4 // jdk.internal.vm.compiler.word.Pointer destHub
         2: .line 79
            aload 0 /* this */
            aload 3 /* srcHub */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.HotSpotArraycopySnippets.getReadLayoutHelper:(Ljdk/internal/vm/compiler/word/Pointer;)I
            aload 0 /* this */
            aload 4 /* destHub */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.HotSpotArraycopySnippets.getReadLayoutHelper:(Ljdk/internal/vm/compiler/word/Pointer;)I
            if_icmpne 3
            iconst_1
            ireturn
      StackMap locals: jdk.internal.vm.compiler.word.Pointer jdk.internal.vm.compiler.word.Pointer
      StackMap stack:
         3: iconst_0
            ireturn
        end local 4 // jdk.internal.vm.compiler.word.Pointer destHub
        end local 3 // jdk.internal.vm.compiler.word.Pointer srcHub
        end local 2 // java.lang.Object nonNullDest
        end local 1 // java.lang.Object nonNullSrc
        end local 0 // org.graalvm.compiler.hotspot.replacements.arraycopy.HotSpotArraycopySnippets this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    4     0         this  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/HotSpotArraycopySnippets;
            0    4     1   nonNullSrc  Ljava/lang/Object;
            0    4     2  nonNullDest  Ljava/lang/Object;
            1    4     3       srcHub  Ljdk/internal/vm/compiler/word/Pointer;
            2    4     4      destHub  Ljdk/internal/vm/compiler/word/Pointer;
    MethodParameters:
             Name  Flags
      nonNullSrc   
      nonNullDest  

  public jdk.internal.vm.compiler.word.Pointer getDestElemClass(jdk.internal.vm.compiler.word.Pointer);
    descriptor: (Ljdk/internal/vm/compiler/word/Pointer;)Ljdk/internal/vm/compiler/word/Pointer;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // org.graalvm.compiler.hotspot.replacements.arraycopy.HotSpotArraycopySnippets this
        start local 1 // jdk.internal.vm.compiler.word.Pointer destKlassPointer
         0: .line 83
            aload 1 /* destKlassPointer */
            invokestatic org.graalvm.compiler.hotspot.word.KlassPointer.fromWord:(Ljdk/internal/vm/compiler/word/Pointer;)Lorg/graalvm/compiler/hotspot/word/KlassPointer;
            astore 2 /* destKlass */
        start local 2 // org.graalvm.compiler.hotspot.word.KlassPointer destKlass
         1: .line 84
            aload 2 /* 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
         2: .line 85
            getstatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.OBJ_ARRAY_KLASS_ELEMENT_KLASS_LOCATION:Ljdk/internal/vm/compiler/word/LocationIdentity;
         3: .line 84
            invokevirtual org.graalvm.compiler.hotspot.word.KlassPointer.readKlassPointer:(ILjdk/internal/vm/compiler/word/LocationIdentity;)Lorg/graalvm/compiler/hotspot/word/KlassPointer;
         4: .line 85
            invokevirtual org.graalvm.compiler.hotspot.word.KlassPointer.asWord:()Lorg/graalvm/compiler/word/Word;
         5: .line 84
            areturn
        end local 2 // org.graalvm.compiler.hotspot.word.KlassPointer destKlass
        end local 1 // jdk.internal.vm.compiler.word.Pointer destKlassPointer
        end local 0 // org.graalvm.compiler.hotspot.replacements.arraycopy.HotSpotArraycopySnippets this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    6     0              this  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/HotSpotArraycopySnippets;
            0    6     1  destKlassPointer  Ljdk/internal/vm/compiler/word/Pointer;
            1    6     2         destKlass  Lorg/graalvm/compiler/hotspot/word/KlassPointer;
    MethodParameters:
                  Name  Flags
      destKlassPointer  

  protected int heapWordSize();
    descriptor: ()I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.hotspot.replacements.arraycopy.HotSpotArraycopySnippets this
         0: .line 90
            getstatic org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            invokestatic org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.getHeapWordSize:(Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;)I
            ireturn
        end local 0 // org.graalvm.compiler.hotspot.replacements.arraycopy.HotSpotArraycopySnippets this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/HotSpotArraycopySnippets;

  protected void doExactArraycopyWithSlowPathWork(java.lang.Object, int, java.lang.Object, int, int, jdk.vm.ci.meta.JavaKind, jdk.internal.vm.compiler.word.LocationIdentity, org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters, jdk.vm.ci.meta.MetaAccessProvider);
    descriptor: (Ljava/lang/Object;ILjava/lang/Object;IILjdk/vm/ci/meta/JavaKind;Ljdk/internal/vm/compiler/word/LocationIdentity;Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Counters;Ljdk/vm/ci/meta/MetaAccessProvider;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=7, locals=19, args_size=10
        start local 0 // org.graalvm.compiler.hotspot.replacements.arraycopy.HotSpotArraycopySnippets this
        start local 1 // java.lang.Object src
        start local 2 // int srcPos
        start local 3 // java.lang.Object dest
        start local 4 // int destPos
        start local 5 // int length
        start local 6 // jdk.vm.ci.meta.JavaKind elementKind
        start local 7 // jdk.internal.vm.compiler.word.LocationIdentity arrayLocation
        start local 8 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters counters
        start local 9 // jdk.vm.ci.meta.MetaAccessProvider metaAccess
         0: .line 96
            aload 9 /* metaAccess */
            aload 6 /* elementKind */
            invokestatic org.graalvm.compiler.replacements.ReplacementsUtil.arrayIndexScale:(Ljdk/vm/ci/meta/MetaAccessProvider;Ljdk/vm/ci/meta/JavaKind;)I
            istore 10 /* scale */
        start local 10 // int scale
         1: .line 97
            aload 9 /* metaAccess */
            aload 6 /* elementKind */
            invokestatic org.graalvm.compiler.replacements.ReplacementsUtil.getArrayBaseOffset:(Ljdk/vm/ci/meta/MetaAccessProvider;Ljdk/vm/ci/meta/JavaKind;)I
            istore 11 /* arrayBaseOffset */
        start local 11 // int arrayBaseOffset
         2: .line 98
            iload 11 /* arrayBaseOffset */
            i2l
            iload 2 /* srcPos */
            i2l
            iload 10 /* scale */
            i2l
            lmul
            ladd
            lstore 12 /* sourceOffset */
        start local 12 // long sourceOffset
         3: .line 99
            iload 11 /* arrayBaseOffset */
            i2l
            iload 4 /* destPos */
            i2l
            iload 10 /* scale */
            i2l
            lmul
            ladd
            lstore 14 /* destOffset */
        start local 14 // long destOffset
         4: .line 101
            invokestatic org.graalvm.compiler.nodes.SnippetAnchorNode.anchor:()Lorg/graalvm/compiler/nodes/extended/GuardingNode;
            astore 16 /* anchor */
        start local 16 // org.graalvm.compiler.nodes.extended.GuardingNode anchor
         5: .line 102
            ldc 0.09999999999999998
            aload 1 /* src */
            aload 3 /* dest */
            if_acmpne 6
            iload 2 /* srcPos */
            iload 4 /* destPos */
            if_icmpge 6
            iconst_1
            goto 7
      StackMap locals: org.graalvm.compiler.hotspot.replacements.arraycopy.HotSpotArraycopySnippets java.lang.Object int java.lang.Object int int jdk.vm.ci.meta.JavaKind jdk.internal.vm.compiler.word.LocationIdentity org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters jdk.vm.ci.meta.MetaAccessProvider int int long long org.graalvm.compiler.nodes.extended.GuardingNode
      StackMap stack: double
         6: iconst_0
      StackMap locals: org.graalvm.compiler.hotspot.replacements.arraycopy.HotSpotArraycopySnippets java.lang.Object int java.lang.Object int int jdk.vm.ci.meta.JavaKind jdk.internal.vm.compiler.word.LocationIdentity org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters jdk.vm.ci.meta.MetaAccessProvider int int long long org.graalvm.compiler.nodes.extended.GuardingNode
      StackMap stack: double int
         7: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 15
         8: .line 104
            iload 5 /* length */
            iconst_1
            isub
            istore 17 /* position */
        start local 17 // int position
         9: goto 13
        10: .line 105
      StackMap locals: int
      StackMap stack:
            aload 1 /* src */
            lload 12 /* sourceOffset */
            iload 17 /* position */
            i2l
            iload 10 /* scale */
            i2l
            lmul
            ladd
            aload 6 /* elementKind */
            aload 7 /* arrayLocation */
            aload 16 /* anchor */
            invokestatic org.graalvm.compiler.nodes.extended.GuardedUnsafeLoadNode.guardedLoad:(Ljava/lang/Object;JLjdk/vm/ci/meta/JavaKind;Ljdk/internal/vm/compiler/word/LocationIdentity;Lorg/graalvm/compiler/nodes/extended/GuardingNode;)Ljava/lang/Object;
            astore 18 /* value */
        start local 18 // java.lang.Object value
        11: .line 106
            aload 3 /* dest */
            lload 14 /* destOffset */
            iload 17 /* position */
            i2l
            iload 10 /* scale */
            i2l
            lmul
            ladd
            aload 18 /* value */
            aload 6 /* elementKind */
            aload 7 /* arrayLocation */
            iconst_1
            invokestatic org.graalvm.compiler.nodes.extended.RawStoreNode.storeObject:(Ljava/lang/Object;JLjava/lang/Object;Ljdk/vm/ci/meta/JavaKind;Ljdk/internal/vm/compiler/word/LocationIdentity;Z)Ljava/lang/Object;
            pop
        end local 18 // java.lang.Object value
        12: .line 104
            iinc 17 /* position */ -1
      StackMap locals:
      StackMap stack:
        13: iload 17 /* position */
            ifge 10
        end local 17 // int position
        14: .line 108
            goto 21
        15: .line 109
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 17 /* position */
        start local 17 // int position
        16: goto 20
        17: .line 110
      StackMap locals: int
      StackMap stack:
            aload 1 /* src */
            lload 12 /* sourceOffset */
            iload 17 /* position */
            i2l
            iload 10 /* scale */
            i2l
            lmul
            ladd
            aload 6 /* elementKind */
            aload 7 /* arrayLocation */
            aload 16 /* anchor */
            invokestatic org.graalvm.compiler.nodes.extended.GuardedUnsafeLoadNode.guardedLoad:(Ljava/lang/Object;JLjdk/vm/ci/meta/JavaKind;Ljdk/internal/vm/compiler/word/LocationIdentity;Lorg/graalvm/compiler/nodes/extended/GuardingNode;)Ljava/lang/Object;
            astore 18 /* value */
        start local 18 // java.lang.Object value
        18: .line 111
            aload 3 /* dest */
            lload 14 /* destOffset */
            iload 17 /* position */
            i2l
            iload 10 /* scale */
            i2l
            lmul
            ladd
            aload 18 /* value */
            aload 6 /* elementKind */
            aload 7 /* arrayLocation */
            iconst_1
            invokestatic org.graalvm.compiler.nodes.extended.RawStoreNode.storeObject:(Ljava/lang/Object;JLjava/lang/Object;Ljdk/vm/ci/meta/JavaKind;Ljdk/internal/vm/compiler/word/LocationIdentity;Z)Ljava/lang/Object;
            pop
        end local 18 // java.lang.Object value
        19: .line 109
            iinc 17 /* position */ 1
      StackMap locals:
      StackMap stack:
        20: iload 17 /* position */
            iload 5 /* length */
            if_icmplt 17
        end local 17 // int position
        21: .line 114
      StackMap locals:
      StackMap stack:
            return
        end local 16 // org.graalvm.compiler.nodes.extended.GuardingNode anchor
        end local 14 // long destOffset
        end local 12 // long sourceOffset
        end local 11 // int arrayBaseOffset
        end local 10 // int scale
        end local 9 // jdk.vm.ci.meta.MetaAccessProvider metaAccess
        end local 8 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters counters
        end local 7 // jdk.internal.vm.compiler.word.LocationIdentity arrayLocation
        end local 6 // jdk.vm.ci.meta.JavaKind elementKind
        end local 5 // int length
        end local 4 // int destPos
        end local 3 // java.lang.Object dest
        end local 2 // int srcPos
        end local 1 // java.lang.Object src
        end local 0 // org.graalvm.compiler.hotspot.replacements.arraycopy.HotSpotArraycopySnippets this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   22     0             this  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/HotSpotArraycopySnippets;
            0   22     1              src  Ljava/lang/Object;
            0   22     2           srcPos  I
            0   22     3             dest  Ljava/lang/Object;
            0   22     4          destPos  I
            0   22     5           length  I
            0   22     6      elementKind  Ljdk/vm/ci/meta/JavaKind;
            0   22     7    arrayLocation  Ljdk/internal/vm/compiler/word/LocationIdentity;
            0   22     8         counters  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Counters;
            0   22     9       metaAccess  Ljdk/vm/ci/meta/MetaAccessProvider;
            1   22    10            scale  I
            2   22    11  arrayBaseOffset  I
            3   22    12     sourceOffset  J
            4   22    14       destOffset  J
            5   22    16           anchor  Lorg/graalvm/compiler/nodes/extended/GuardingNode;
            9   14    17         position  I
           11   12    18            value  Ljava/lang/Object;
           16   21    17         position  I
           18   19    18            value  Ljava/lang/Object;
    MethodParameters:
               Name  Flags
      src            
      srcPos         
      dest           
      destPos        
      length         
      elementKind    
      arrayLocation  
      counters       
      metaAccess     

  protected void doCheckcastArraycopyWithSlowPathWork(java.lang.Object, int, java.lang.Object, int, int, jdk.vm.ci.meta.JavaKind, jdk.internal.vm.compiler.word.LocationIdentity, org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters);
    descriptor: (Ljava/lang/Object;ILjava/lang/Object;IILjdk/vm/ci/meta/JavaKind;Ljdk/internal/vm/compiler/word/LocationIdentity;Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Counters;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=8, locals=16, args_size=9
        start local 0 // org.graalvm.compiler.hotspot.replacements.arraycopy.HotSpotArraycopySnippets this
        start local 1 // java.lang.Object src
        start local 2 // int srcPos
        start local 3 // java.lang.Object dest
        start local 4 // int destPos
        start local 5 // int length
        start local 6 // jdk.vm.ci.meta.JavaKind elementKind
        start local 7 // jdk.internal.vm.compiler.word.LocationIdentity arrayLocation
        start local 8 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters counters
         0: .line 119
            ldc 0.9
            iload 5 /* length */
            ifle 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack: double
         1: iconst_0
      StackMap locals: org.graalvm.compiler.hotspot.replacements.arraycopy.HotSpotArraycopySnippets java.lang.Object int java.lang.Object int int jdk.vm.ci.meta.JavaKind jdk.internal.vm.compiler.word.LocationIdentity org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters
      StackMap stack: double int
         2: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 26
         3: .line 120
            aload 1 /* src */
            invokestatic org.graalvm.compiler.nodes.PiNode.asNonNullObject:(Ljava/lang/Object;)Ljava/lang/Class;
            astore 9 /* nonNullSrc */
        start local 9 // java.lang.Object nonNullSrc
         4: .line 121
            aload 3 /* dest */
            invokestatic org.graalvm.compiler.nodes.PiNode.asNonNullObject:(Ljava/lang/Object;)Ljava/lang/Class;
            astore 10 /* nonNullDest */
        start local 10 // java.lang.Object nonNullDest
         5: .line 122
            aload 0 /* this */
            aload 9 /* nonNullSrc */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.HotSpotArraycopySnippets.loadHub:(Ljava/lang/Object;)Ljdk/internal/vm/compiler/word/Pointer;
            astore 11 /* srcKlass */
        start local 11 // jdk.internal.vm.compiler.word.Pointer srcKlass
         6: .line 123
            aload 0 /* this */
            aload 10 /* nonNullDest */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.HotSpotArraycopySnippets.loadHub:(Ljava/lang/Object;)Ljdk/internal/vm/compiler/word/Pointer;
            astore 12 /* destKlass */
        start local 12 // jdk.internal.vm.compiler.word.Pointer destKlass
         7: .line 124
            ldc 0.6
            aload 11 /* srcKlass */
            aload 12 /* destKlass */
            if_acmpne 8
            iconst_1
            goto 9
      StackMap locals: org.graalvm.compiler.hotspot.replacements.arraycopy.HotSpotArraycopySnippets java.lang.Object int java.lang.Object int int jdk.vm.ci.meta.JavaKind jdk.internal.vm.compiler.word.LocationIdentity org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters java.lang.Object java.lang.Object jdk.internal.vm.compiler.word.Pointer jdk.internal.vm.compiler.word.Pointer
      StackMap stack: double
         8: iconst_0
      StackMap locals: org.graalvm.compiler.hotspot.replacements.arraycopy.HotSpotArraycopySnippets java.lang.Object int java.lang.Object int int jdk.vm.ci.meta.JavaKind jdk.internal.vm.compiler.word.LocationIdentity org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters java.lang.Object java.lang.Object jdk.internal.vm.compiler.word.Pointer jdk.internal.vm.compiler.word.Pointer
      StackMap stack: double int
         9: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifne 12
            ldc 0.6
            aload 10 /* nonNullDest */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            ldc [Ljava/lang/Object;
            if_acmpne 10
            iconst_1
            goto 11
      StackMap locals:
      StackMap stack: double
        10: iconst_0
      StackMap locals: org.graalvm.compiler.hotspot.replacements.arraycopy.HotSpotArraycopySnippets java.lang.Object int java.lang.Object int int jdk.vm.ci.meta.JavaKind jdk.internal.vm.compiler.word.LocationIdentity org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters java.lang.Object java.lang.Object jdk.internal.vm.compiler.word.Pointer jdk.internal.vm.compiler.word.Pointer
      StackMap stack: double int
        11: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 16
        12: .line 126
      StackMap locals:
      StackMap stack:
            aload 8 /* counters */
            getfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters.objectCheckcastSameTypeCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        13: .line 127
            aload 8 /* counters */
            getfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters.objectCheckcastSameTypeCopiedCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            iload 5 /* length */
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.add:(I)V
        14: .line 128
            aload 9 /* nonNullSrc */
            iload 2 /* srcPos */
            aload 10 /* nonNullDest */
            iload 4 /* destPos */
            iload 5 /* length */
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.HotSpotArraycopySnippets.heapWordSize:()I
            invokestatic org.graalvm.compiler.replacements.arraycopy.ArrayCopyCallNode.arraycopyObjectKillsAny:(Ljava/lang/Object;ILjava/lang/Object;III)V
        15: .line 129
            goto 26
        16: .line 130
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 12 /* destKlass */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.HotSpotArraycopySnippets.getDestElemClass:(Ljdk/internal/vm/compiler/word/Pointer;)Ljdk/internal/vm/compiler/word/Pointer;
            astore 13 /* destElemKlass */
        start local 13 // jdk.internal.vm.compiler.word.Pointer destElemKlass
        17: .line 131
            aload 0 /* this */
            aload 13 /* destElemKlass */
            invokevirtual org.graalvm.compiler.hotspot.replacements.arraycopy.HotSpotArraycopySnippets.getSuperCheckOffset:(Ljdk/internal/vm/compiler/word/Pointer;)Lorg/graalvm/compiler/word/Word;
            astore 14 /* superCheckOffset */
        start local 14 // org.graalvm.compiler.word.Word superCheckOffset
        18: .line 133
            aload 8 /* counters */
            getfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters.objectCheckcastDifferentTypeCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.inc:()V
        19: .line 134
            aload 8 /* counters */
            getfield org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters.objectCheckcastDifferentTypeCopiedCounter:Lorg/graalvm/compiler/replacements/SnippetCounter;
            iload 5 /* length */
            invokevirtual org.graalvm.compiler.replacements.SnippetCounter.add:(I)V
        20: .line 136
            aload 9 /* nonNullSrc */
            iload 2 /* srcPos */
            aload 10 /* nonNullDest */
            iload 4 /* destPos */
            iload 5 /* length */
            aload 14 /* superCheckOffset */
            aload 13 /* destElemKlass */
            iconst_0
            invokestatic org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.checkcastArraycopy:(Ljava/lang/Object;ILjava/lang/Object;IILorg/graalvm/compiler/word/Word;Ljava/lang/Object;Z)I
            istore 15 /* copiedElements */
        start local 15 // int copiedElements
        21: .line 137
            ldc 0.010000000000000009
            iload 15 /* copiedElements */
            ifeq 22
            iconst_1
            goto 23
      StackMap locals: org.graalvm.compiler.hotspot.replacements.arraycopy.HotSpotArraycopySnippets java.lang.Object int java.lang.Object int int jdk.vm.ci.meta.JavaKind jdk.internal.vm.compiler.word.LocationIdentity org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters java.lang.Object java.lang.Object jdk.internal.vm.compiler.word.Pointer jdk.internal.vm.compiler.word.Pointer jdk.internal.vm.compiler.word.Pointer org.graalvm.compiler.word.Word int
      StackMap stack: double
        22: iconst_0
      StackMap locals: org.graalvm.compiler.hotspot.replacements.arraycopy.HotSpotArraycopySnippets java.lang.Object int java.lang.Object int int jdk.vm.ci.meta.JavaKind jdk.internal.vm.compiler.word.LocationIdentity org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters java.lang.Object java.lang.Object jdk.internal.vm.compiler.word.Pointer jdk.internal.vm.compiler.word.Pointer jdk.internal.vm.compiler.word.Pointer org.graalvm.compiler.word.Word int
      StackMap stack: double int
        23: invokestatic org.graalvm.compiler.nodes.extended.BranchProbabilityNode.probability:(DZ)Z
            ifeq 26
        24: .line 142
            iload 15 /* copiedElements */
            iconst_m1
            ixor
            istore 15 /* copiedElements */
        25: .line 143
            aload 9 /* nonNullSrc */
            iload 2 /* srcPos */
            iload 15 /* copiedElements */
            iadd
            aload 10 /* nonNullDest */
            iload 4 /* destPos */
            iload 15 /* copiedElements */
            iadd
            iload 5 /* length */
            iload 15 /* copiedElements */
            isub
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        end local 15 // int copiedElements
        end local 14 // org.graalvm.compiler.word.Word superCheckOffset
        end local 13 // jdk.internal.vm.compiler.word.Pointer destElemKlass
        end local 12 // jdk.internal.vm.compiler.word.Pointer destKlass
        end local 11 // jdk.internal.vm.compiler.word.Pointer srcKlass
        end local 10 // java.lang.Object nonNullDest
        end local 9 // java.lang.Object nonNullSrc
        26: .line 147
      StackMap locals: org.graalvm.compiler.hotspot.replacements.arraycopy.HotSpotArraycopySnippets java.lang.Object int java.lang.Object int int jdk.vm.ci.meta.JavaKind jdk.internal.vm.compiler.word.LocationIdentity org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters
      StackMap stack:
            return
        end local 8 // org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters counters
        end local 7 // jdk.internal.vm.compiler.word.LocationIdentity arrayLocation
        end local 6 // jdk.vm.ci.meta.JavaKind elementKind
        end local 5 // int length
        end local 4 // int destPos
        end local 3 // java.lang.Object dest
        end local 2 // int srcPos
        end local 1 // java.lang.Object src
        end local 0 // org.graalvm.compiler.hotspot.replacements.arraycopy.HotSpotArraycopySnippets this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   27     0              this  Lorg/graalvm/compiler/hotspot/replacements/arraycopy/HotSpotArraycopySnippets;
            0   27     1               src  Ljava/lang/Object;
            0   27     2            srcPos  I
            0   27     3              dest  Ljava/lang/Object;
            0   27     4           destPos  I
            0   27     5            length  I
            0   27     6       elementKind  Ljdk/vm/ci/meta/JavaKind;
            0   27     7     arrayLocation  Ljdk/internal/vm/compiler/word/LocationIdentity;
            0   27     8          counters  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopySnippets$Counters;
            4   26     9        nonNullSrc  Ljava/lang/Object;
            5   26    10       nonNullDest  Ljava/lang/Object;
            6   26    11          srcKlass  Ljdk/internal/vm/compiler/word/Pointer;
            7   26    12         destKlass  Ljdk/internal/vm/compiler/word/Pointer;
           17   26    13     destElemKlass  Ljdk/internal/vm/compiler/word/Pointer;
           18   26    14  superCheckOffset  Lorg/graalvm/compiler/word/Word;
           21   26    15    copiedElements  I
    MethodParameters:
               Name  Flags
      src            
      srcPos         
      dest           
      destPos        
      length         
      elementKind    
      arrayLocation  
      counters       
}
SourceFile: "HotSpotArraycopySnippets.java"
InnerClasses:
  protected Counters = org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets$Counters of org.graalvm.compiler.replacements.arraycopy.ArrayCopySnippets