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

Vladimir Kozlov vladimir.kozlov at oracle.com
Thu Oct 3 11:24:53 PDT 2013


You need to add cast (int)(j - lowval) since argument type is int. Some 
C++ compiler will complain if no cast.

Thanks,
Vladimir K

On 10/3/13 11:04 AM, Vladimir Ivanov wrote:
> Vladimir,
>
> I like the idea to convert j to int64. It looks much cleaner now.
>
> Here's updated webrev:
> http://cr.openjdk.java.net/~vlivanov/8024774/webrev.01
>
> Best regards,
> Vladimir Ivanov
>
> On 10/3/13 8:57 PM, Vladimir Kozlov 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