8066103: C2's range check smearing allows out of bound array accesses

Roland Westrelin roland.westrelin at oracle.com
Tue Dec 9 19:58:25 UTC 2014


Thanks.

Roland.

> On Dec 9, 2014, at 7:59 PM, John Rose <john.r.rose at oracle.com> wrote:
> 
> Thumbs up.  — John
> 
>> On Dec 9, 2014, at 10:04 AM, Roland Westrelin <roland.westrelin at oracle.com> wrote:
>> 
>>>>> That's good; let's do it that way!
>>>>> 
>>>>> Final suggestion (really):  Add some more test cases, containing duplicate array indexes, to exercise the "local" logic. 
>>>> 
>>>> Thanks John. I’ll add some test cases. Do you want to see another webrev with test cases?
>>> 
>>> I'd like to look at it, so please update the webrev, but you can proceed with a thumbs up from me as a reviewer no matter what.
>> 
>> Here is a new webrev for the change I intend to push today:
>> 
>> http://cr.openjdk.java.net/~roland/8066103/webrev.04/
>> 
>> It has more test cases and the previous change had some leftover code:
>> 
>> 939           if (rc0.ctl->in(0)->in(1) == in(1)) {
>> 940             // If we match the test exactly, then the top test covers
>> 
>> 941             // both our lower and upper bounds. Valid only if there's no
>> 942             // other range check between us and the top test: for all we
>> 943             // know this range check was widened and accesses that
>> 944             // depend on it also depend on the previous range checks to
>> 945             // be correct.
>> 
>> 946             prev_dom = rc0.ctl;
>> 947           } else {
>> 
>> Roland.
> 



More information about the hotspot-compiler-dev mailing list