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 13:41:11 PDT 2013
Looks good.
On Oct 3, 2013, at 11:35 AM, Vladimir Ivanov <vladimir.x.ivanov at oracle.com> wrote:
> 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