RFR: 8079275: Remove CollectedHeap::use_parallel_gc_threads

Stefan Johansson stefan.johansson at oracle.com
Mon May 4 15:28:01 UTC 2015


Hi Stefan,

On 2015-05-04 15:34, Stefan Karlsson wrote:
> Hi,
>
> Please review this patch to remove 
> CollectedHeap::use_parallel_gc_threads.
>
> http://cr.openjdk.java.net/~stefank/8079275/webrev.01/
Change looks good, nice cleanup.

If I'm not missing anything you could remove the typedef in 
concurrentMarkSweepGeneration.cpp:
      typedef CMSParGCThreadState* CMSParGCThreadStatePtr;
-    _par_gc_thread_states =
-      NEW_C_HEAP_ARRAY(CMSParGCThreadStatePtr, ParallelGCThreads, mtGC);
+  _par_gc_thread_states = NEW_C_HEAP_ARRAY(CMSParGCThreadStatePtr, 
ParallelGCThreads, mtGC);

The typedef is only used for in the NEW_C_HEAP_ARRAY-call and I can't 
see any good reason for keeping it.

Thanks,
Stefan

> https://bugs.openjdk.java.net/browse/JDK-8079275
>
> This function is used from:
>
> 1) CMS - CMS can't be started with -XX:ParallelGCThreads=0 anymore, so 
> all checks against use_parallel_gc_threads will always be true.
>
> 2) GenCollectedHeap::process_roots - This usage could be replaced with 
> n_par_threads(), the same check the other parallel task 
> (Threads::possibly_parallel_oops_do) uses.
>
> This will change the executed code for CMS but not Serial.
>
> Serial will always return false for 
> CollectedHeap::use_parallel_gc_threads and 
> GenCollectedHeap:n_par_threads(). See:
> void GenCollectedHeap::set_par_threads(uint t) {
>   assert(t == 0 || !UseSerialGC, "Cannot have parallel threads");
>   CollectedHeap::set_par_threads(t);
>
> CMS will always return true for 
> CollectedHeap::use_parallel_gc_threads, but can now return either true 
> or false for n_par_threads() depending on how n_par_threads was setup 
> for the currently executing task. This means that some CMS paths will 
> now call StringTable::oops_do instead of 
> StringTable::possibly_parallel_oops_do, when running single threaded.
>
> Thanks,
> StefanK




More information about the hotspot-gc-dev mailing list