RFR: 8080106: Refactor setup of parallel GC threads

Jon Masamitsu jon.masamitsu at oracle.com
Fri May 15 14:51:20 UTC 2015



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().

>
> ---
> 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 */)

Otherwise, looks good.


>
> ---
> 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.

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