RFR: 8066821(S) Enhance command line processing to manage deprecating and obsoleting -XX command line arguments
Kim Barrett
kim.barrett at oracle.com
Wed Jan 28 20:47:54 UTC 2015
On Jan 15, 2015, at 6:34 PM, Derek White <derek.white at oracle.com> wrote:
>
> Hi All,
>
> I need another review, especially someone from runtime. Coleen, do you want crack at it or can you forward as needed?
>
> Another version for review:
> http://cr.openjdk.java.net/~drwhite/8066821/webrev.01
I noticed a bunch of formatting changes that were in the previous
webrev have been eliminated in the .01 webrev. Since I was going to
comment or complain about at least some of them, I have no objection
to having them backed out.
This is not a complete review; I've only gotten part way through the
first file! Unfortunately, I'm swamped with other things right now
and don't seem to be making progress toward finishing. So here's what
I've got so far.
------------------------------------------------------------------------------
src/share/vm/runtime/arguments.cpp
132 int len = (int)strlen(name);
Pre-existing issue.
Why is this using int and casting to int, rather than just using
size_t? The return type for strlen is size_t, as is the argument for
strncmp where len is used, and the other use of len also can/should be
size_t.
[I only noticed this because an earlier webrev tweaked the formatting
of this line.]
------------------------------------------------------------------------------
src/share/vm/runtime/arguments.cpp
235 const char* spec_vendor = "Sun Microsystems Inc.";
236 uint32_t spec_version = 0;
Dead initializers; the variables are immediately reassigned new
values.
This is a pre-existing defect that I wouldn't have even noticed had
the enum for bufsz not been reformatted in a previous webrev. (How's
that for a lesson in being lazy. :-)
------------------------------------------------------------------------------
src/share/vm/runtime/arguments.cpp
253 * -XX arguments are usually defined in globals.hpp, globals_<cpu>.hpp, globals_<os>.hpp, <compiler>_globals.hpp, or <gc>_globals.hpp.
Rather than "are usually defined in" I think better would be something
like "are defined several places, such as".
------------------------------------------------------------------------------
src/share/vm/runtime/arguments.cpp
251 * -XX argument processing:
While the Hotspot style guidelines explicitly don't specify a line
length limit, I find lines that are long enough that they don't fit in
one side of a side-by-side webrev on a reasonable-sized landscape
monitor with a font size I can read without having to scroll the frame
back and forth to be pretty annoying.
------------------------------------------------------------------------------
src/share/vm/runtime/arguments.cpp
419 if (((strncmp(flag_status.name, s, len) == 0) &&
420 (strlen(s) == len)) ||
421 ((s[0] == '+' || s[0] == '-') &&
422 (strncmp(flag_status.name, &s[1], len) == 0) &&
423 (strlen(&s[1]) == len))) {
Pre-existing issue.
The calls to strlen and comparisons to len on lines 420 and 423 could
be replaced with
420: s[len] == '\0'
423: s[len+1] == '\0'
------------------------------------------------------------------------------
src/share/vm/runtime/arguments.cpp
449 size_t len = strlen(flag_status.alias_name);
450 if (((strncmp(flag_status.alias_name, flag_name, len) == 0) &&
451 (strlen(flag_name) == len))) {
There is no point to using strlen() and strncmp() here. Just use
strcmp(), e.g.
if (strcmp(flag_status.alias_name, flag_name) == 0) {
http://stackoverflow.com/questions/14885000/does-strlen-in-a-strncmp-expression-defeat-the-purpose-of-using-strncmp-ov
------------------------------------------------------------------------------
src/share/vm/runtime/arguments.cpp
412 int i = 0;
413 assert(version != NULL, "Must provide a version buffer");
414 while (special_table[i].name != NULL) {
...
432 i++;
Pre-existing issue.
More readable would be to use a for-loop, e.g.
for (size_t i = 0; special_table[i].name != NULL; ++i) {
...
}
size_t is a better type for i too.
------------------------------------------------------------------------------
src/share/vm/runtime/arguments.cpp
446 int i = 0;
447 while (aliased_jvm_flags[i].alias_name != NULL) {
...
454 i++;
As above, a for-loop would be more readable.
------------------------------------------------------------------------------
More information about the hotspot-gc-dev
mailing list