RFR: 8066821(S) Enhance command line processing to manage deprecating and obsoleting -XX command line arguments

Derek White derek.white at oracle.com
Thu Jul 23 16:16:51 UTC 2015

Hi Kim,

On 7/21/15 6:21 PM, Kim Barrett wrote:
> On Jul 17, 2015, at 1:30 PM, Derek White <derek.white at oracle.com> wrote:
>> Request for review:
>> [This updated webrev is being sent to wider audience, and has been merged with Gerard's option constraints check-in. Also factored out -XX:+AggressiveHeap processing into it's own chapter. I mean function :-)]
>> http://cr.openjdk.java.net/~drwhite/8066821/webrev.06/
>> https://bugs.openjdk.java.net/browse/JDK-8066821
> ------------------------------------------------------------------------------
> src/share/vm/runtime/arguments.cpp
>   284   JDK_Version obsoleted_in; // When the warning started (obsolete or deprecated).
> "obsoleted_in" is confusingly named, given that it covers both the
> "obsolete" and the "deprecated" states.  I think other reviewers
> questioned whether "obsolete" was the proper term for that state.
> At the risk of bikeshedding, I did a little exploring with a
> thesaurus, and "discontinued" seems like a possibly better term for
> that state.  The obsoleted_in field could retain that name, as
> covering both deprecation and discontinuation.  Of course, that would
> require some further updates, such as renaming is_newly_obsolete, and
> updating various comments.
> Some other possibilities include "defunct" and "disused", but I like
> "discontinued" better than either of those.
I like "discontinued" better than "obsolete", but I think 
"warning_started_in" is more descriptive and doesn't define a new term.
> ------------------------------------------------------------------------------
> src/share/vm/runtime/arguments.cpp
>   288 // When a flag is eliminated, it can be added to this list in order to
> I think "is eliminated" => "is made obsolete" or something like that.
> I would expect "eliminated" == "removed", which is not what is being
> described here.

> ------------------------------------------------------------------------------
> src/share/vm/runtime/arguments.cpp
>   320 // When a flag is deprecated, it can be added to this list in order to issuing a warning when the flag is used.
> "issuing" => "issue"

> ------------------------------------------------------------------------------
> src/share/vm/runtime/arguments.cpp
>   808       return false; // "name" is a deprecated option that has expired.
> I think the comment is wrong here.  I think it could just be a bogus
> option name.  Later calls don't have any corresponding comment (which
> is fine, just makes this one that I think might be wrong stand out
> more).

> ------------------------------------------------------------------------------
> src/share/vm/runtime/arguments.hpp
>   420   // Returns true if the flag is obsolete and fits into the range specified
>   421   // for being ignored.  In the case the 'version' buffer is filled in with
>   422   // the version number when the flag became obsolete. Otherwise the flag has
>   423   // expired and should be ignored.
>   424   static bool is_newly_obsolete(const char* flag_name, JDK_Version* version);
> The "otherwise" part of the description is not correct.  If this
> returns false we don't actually know it has expired.  It could simply
> not be present in the set of obsolete options.

> Also, why the "newly" in the name?  "is_obsolete_flag" would be
> consistent with "is_deprecated_flag".

That was pre-existing. I think they meant that "newly obsolete" options 
should get a warning, but "oldly obsolete" options don't. This webrev 
now defines "expired" to describe the later case though, so yes, maybe I 
should ditch the "newly".

Thanks Kim!

  - Derek

More information about the hotspot-gc-dev mailing list