RFR: 8255742: PrintInlining as compiler directive doesn't print virtual calls [v2]
Xin Liu
xliu at openjdk.java.net
Thu Dec 3 18:13:58 UTC 2020
On Thu, 3 Dec 2020 16:07:13 GMT, Volker Simonis <simonis at openjdk.org> wrote:
>> If we set PrintInlining for a specific method only with the help of a compiler directive (e.g. `-XX:CompileCommand="option,Inlining::foo,PrintInlining"`) it won't print virtual calls which can't be inlined. These calls are printed if we use the global `-XX:+PrintInlining` option.
>>
>> The fix is trivial:
>> --- a/src/hotspot/share/opto/doCall.cpp
>> +++ b/src/hotspot/share/opto/doCall.cpp
>> @@ -357,7 +357,7 @@ CallGenerator* Compile::call_generator(ciMethod* callee, int vtable_index, bool
>> // Use a more generic tactic, like a simple call.
>> if (call_does_dispatch) {
>> const char* msg = "virtual call";
>> - if (PrintInlining) print_inlining(callee, jvms->depth() - 1, jvms->bci(), msg);
>> + if (C->print_inlining()) print_inlining(callee, jvms->depth() - 1, jvms->bci(), msg);
>> C->log_inline_failure(msg);
>> return CallGenerator::for_virtual_call(callee, vtable_index);
>> } else {
>
> Volker Simonis has updated the pull request incrementally with one additional commit since the last revision:
>
> Fixed copyright year
test/hotspot/jtreg/compiler/inlining/PrintInlining.java line 67:
> 65: public static void main(String[] args) throws Exception {
> 66: test("-XX:+PrintInlining");
> 67: test("-XX:CompileCommand=option,*::foo,PrintInlining");
just FYI, even though the old form is still supported, the new form is -XX:CompileCommand=<option><method pattern>, ie. -XX:CompileCommand=PrintInlining,*::foo
-------------
PR: https://git.openjdk.java.net/jdk/pull/1596
More information about the hotspot-compiler-dev
mailing list