RFR: 8189171: Move GC argument processing into GC specific classes

David Holmes david.holmes at oracle.com
Mon Nov 20 01:09:31 UTC 2017


On 17/11/2017 2:33 AM, Bob Vandette wrote:
> Yes, that’s the fix.  I built it correctly with that added include.

How? I can't build the MinimalVM in JPRT because the UNSUPPORTED_OPTION 
macro is only locally defined in arguments.cpp, but is now used in 
gcArguments.cpp:

/opt/jprt/T/P1/003543.daholme/s/open/src/hotspot/share/gc/shared/gcArguments.cpp:77:29: 
error: 'UNSUPPORTED_OPTION' was not declared in this scope
    UNSUPPORTED_OPTION(UseG1GC);
                              ^
make[3]: *** 
[/opt/jprt/T/P1/003543.daholme/s/build/linux-x86-debug/hotspot/variant-minimal/libjvm/objs/gcArguments.o] 
Error 1

---

Roman/Erik: If changing code that has #include guards you must ensure 
all the paths are tested!

Thanks,
David

> There are still a few other issues with building and using the minimal VM but those
> existed before your change.
> 
> 1. You cannot build the minimal VM without also building the server VM.  There
> is a Makefile dependency on the server VM.
> 2. The jvm.cfg produced in the jvm and jre images does not add the minimalvm
> as one of the possible VM to select.  As a work-around jlink produces a workable jvm.cfg.
> 
> Thanks,
> Bob.
> 
> 
>> On Nov 16, 2017, at 11:17 AM, Roman Kennke <rkennke at redhat.com> wrote:
>>
>> Hi Bob,
>> thanks for letting me know.
>>
>> I filed: https://bugs.openjdk.java.net/browse/JDK-8191424
>> and posted for review: http://mail.openjdk.java.net/pipermail/hotspot-gc-dev/2017-November/020784.html
>>
>> Thanks, Roman
>>
>>> Roman,
>>>
>>> It looks like this change may have caused the build of the minimal VM to
>>> fail.  The minimal VM is no longer a configuration that we regularly build and test
>>> but it is still a build option that can be selected via "--with-jvm-variants=minimal1"
>>>
>>>
>>> /scratch/users/bobv/jdk10hs/open/src/hotspot/share/gc/shared/gcArguments.cpp: In static member function 'static jint GCArguments::initialize()':
>>> /scratch/users/bobv/jdk10hs/open/src/hotspot/share/gc/shared/gcArguments.cpp:113:17: error: 'defaultStream' has not been declared
>>>       jio_fprintf(defaultStream::error_stream(), "UseParallelGC not supported in this VM.\n");
>>>                   ^
>>> /scratch/users/bobv/jdk10hs/open/src/hotspot/share/gc/shared/gcArguments.cpp:116:17: error: 'defaultStream' has not been declared
>>>       jio_fprintf(defaultStream::error_stream(), "UseG1GC not supported in this VM.\n");
>>>                   ^
>>> /scratch/users/bobv/jdk10hs/open/src/hotspot/share/gc/shared/gcArguments.cpp:119:17: error: 'defaultStream' has not been declared
>>>       jio_fprintf(defaultStream::error_stream(), "UseConcMarkSweepGC not supported in this VM.\n");
>>>                   ^
>>> gmake[3]: *** [/scratch/users/bobv/jdk10hs/build/b00/linux-x64-minimal1/hotspot/variant-minimal/libjvm/objs/gcArguments.o] Error 1
>>>
>>> Bob.
>>>
>>>
>>>> On Nov 7, 2017, at 6:01 AM, Roman Kennke <rkennke at redhat.com> wrote:
>>>>
>>>> Hi Per & Erik,
>>>>
>>>> thanks for the reviews!
>>>>
>>>> Now I need a sponsor.
>>>>
>>>> Final webrev (same as before, including Reviewed-by line):
>>>> http://cr.openjdk.java.net/~rkennke/8189171/webrev.05/ <http://cr.openjdk.java.net/%7Erkennke/8189171/webrev.05/>
>>>>
>>>> Thanks, Roman
>>>>
>>>>
>>>>> Looks good Roman!
>>>>>
>>>>> /Per
>>>>>
>>>>> On 2017-11-06 12:13, Roman Kennke wrote:
>>>>>> Am 26.10.2017 um 11:43 schrieb Per Liden:
>>>>>>> Hi,
>>>>>>>
>>>>>>> On 2017-10-25 18:11, Erik Osterlund wrote:
>>>>>>> [...]
>>>>>>>>> So let me just put your changes up for review (again), if you don't
>>>>>>>>> mind:
>>>>>>>>>
>>>>>>>>> Full webrev:
>>>>>>>>> http://cr.openjdk.java.net/~eosterlund/8189171/webrev.03/
>>>>>>>>> <http://cr.openjdk.java.net/%7Eeosterlund/8189171/webrev.03/>
>>>>>>> I like this. Just two naming suggestions:
>>>>>>>
>>>>>>> src/hotspot/share/gc/shared/gcArguments.hpp:
>>>>>>>
>>>>>>>    39   static jint create_instance();
>>>>>>>    40   static bool is_initialized();
>>>>>>>    41   static GCArguments* instance();
>>>>>>>
>>>>>>> Could we call these:
>>>>>>>
>>>>>>>    39   static jint initialize();
>>>>>>>    40   static bool is_initialized();
>>>>>>>    41   static GCArguments* arguments();
>>>>>>>
>>>>>>> Reasoning: initialize() maps better to its companion is_initialized().
>>>>>>> GCArguments::arguments() maps better to the existing patterns we have
>>>>>>> with CollectedHeap::heap().
>>>>>> Ok, that sounds good to me. Actually, it's almost full-circle back to my
>>>>>> original proposal ;-)
>>>>>>
>>>>>> Differential:
>>>>>> http://cr.openjdk.java.net/~rkennke/8189171/webrev.04.diff/
>>>>>> <http://cr.openjdk.java.net/%7Erkennke/8189171/webrev.04.diff/>
>>>>>> Full:
>>>>>> http://cr.openjdk.java.net/~rkennke/8189171/webrev.04/
>>>>>> <http://cr.openjdk.java.net/%7Erkennke/8189171/webrev.04/>
>>>>>>
>>>>>> Ok to push now?
>>>>>>
>>>>>> Roman
>>>>
>>
> 


More information about the hotspot-gc-dev mailing list