[9] RFR(S): 8179678: ArrayCopy with same src and dst can cause incorrect execution or compiler crash

Roland Westrelin rwestrel at redhat.com
Thu May 11 08:33:46 UTC 2017


When possible:

System.arraycopy(src, spos, dst, dpos, l);
v = dst[i];

is transformed to:

System.arraycopy(src, spos, dst, dpos, l);
v = src[i + (spos - dpos)];

So the arraycopy has a chance to be eliminated. This breaks if src and
dst are the same arrays and src[i + (spos - dpos)] is written to by the
arraycopy. We need to validate that either src[i + (spos - dpos)] is not
modified by the arraycopy or src and dst are not the same.


More information about the hotspot-compiler-dev mailing list