# HG changeset patch # User Bernhard Urban # Date 1417691607 -3600 # Node ID 20e498cfa409cb1a42bf705dd7fba81bddfb9907 # Parent 6a6291c31657920dec2332614f57c2a3728f4b92 checkcastArraycopy: if src and dest are equal, unchecked variant can be used diff -r 6a6291c31657 -r 20e498cfa409 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopySnippets.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopySnippets.java Wed Dec 03 20:40:30 2014 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopySnippets.java Thu Dec 04 12:13:27 2014 +0100 @@ -191,7 +191,8 @@ Object nonNullDest = guardingNonNull(dest); checkLimits(nonNullSrc, srcPos, nonNullDest, destPos, length); if (probability(SLOW_PATH_PROBABILITY, nonNullSrc == nonNullDest)) { - System.arraycopy(nonNullSrc, srcPos, nonNullDest, destPos, length); + // no storecheck required. + ArrayCopyCallNode.arraycopy(nonNullSrc, srcPos, nonNullDest, destPos, length, Kind.Object, false, false); } else { KlassPointer destElemKlass = loadHub(nonNullDest); checkcastArraycopyHelper(srcPos, destPos, length, nonNullSrc, nonNullDest, destElemKlass);