Corrected: RFR 8059557 (XL): Validate JVM Command-Line Flag Arguments

Gerard Ziemski gerard.ziemski at oracle.com
Thu May 21 16:54:09 UTC 2015


hi Alexander,

Yes, handling it this way was an alternative, but I thought it required 
a C++ compiler with some specific feature support?  C++ 11?

It was my understanding that such solution was more restrictive, than 
the one I used.

Thank you.

On 5/21/2015 11:26 AM, Alexander Harlap wrote:
> And what about this:
>
> void emit_range_bool(const char* /* name */)            { }
>
> Alex
>
> On 5/21/2015 12:09 PM, Gerard Ziemski wrote:
>> hi David,
>>
>> Thank you for taking the time to review this considerable change. I 
>> have responded to your points below:
>>
>>
>> On 5/18/2015 12:28 AM, David Holmes wrote:
>>>
>>> A few comments:
>>>
>>> For constructs like:
>>>
>>> void emit_range_bool(const char* name)            { (void)name; /* 
>>> NOP */ }
>>>
>>> I seem to recall that this was not sufficient to avoid "unused" 
>>> warnings with some compilers - which is presumably why you did it?
>>
>> That's indeed the reason why I did. A search on internet reveals that 
>> this seems to be the preferred way of handling such case, and it 
>> works for all the currently building JPRT platforms. Is that enough? 
>> If there is a question of whether this works on some unusual 
>> compiler, can we leave it up to the the engineers dealing with that 
>> compiler, which certainly would make them more of experts in such 
>> situation than me? If not, how would you recommend we handle this 
>> differently now?
>>
>>
>>>
>>> ---
>>>
>>> In src/share/vm/runtime/globals.hpp it says:
>>>
>>>   see "checkRanges" function in arguments.cpp
>>>
>>> but there is no such function in arguments.cpp
>>
>> Done.
>>
>>>
>>> ---
>>>
>>> src/share/vm/runtime/arguments.cpp
>>>
>>> The set_object_alignment() functions seems to have some redundant 
>>> constraint assertions. As does verify_object_alignment() - seems to 
>>> me that everything in verify_object_alignment should either be in 
>>> the constraint function for ObjectAlignmentInBytes or one for 
>>> SurvivorAlignmentInBytes - though the combination of verification 
>>> and the actual setting of SurvivorAlignmentInBytes may be a problem 
>>> in the new architecture. If you can't get rid of 
>>> verify_object_alignment() I'd be tempted to not process it the new 
>>> way at all, as splitting the constraint checking just leads to 
>>> confusion IMO.
>>
>> I moved the code to constraints and in fact this little bit of 
>> refactoring looks very nice indeed.
>>
>>
>>>
>>> The changes to test/runtime/contended/Options.java suggest to me 
>>> that a constraint is missing on ContendedPaddingWidth - that it is a 
>>> multiple of 8 (BytesPerLong). That is (still) checked in 
>>> arguments.cpp (and given it is still checked there is no need to 
>>> have removed it from the test).
>>
>> I could argue whether the tests is really loosing a value in 
>> displaying only one error at the time, but I tried to modify my 
>> feature, so that it could also detect and report more than one 
>> violation at the time, and it turned out as doable in these cases, so 
>> this is now resolved, with no perceived functionality regression.
>>
>>
>>>
>>> ---
>>>
>>> Some of the test changes, such as:
>>>
>>> test/gc/g1/TestStringDeduplicationTools.java
>>>
>>> seem to be losing some of what they test. Not only is the test 
>>> checking the value is detected as erroneous, but it also detects 
>>> that the user is told in what way it is erroneous. The updated test 
>>> doesn't validate that part of the argument processing logic
>>
>> Done, with same fix as above.
>>
>>
>>>
>>> ----
>>>
>>> There is some inconsistency in the test changes, sometimes you use:
>>>
>>>   shouldContain("outside the allowed range")
>>>
>>> and sometimes:
>>>
>>>   shouldContain("is outside the allowed range")
>>
>> Done.
>>
>>
>> cheers
>>
>
>
>



More information about the hotspot-dev mailing list