RFR(XS) 8011415: CTW on Sparc: assert(lrg.lo_degree()) failed:
Niclas Adlertz
niclas.adlertz at oracle.com
Sun Oct 13 23:40:38 PDT 2013
Fixed. Thanks.
Kind Regards,
Niclas Adlertz
On 2013-10-11 20:04, Christian Thalinger wrote:
>
> On Oct 11, 2013, at 4:21 AM, Niclas Adlertz <niclas.adlertz at oracle.com> wrote:
>
>> Good catch :)
>> Thanks Christian. I'll push this now.
>
> You forgot to change the assert message:
>
> + assert(!_mask.is_AllStack() || (_mask.is_AllStack() && lo_degree()), "_eff_degree can't be bigger than LRG_All_STACK_SIZE - _num_regs if the mask supports stack registers");
>
>>
>> http://cr.openjdk.java.net/~adlertz/JDK-8011415/webrev03/
>>
>> Kind Regards,
>> Niclas Adlertz
>>
>> On 2013-10-11 00:03, Christian Thalinger wrote:
>>> + static const uint LRG_All_STACK_SIZE = 0xFFFFF; // This mask size is used to tell that the mask of this LRG supports stack positions
>>>
>>> It looks odd to mix upper and lower case here. You tried to make it look like a macro but you didn't quite make it :-)
>>>
>>> Suggest since it's not a macro and it's a LRG class member to either use:
>>>
>>> static const uint AllStack_size = 0xFFFFF;
>>>
>>> or:
>>>
>>> static const uint ALL_STACK_SIZE = 0xFFFFF;
>>>
>>> I'd vote for the former.
>>>
>>> On Oct 10, 2013, at 7:07 AM, Niclas Adlertz <niclas.adlertz at oracle.com> wrote:
>>>
>>>> Hi Roland,
>>>>
>>>>> Shouldn't we assert somewhere than _eff_degree doesn't become any bigger than LRG_All_STACK_SIZE if that's the root cause of the problem?
>>>> There's nothing wrong about _eff_degree being bigger than LRG_All_STACK_SIZE as long as we don't have a mask supporting stack locations, but you are right that we could add asserts when setting _eff_degree or adding to _eff_degree when the mask supports stack positions.
>>>>
>>>>> Also, wouldn't a const int LRG_All_STACK_SIZE be better than a macro?
>>>> That might be a good idea, I just followed the old standard.
>>>>
>>>> Thanks.
>>>>
>>>> webrev: http://cr.openjdk.java.net/~adlertz/JDK-8011415/webrev02/
>>>>
>>>> Kind Regards,
>>>> Niclas Adlertz
>>>>
>>>> On 2013-10-10 14:41, Roland Westrelin wrote:
>>>>>> When compiling very big methods, in this particular case a method of 60k+ nodes, a live range 'l' with mask.is_AllStack() == true can still have lo_degree() == false. This because the _mask_size of 'l' can be at most 65535, at the same time 'l' is interfering with so many other live ranges that the value of _eff_degree becomes bigger than 65535.
>>>>>
>>>>> Shouldn't we assert somewhere than _eff_degree doesn't become any bigger than LRG_All_STACK_SIZE if that's the root cause of the problem?
>>>>> Also, wouldn't a const int LRG_All_STACK_SIZE be better than a macro?
>>>>>
>>>>> Roland.
>>>>>
>>>>
>>>
>>
>
More information about the hotspot-compiler-dev
mailing list