RFR: 8073989: Deprecated integer options are now recognized as obsolete.
Dmitry Dmitriev
dmitry.dmitriev at oracle.com
Thu Apr 2 21:23:27 UTC 2015
Hi Max,
Thank you fixing that issue! Looks good to me, but I am not a reviewer.
Regards,
Dmitry
On 02.04.2015 21:43, Max Ockner wrote:
> I have rearranged the misplaced comments.
> New Webrev: http://cr.openjdk.java.net/~mockner/8073989.3/
>
> I still need one more (r)eviewer.
>
> Thanks,
> Max
>
> On 3/30/2015 10:01 PM, David Holmes wrote:
>> Hi Max,
>>
>> On 31/03/2015 4:08 AM, Max Ockner wrote:
>>> Hello all,
>>> Please review this change involving the handling of obsolete command
>>> line flags.
>>>
>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8073989
>>> Webrev: http://cr.openjdk.java.net/~mockner/8073989.2/
>>
>> Argument processing seems to be a never ending source of bugs.
>>
>>> Summary: Three key components to this bug:
>>
>> Thanks for the detailed description!
>>
>>> (1) When is_newly_obsolete() checks for
>>> "SomeObsoleteIntegerFlag=100" in
>>> the flag table, it is not recognized as a match with
>>> "SomeObsoleteIntegerFlag" because the lengths are different. This has
>>> been fixed. Arguments:process_argument() now strips everything except
>>> for the arguments name. (example: -XX:+SomeBooleanFlag ->
>>> "SomeBooleanFlag", and -XX:SomeIntegerFlag=100 -> "SomeIntegerFlag")
>>> This stripped argument name (fittingly called stripped_argname) is now
>>> passed into is_newly_obsolete, preventing the length check from failing
>>> on obsolete (but formeerly valid) arguments. It also eliminates the
>>> need
>>> for any case work and other string gymnastics from the the body of
>>> is_newly_obsolete. If the argument is found to be newly obsolete, the
>>> warning message now prints stripped_argname instead of argname to avoid
>>> suggesting that "SomeBooleanFlag=100" was ever a supported option.
>>
>> So previously is_newly_obsolete handled +/- but despite the comment
>> didn't really handle the flag=xxx form. So now before calling
>> is_newly_obsolete the leading +/- or trailing = is stripped, so only
>> the base argument name is actually checked. Ok.
>>
>> I think these comments were misplaced originally, and seem more so now:
>>
>> 874 // For locked flags, report a custom error message if available.
>> 875 // Otherwise, report the standard unrecognized VM option.
>>
>> they belong after the is_newly_obsolete calling block, prior to:
>>
>> 883 Flag* found_flag = Flag::find_flag((const char*)argname,
>> arg_len, true, true);
>> 884 if (found_flag != NULL) {
>>
>>> (2) Some flags used to be defined in both the flags table and the
>>> obsolete flags table. Because of this, those obsolete flags which were
>>> also defined in the flags table could be fuzzy matched to provide
>>> better
>>> error messages. Now that no flag is allowed to be in both tables, it is
>>> pointless to attempt to fuzzy match an obsolete flag, since fuzzy
>>> matching only looks in the flags table (not the obsolete flags table).
>>> The section at the end of Arguments:process_argument in which fuzzy
>>> matching is attempted on obsolete arguments no longer makes sense and
>>> has been removed.
>>
>> Ok.
>>
>>> (3) ObsoleteFlagErrorMessage.java has been modified. The existing test
>>> for an obsolete flag with appended junk no longer tests for fuzzy
>>> matching, and a second test case has been added for integer valued
>>> flags.
>>
>> Ok. The test will need to use a new "newly obsolete" flag in JDK 10. :)
>>
>> Reviewed!
>>
>> Thanks,
>> David
>>
>>> Tested with jtreg runtime tests.
>>>
>>> Thanks,
>>> Max Ockner
>
More information about the hotspot-dev
mailing list