RFR (S) 8185590: ShouldNotReachHere from ClassLoaderData::try_get_next_class()

coleen.phillimore at oracle.com coleen.phillimore at oracle.com
Tue Aug 1 15:57:38 UTC 2017



On 8/1/17 11:03 AM, coleen.phillimore at oracle.com wrote:
>
>
> On 8/1/17 10:45 AM, Zhengyu Gu wrote:
>> How about setup a marker before entering the loop, ensure the loop 
>> won't come back to initial entry?
>
> It's ok for the loop to get back to the initial entry though.... if 
> there are less classes than the count in compilationPolicy.

Sorry, I'm wrong about this.  Maybe this makes sense too, but not as an 
assert but as a terminating condition.

Coleen

>
> Coleen
>>
>> #ifdef ASSERT
>>   Klass* starting_class_entry = _current_class_entry;
>> #endif
>>
>>   for (int i = 0; i < max_classes; ) {
>>
>>   ....
>>
>>      ASSERT(_current_class_entry != starting_class_entry, ....)
>>    }
>>
>> Thanks,
>>
>> -Zhengyu
>>
>>
>> On 08/01/2017 10:32 AM, coleen.phillimore at oracle.com wrote:
>>>
>>>
>>> On 8/1/17 10:23 AM, Aleksey Shipilev wrote:
>>>> On 08/01/2017 04:18 PM, coleen.phillimore at oracle.com wrote:
>>>>> Summary: Counting number of instanceKlass code didn't work.
>>>>>
>>>>> A late code review change caused this regression.   Tested with
>>>>> internal NSK mlvm tests with
>>>>> -XX:-TieredCompilation -XX:CompileThreshold=100 including the one
>>>>> where I reproduced the failure
>>>>> overnight.
>>>>>
>>>>> open webrev at http://cr.openjdk.java.net/~coleenp/8185590.01/webrev
>>>> Hm, so now that the loop variable is _conditionally_ incremented, what
>>>> guarantees the loop termination?
>>>
>>> The fact that number_of_classes can't be zero so something has to be
>>> returned?
>>>
>>> I had trouble coming up with something better.  If you have a good 
>>> idea,
>>> I'll change it.
>>>
>>> thanks!
>>> Coleen
>>>>
>>>> Thanks,
>>>> -Aleksey
>>>>
>>>
>



More information about the hotspot-dev mailing list