[12] RFR(S): 8215313: [AOT] java/lang/String/Split.java fails with AOTed java.base

Doug Simon doug.simon at oracle.com
Fri Jan 11 09:02:24 UTC 2019


Hi Josef,

> On 10 Jan 2019, at 22:52, Josef Haider <josef.haider at khg.jku.at> wrote:
> 
> Agreed, cmpw/cmpb would make more sense here, i just wanted
> to keep the changeset minimal, since the entire method may soon be
> changed again, anyway. 
> 
Can you please say more about this? Would you recommend applying your current patch as is to fix the crash or will you have the changes you mention ready soon?

-Doug
>> Taking another look, it seems like cmpl could be replaced with the 
>> size-appropriate cmpb, cmpw, or cmpl based on byteMode(kind) and 
>> findTwoCharPrefix, but I guess AMD64Assembler only supports cmpl and 
>> cmpq right now.
>> 
>> dl
>> 
>> On 1/10/19 10:04 AM, dean.long at oracle.com <https://mail.openjdk.java.net/mailman/listinfo/hotspot-compiler-dev> wrote:
>> > Is it OK to modify the values of searchValue[i]?  If the search value 
>> > is already sign-extended, how about sign-extending cmpResult instead 
>> > of zero-extending searchValue?
>> >
>> > dl
>> >
>> > On 1/10/19 7:09 AM, Doug Simon wrote:
>> >> Please review this fix supplied by Josef Haider for an incorrect 
>> >> compilation of String.split.
>> >>
>> >> When the String.indexOf intrinsic on AMD64 reaches the end of a 
>> >> string, it tries to vectorize the last compare operations by reading 
>> >> past the bounds of the character/byte array. This is not safe if the 
>> >> out-of-bounds read would cross a page boundary, so in that case 
>> >> characters are compared one-by-one. This is done with a 
>> >> `cmpl`-instruction, which only works as long as the bytes/chars are 
>> >> not sign extended.
>> >>
>> >> The fix is to simply `and` the characters we are searching for with 
>> >> `0xff`/`0xffff` in order to eliminate any erroneous sign extensions.
>> >>
>> >> http://cr.openjdk.java.net/~dnsimon/8215313 <http://cr.openjdk.java.net/~dnsimon/8215313>
>> >> https://bugs.openjdk.java.net/browse/JDK-8215313 <https://bugs.openjdk.java.net/browse/JDK-8215313>
>> >>
>> >> -Doug
>> >
>> 
> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/attachments/20190111/bb5f1867/attachment.html>


More information about the hotspot-compiler-dev mailing list