RFR (XS) 8024774: assert(_con < t->is_tuple()->cnt()) failed: ProjNode::_con must be in range
Vladimir Ivanov
vladimir.x.ivanov at oracle.com
Thu Oct 3 11:35:27 PDT 2013
Thanks for catching that.
How about that?
http://cr.openjdk.java.net/~vlivanov/8024774/webrev.02
Best regards,
Vladimir Ivanov
On 10/3/13 10:24 PM, Vladimir Kozlov wrote:
> 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