RFR: 8080106: Refactor setup of parallel GC threads

Stefan Karlsson stefan.karlsson at oracle.com
Mon May 18 12:05:17 UTC 2015


On 2015-05-15 16:51, Jon Masamitsu wrote:
>
>
> On 5/13/2015 6:17 AM, Stefan Karlsson wrote:
>> Hi all,
>>
>> Please review these patches to unify the ways we specify the number 
>> of used worker threads. The main goal for these patches is to get rid 
>> of CollectedHeap::set_par_threads() and CollectedHeap::n_par_threads().
>>
>> The RFE has been split into multiple sub-tasks:
>>  8080109: Use single-threaded code in 
>> Threads::possibly_parallel_oops_do when running with only one worker 
>> thread
>>  8080110: Remove usage of CollectedHeap::n_par_threads() from root 
>> processing
>>  8080111: Remove SubTaskDone::_n_threads
>>  8080112: Replace and remove the last usages of 
>> CollectedHeap::n_par_threads()
>>  8080113: Remove CollectedHeap::set_par_threads()
>>
>> See the description below for each individual patch:
>>
>> ---
>> [...]
>> ---
>> http://cr.openjdk.java.net/~stefank/8080111/webrev.00
>> 8080111: Remove SubTaskDone::_n_threads
>>
>> Remove the need to keep track of the number of worker threads 
>> currently executing in the sub-tasks of the root processing. Instead 
>> use the information that is already stored in StrongRootsScope.
>
> Looks good.
>
> You did remove set_num_workers().

Thanks.

>
>>
>> ---
>> http://cr.openjdk.java.net/~stefank/8080112/webrev.00
>> 8080112: Replace and remove the last usages of 
>> CollectedHeap::n_par_threads()
>>
>> Replace and remove the last usages of CollectedHeap::n_par_threads().
>>
>> The number of used threads are passed down as arguments to the 
>> functions that need to know how many threads are currently executing 
>> in parallel.
> http://cr.openjdk.java.net/~stefank/8080112/webrev.00/src/share/vm/memory/cardTableModRefBS.cpp.udiff.html 
>
>
> Maybe worth adding a comment about the "false" being passed in?
>
> +      DirtyCardToOopClosure* dcto_cl = sp->new_dcto_cl(cl, 
> precision(), cl->gen_boundary(), false);
>
> new_dcto_cl(cl, precision(), cl->gen_boundary(), false /* parallel */)
>
> +      ClearNoncleanCardWrapper clear_cl(dcto_cl, ct, false);
>
> clear_cl(dcto_cl, ct, false /* parallel */)

Fixed.

>
> Otherwise, looks good.

Thanks.

>
>
>>
>> ---
>> http://cr.openjdk.java.net/~stefank/8080113/webrev.00
>> 8080113: Remove CollectedHeap::set_par_threads()
>>
>> Remove all the calls to the set_par_threads() functions.
>
> This one is the best.

:)

>
> Looks good.

Thanks,
StefanK
>
> Jon
>
>> ---
>>
>> The combined webrev can be found at:
>> http://cr.openjdk.java.net/~stefank/8080106/webrev.00/
>>
>> Tested with JPRT and gc-test-suite
>>
>> Thanks,
>> StefanK
>



More information about the hotspot-gc-dev mailing list