[9] RFR (S): C1: compiler.escapeAnalysis.TestArrayCopy fails to throw ArrayStoreException

Vladimir Kozlov vladimir.kozlov at oracle.com
Mon Oct 31 19:49:42 UTC 2016


Good.

Thanks,
Vladimir

On 10/31/16 7:09 AM, Zoltán Majó wrote:
> Hi,
>
>
> please review the fix for 8167578.
> https://bugs.openjdk.java.net/browse/JDK-8167578
> http://cr.openjdk.java.net/~zmajo/8167578/webrev.00/
>
> Problem: The System.arraycopy() implementation in C1 does not throw an
> ArrayStoreException withthe open/closed ARM port
> - if the element type of the source array is no assignable to the
> element type of the destination array AND
> - the length of the array is 0.
>
> If the above condition holds, the arraycopy is just not performed
> (because the length is 0), even though the API documentation requires an
> exception to be thrown.  That is different from the way arraycopy works
> on other platforms / the interpreter / C2 (which all comply with the
> specification).
>
>
> Solution: Removed "shortcutting" code in C1. I've not found the
> assert(s) in the stubs mentioned in the comment. It seems the stubs
> accept the length being 0; that is what the comments in the stubs also
> state. The problem is triggered (and can be reproduced) using the
> TestArrayCopy.java test to be added with Volker Simonis's already
> reviewed change for 8159611 [1]. I plan to push the fix for 8159611
> after this fix makes into the repo.
>
>
> Testing: Executed all hotspot tests with the open aarch64 build with (1)
> the default flag settings and also with (2) -Xcomp
> -XX:TieredStopAtLevel=1. No new failures have shown up. Many thanks to
> Roland Westrelin for his help with testing the fix!
>
> Thank you!
>
> Best regards,
>
>
> Zoltan
>
> [1]
> http://cr.openjdk.java.net/~simonis/webrevs/2016/8159611.v4/test/compiler/escapeAnalysis/TestArrayCopy.java.html
>
>


More information about the hotspot-compiler-dev mailing list