-XX:CompileOnly command: how should it look like?
Vladimir Ivanov
vladimir.x.ivanov at oracle.com
Mon Oct 15 09:08:00 PDT 2012
Regarding CompileOnly flag, ',' does separate multiple compileonly
directives (see compilerOracle.cpp:729-750). From usability perspective,
when combined with wildcards it provies very concise and convenient
syntax to control compilation for testing/development purposes. The only
thing I'm missing is filtering by method signatures.
I see 2 options to proceed now:
a) just fix the bug I wrote about in the original letter (unless ','
works as a directive separator by accident :-))
b) in addition, extend CompileOnly format to allow same filtering
granularity as in command file (CompilerOracle::parse_from_line).
I'm in favor of (b), but would like to hear your opinion.
Best regards,
Vladimir Ivanov
On 10/13/12 03:45, John Rose wrote:
> On Oct 12, 2012, at 4:00 PM, Vladimir Kozlov wrote:
>
>> From what I remember originally we only accepted format ("," on command line to separate method and " " in .hotspot_compiler file):
>>
>> /c1/c2/c3,m
>>
>> Then Tom added next format to match PrintCompilation output:
>>
>> c1.c2.c3::m
>
> The original command form was three blank-separated fields, command classname methodname.
>
> We added ',' as an alias for ' ' (everywhere) to make it easy to pass CC options through various shells. The parser turns ',' to ' ', then separates into fields.
>
> We also added support for '::' as Vladimir said, to allow cut-and-paste of PrintC output names. Once again, the '::' turns into a field separator.
>
> The ',' does not mean "here is another part of a command", so CompileOnly=String.length,List.size is nonsense.
>
> Multiple commands are separated by newlines '\n'. This is most obvious in the .hotspot_compiler file, but is also true on the command line, because multiple accumulating string options are also glued together with newline '\n'. Thus, -XX:CompileCommand=foo -XX:CompileCommand=bar is the same as -XX:CompileCommand="foo${n}bar" where ${n} is a newline character.
>
> Here's the embedded comment from CompilerOracle::parse_from_line:
> // Allow '.' to separate the class name from the method name.
> // This is the preferred spelling of methods:
> // exclude java/lang/String.indexOf(I)I
> // Allow ',' for spaces (eases command line quoting).
> // exclude,java/lang/String.indexOf
> // For backward compatibility, allow space as separator also.
> // exclude java/lang/String indexOf
> // exclude,java/lang/String,indexOf
> // For easy cut-and-paste of method names, allow VM output format
> // as produced by Method::print_short_name:
> // exclude java.lang.String::indexOf
>
> (I admit it's kludgey stuff.)
>
> — John
More information about the hotspot-compiler-dev
mailing list