RFR: 8079275: Remove CollectedHeap::use_parallel_gc_threads
Stefan Johansson
stefan.johansson at oracle.com
Tue May 5 08:12:55 UTC 2015
Hi Stefan,
On 2015-05-04 17:52, Stefan Karlsson wrote:
> Hi,
>
> On 2015-05-04 17:28, Stefan Johansson wrote:
>> 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.
>
> OK. I removed it. I also removed the unused _modUnionClosure.
>
> http://cr.openjdk.java.net/~stefank/8079275/webrev.02.delta/
> http://cr.openjdk.java.net/~stefank/8079275/webrev.02/
>
Looks good,
StefanJ
> Thanks,
> StefanK
>
>>
>> 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