RFR (XS) 8024774: assert(_con < t->is_tuple()->cnt()) failed: ProjNode::_con must be in range

Christian Thalinger christian.thalinger at oracle.com
Thu Oct 3 10:18:53 PDT 2013


I agree with Vladimir here.  The code looks even more fragile after the fix.

On Oct 3, 2013, at 9:57 AM, Vladimir Kozlov <vladimir.kozlov at oracle.com> wrote:

> I don't think it is right. You need to have check before the loop's body execution.
> Also what about case r->lo() == MIN_INT? (j - lowval) will underflow.
> I think we should use int64 type for these expressions as in other lines of this method.
> 
> Thanks,
> Vladimir
> 
> On 10/2/13 11:55 AM, Vladimir Ivanov wrote:
>> http://cr.openjdk.java.net/~vlivanov/8024774/webrev.00/
>> 7 lines changed: 4 ins; 0 del; 3 mod
>> 
>> If hi->hi() == MAX_INT then, after (j == r->hi() && r == hi), j++ overflows and j <= r->hi() succeeds again (leading to
>> extra iterations and infinite loop in the product).
>> 
>> The fix is to check whether upper limit is reached (j >= r->hi()) and stop iterating, if necessary.
>> 
>> Also, did a small cleanup: eliminated unused parameter from SwitchRange::print.
>> 
>> Testing: failing test case.
>> 
>> Reviewed-by: iveresov, ?
>> 
>> Best regards,
>> Vladimir Ivanov



More information about the hotspot-compiler-dev mailing list