RFR: 8143219: AArch64 broken by 8141132: JEP 254: Compact Strings

Tobias Hartmann tobias.hartmann at oracle.com
Tue Nov 24 10:20:05 UTC 2015

Hi Andrew,

On 24.11.2015 10:35, Andrew Haley wrote:
> Incidentally, why is the range check done in LibraryCallKit?  I thought
> we were moving to writing such checks in Java.

I don't think we have a general rule. In this case, I decided to move the range checks into the intrinsics because there are some problems with range checks in the Java code. For example with JDK-8142303, the Java range check is not compiled and C2 compilation crashes because an invalid, constant array index is propagated to the intrinsic (see my description in the RFR [1]). Other problems include JDK-6675699 [2] where we fail because there is no dependency between the range check and the ConvI2L node. And in general, there is always the risk that someone uses an intrinsic without the range-check wrapper, causing runtime exceptions that are hard to debug.


[1] http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/2015-November/019834.html
[2] https://bugs.openjdk.java.net/browse/JDK-6675699

More information about the hotspot-dev mailing list