RFR: 8232365: Implementation for JEP 363: Remove the Concurrent Mark Sweep (CMS) Garbage Collector

David Holmes david.holmes at oracle.com
Mon Oct 21 22:57:07 UTC 2019


On 22/10/2019 3:56 am, Leo Korinth wrote:
> On 18/10/2019 11:20, David Holmes wrote:
>> Hi Leo,
>>
>> Picking up on one item ...
>>
>>  > Not fully addressed in code, but an issue that has to be dealt 
>> with, how
>>  > do I obsolete -Xconcgc and -Xnoconcgc? I believe the option should be
>>  > obsoleted, though I do not know if we have any precedence 
>> obsoleting -X
>>  > options.
>>
>> These flags (which are passed through from the launcher) are already 
>> marked as deprecated. So to "obsolete" them you just need to update 
>> the warning that gets issued (and otherwise delete them from the 
>> code). So you need to change this code in arguments.cpp to produce the 
>> appropriate obsoletion warning similar to what we issue for obsoleted 
>> -XX flags:
>>
>>     // -Xconcgc
>>      } else if (match_option(option, "-Xconcgc")) {
>>        if (FLAG_SET_CMDLINE(UseConcMarkSweepGC, true) != 
>> JVMFlag::SUCCESS) {
>>          return JNI_EINVAL;
>>        }
>>        handle_extra_cms_flags("-Xconcgc uses UseConcMarkSweepGC");
>>      // -Xnoconcgc
>>      } else if (match_option(option, "-Xnoconcgc")) {
>>        if (FLAG_SET_CMDLINE(UseConcMarkSweepGC, false) != 
>> JVMFlag::SUCCESS) {
>>          return JNI_EINVAL;
>>        }
>>        handle_extra_cms_flags("-Xnoconcgc uses UseConcMarkSweepGC");
>>
>> Let me know if you need more details.
>>
>> Then file a follow up issue to remove these flags in the future. I 
>> don't know if you have a timeline for that yet.
>>
>> Cheers,
>> David
>> -----
> 
> 
> Hi David, I filed https://bugs.openjdk.java.net/browse/JDK-8232739
> 
> Do you suggest something like this?

Yes just like that.

Thanks,
David
-----

> 
> diff --git a/src/hotspot/share/runtime/arguments.cpp 
> b/src/hotspot/share/runtime/arguments.cpp
> index 620168b4e4b..c0a9acea962 100644
> --- a/src/hotspot/share/runtime/arguments.cpp
> +++ b/src/hotspot/share/runtime/arguments.cpp
> @@ -2615,10 +2615,10 @@ jint Arguments::parse_each_vm_init_arg(const 
> JavaVMInitArgs* args, bool* patch_m
>         }
>       // -Xconcgc
>       } else if (match_option(option, "-Xconcgc")) {
> -      handle_extra_cms_flags("-Xconcgc uses UseConcMarkSweepGC");
> +      warning("-Xconcgc uses UseConcMarkSweepGC; support was removed 
> for both options in 14.0");
>       // -Xnoconcgc
>       } else if (match_option(option, "-Xnoconcgc")) {
> -      handle_extra_cms_flags("-Xnoconcgc uses UseConcMarkSweepGC");
> +      warning("-Xnoconcgc uses UseConcMarkSweepGC; support was removed 
> for both options in 14.0");
>       // -Xbatch
>       } else if (match_option(option, "-Xbatch")) {
>         if (FLAG_SET_CMDLINE(BackgroundCompilation, false) != 
> JVMFlag::SUCCESS) {
> @@ -3859,15 +3859,6 @@ bool Arguments::handle_deprecated_print_gc_flags() {
>     return true;
>   }
> 
> -void Arguments::handle_extra_cms_flags(const char* msg) {
> -  SpecialFlag flag;
> -  const char *flag_name = "UseConcMarkSweepGC";
> -  if (lookup_special_flag(flag_name, flag)) {
> -    handle_aliases_and_deprecation(flag_name, /* print warning */ true);
> -    warning("%s", msg);
> -  }
> -}
> -
>   // Parse entry point called from JNI_CreateJavaVM
> 
>   jint Arguments::parse(const JavaVMInitArgs* initial_cmd_args) {
> diff --git a/src/hotspot/share/runtime/arguments.hpp 
> b/src/hotspot/share/runtime/arguments.hpp
> index d9aa77af315..2759836bb88 100644
> --- a/src/hotspot/share/runtime/arguments.hpp
> +++ b/src/hotspot/share/runtime/arguments.hpp
> @@ -425,8 +425,6 @@ class Arguments : AllStatic {
> 
>     static bool handle_deprecated_print_gc_flags();
> 
> -  static void handle_extra_cms_flags(const char* msg);
> -
>     static jint parse_vm_init_args(const JavaVMInitArgs 
> *java_tool_options_args,
>                                    const JavaVMInitArgs *java_options_args,
>                                    const JavaVMInitArgs *cmd_line_args);
> 
> 
> Thanks,
> Leo
> 
>>
>> On 18/10/2019 6:20 pm, Leo Korinth wrote:
>>> Hi,
>>>
>>> Here is a patch that removes the CMS GC.
>>>
>>> I have neither tested arm nor ppc; I hope my changes to those .ad 
>>> files are correct, if someone can test those architectures, that 
>>> would be great.
>>>
>>> Please take an extra look at 
>>> CollectedHeap::check_for_non_bad_heap_word_value, it was buggy before 
>>> (but never called), It is now called (and hopefully correct).
>>>
>>> I have tried to remove most parts of CMS. I have not made it a goal 
>>> to remove all traces of CMS. I guess there are much more to cleanup, 
>>> and suggestions of more to remove are welcomed. I think more 
>>> complicated cleanups should be dealt with in separate enhancements.
>>>
>>> Not fully addressed in code, but an issue that has to be dealt with, 
>>> how do I obsolete -Xconcgc and -Xnoconcgc? I believe the option 
>>> should be obsoleted, though I do not know if we have any precedence 
>>> obsoleting -X options.
>>>
>>> My patch prints:
>>>
>>> $ java -Xconcgc -jar Notepad.jar
>>> Java HotSpot(TM) 64-Bit Server VM warning: -Xconcgc uses 
>>> UseConcMarkSweepGC
>>>
>>> I guess that is not enough for being obsolete, compare with:
>>>
>>> $ java -XX:UseConcMarkSweepGC -jar Notepad.jar
>>> Java HotSpot(TM) 64-Bit Server VM warning: Ignoring option 
>>> UseConcMarkSweepGC; support was removed in 14.0
>>>
>>> Bug:
>>>    https://bugs.openjdk.java.net/browse/JDK-8232365
>>>
>>> Webrev:
>>>    http://cr.openjdk.java.net/~lkorinth/8232365/00
>>>
>>> Testing:
>>>    tier 1-5.
>>>
>>> Thanks,
>>> Leo


More information about the hotspot-dev mailing list