RFR (S): 8185580: Refactor Threads::possibly_parallel_oops_do() to use Threads::parallel_java_threads_do()

David Holmes david.holmes at oracle.com
Tue Oct 17 05:11:17 UTC 2017


On 17/10/2017 2:55 PM, Roman Kennke wrote:
> Am 17.10.2017 um 05:33 schrieb David Holmes:
>> Hi Roman,
>>
>> On 12/10/2017 5:30 AM, Roman Kennke wrote:
>>> This is a follow-up to my earlier safepoint parallel cleanup work.
>>>
>>> Currently we have 2 places where we apply the parallel claiming 
>>> protocol when iterating threads, that is 
>>> Threads::parallel_java_threads_do() and 
>>> Threads::possibly_parallel_oops_do(). In order to avoid code 
>>> duplication, the latter should call the former, using a private 
>>> ThreadClosure. We already had one bug (JDK-8185273) that was caused 
>>> by an inconsistency between the two.
>>>
>>> The only other user of parallel_java_threads_do() already filters out 
>>> any non-Java-threads, which means that doing the extra processing of 
>>> the VMThread should be ok. 
>>
>> "should" be okay? It's not at all clear to me what processing the 
>> VMThread where previously it was not processed, will actually do ??
> It ensures that both parallel thread iteration routines are doing the 
> same, and thus claim the same threads, which is later 
> assert_all_threads_are_claimed(). If we don't do this consistently, we 
> throw off the thread claiming mechanics.

Sorry that's not answering my question. Before we did not call

tc->do_thread(vmt);

for the VMThread, but now we do. So what is the affect of this change in 
behaviour?

AFAICS the "claiming" behaviour of both versions is the same.

Thanks,
David
-----

>>
>>> I renamed the method to parallel_threads_do() to reflect that it not 
>>> only does the Java threads.
>>
>> Given it takes an is_par argument it really should be 
>> possibly_parallel_threads_do()
> Ok. Differential diff:
> http://cr.openjdk.java.net/~rkennke/8185580/webrev.01.diff/ 
> <http://cr.openjdk.java.net/%7Erkennke/8185580/webrev.01.diff/>
> Full webrev:
> http://cr.openjdk.java.net/~rkennke/8185580/webrev.01/ 
> <http://cr.openjdk.java.net/%7Erkennke/8185580/webrev.01/>
> 
> Good?
> 
> Roman
> 


More information about the hotspot-runtime-dev mailing list