Hi Dan, Thank you for the review.
The new webrev is here: http://cr.openjdk.java.net/~fparain/7104647/webrev.hotspot.05/ And my answers are in-lined below. On 12/12/11 09:08 PM, Daniel D. Daugherty wrote:
src/share/vm/services/attachListener.cpp The new include should be in alpha-order (between lines 36 & 37). I'm pretty sure that's the new style...
Fixed
Block comment on lines 152-155 should be in '//' style and not in JavaDoc style (/** ... */)
Fixed
src/share/vm/services/jmm.h lines 192-208 - HotSpot convention is to mimic the existing style in a file. For these structs, the field names should all be lined up (see 181-188 for an example).
Fixed
src/share/vm/services/management.cpp line 2126 calls JNIHandles::make_local(), but this is a JVM_ENTRY wrapped function which means it depends on VM_ENTRY_BASE which has a HandleMarkCleaner in it. Since this is a make_local() call, won't the local JNIHandle get scrubbed on the way back to the caller?
Threads have two areas to store handles, one for internal handles and one for JNI handles. The HandleMarkCleaner applies only to the internal handles. The purpose of the make_local() is to create a JNI handle from the internal handle, so when the internal area is cleaned up by the HandleMarkCleaner, the JNI handle is still valid in the context of the caller.
src/share/vm/services/diagnosticArgument.hpp lines 45-50 - too much indent; should be 4 spaces
Fixed
src/share/vm/services/diagnosticArgument.cpp HotSpot style is generally 'if (' and not 'if('
Fixed
src/share/vm/services/diagnosticCommand.hpp lines 28-36 - includes should be in alpha order
Fixed
lines 44, 64 - Parameter defaults in new code is generally frowned upon in HotSpot. They're used when adding a parameter to existing code to avoid changing existing calls where the default is OK. (I happen to disagree with that last part and I think that all calls should be updated just to make sure your reviewers see all uses, but I'm just one cranky voice... :-))
I've removed all default parameters I found.
src/share/vm/services/diagnosticCommand.cpp line 28: includes should be in alpha order
Fixed
lines 31-33 - should be some indent here
Fixed
line 74: It would be useful to display the command that can't be found: help foo Help unavailable: 'foo': No such command
Done.
line 101: just FYI, a ResourceMark without a Thread parameter can be expensive. Not an issue for HelpDCmd::num_arguments().
I was not aware of the performance penalty. However, this method is called only once in the lifetime of the VM, so I didn't fixed it.
line 103: HotSpot style is generally 'if (' and not 'if('
Fixed
src/share/vm/services/diagnosticFramework.hpp line 38: typo: 'provides method' -> 'provides methods' line 40: typo: 'keywor' -> 'keyword'
Fixed.
lines 43-46 - fields nicely indented here, but not in other new header files. Any particular reason?
Yes, I got several reviews about the style :-)
lines 48, 154, 218, 286, 324 - Parameter defaults again.
Removed
line 55: is_stop should be: return !is_empty() && strncmp("stop", _cmd, _cmd_len) == 0; !strncmp() is frowned upon and spaces between params
OK. Fixed
line 82 - returns a local variable; that shouldn't work.
The method doesn't really return a local variable, this is a return by value. The return statement invokes the copy constructor to duplicate the local object into the caller context. Here, the default copy constructor is called but it's okay because the CmdLine class has be designed to work this way. I've added a comment in the code to make this mechanism more explicit.
line 155: missing a space after '='
Fixed
lines 256, 258: HotSpot style is generally 'if (' and not 'if('
Fixed
line 304: typo: 'DCmdFActory' -> 'DCmdFactory'
Fixed
line 306: typo: 'command to be executed' -> 'command from being executed'
Fixed
src/share/vm/services/diagnosticFramework.cpp line 55: _cmd_len = cmd_end - line; This length includes any leading white space that was skipped on lines 42-44. It seems odd that '_cmd' points to the first non-whitespace in the command, but _cmd_len includes the leading white space. If you change the _cmd_len calculation, then you have to also change the logic on line 58 so that args_len is also not too long.
You're right, this is definitively odd. I've fixed _cmd_len and updated line 58.
lines 79, 104: typo: 'simple' -> 'single'
Fixed
line 318 - what is 'idx' used for?
Remaining code from a previous version. Unused now, so I removed it.
line 367: HotSpot style is generally 'if (' and not 'if(' lines 371, 372, 380, 403, 416: space after comma
Fixed Thank you, Fred -- Frederic Parain - Oracle Grenoble Engineering Center - France Phone: +33 4 76 18 81 17 Email: frederic.par...@oracle.com