RFR(s): 8068582: UseSerialGC not always set up properly

Bengt Rutisson bengt.rutisson at oracle.com
Mon Apr 20 07:45:44 UTC 2015


Hi Per,

On 2015-04-17 16:05, Per Liden wrote:
> Hi,
>
> When no Use*GC flag is specified on the command-line we make a default 
> GC selection. In case we select SerialGC we fail to set UseSerialGC to 
> true (unlike when we select ParallelGC where we set UseParallelGC). 
> This means we can run with all Use*GC set to false (which implicitly 
> means we're using serial). It also means we can't use UseSerialGC as 
> the sole indicator that we're using serial.
>
> This patch makes sure that we always set the corresponding Use*GC for 
> the GC we have selected.
>
> A typical case where the VM selects serial but fails to set 
> UseSerialGC is when running a client VM without specifying a Use*GC 
> option on the command-line.
>
> Testing: Added a new jtreg test, passes jprt
>
> Webrev: http://cr.openjdk.java.net/~pliden/8068582/webrev.0/
> Bug: https://bugs.openjdk.java.net/browse/JDK-8068582

The changes look good, but there are a couple of comments in the code 
that would be nice to clean up now that you enforce that UseSerialGC is 
properly set  up:

genCollectedHeap.hpp:

   virtual bool can_elide_initializing_store_barrier(oop new_obj) {
     // We wanted to assert that:-
     // assert(UseSerialGC || UseConcMarkSweepGC,
     //       "Check can_elide_initializing_store_barrier() for this 
collector");
     // but unfortunately the flag UseSerialGC need not necessarily always
     // be set when DefNew+Tenured are being used.
     return is_in_young(new_obj);
   }


arguments.cpp:

   if (UseParNewGC && !UseConcMarkSweepGC) {
     // !UseConcMarkSweepGC means that we are using serial old gc. 
Unfortunately we don't
     // set up UseSerialGC properly, so that can't be used in the check 
here.
     jio_fprintf(defaultStream::error_stream(),
         "It is not possible to combine the ParNew young collector with 
the Serial old collector.\n");
     return false;
   }


In both these cases I think we can just remove the comments. The 
suggested assert in can_elide_initializing_store_barrier() is not 
interesting to add in my opinion since it is code in GenCollectedHeap, 
which we know is only used by Serial and CMS.

Thanks,
Bengt

>
> /Per



More information about the hotspot-gc-dev mailing list