Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8255742

PrintInlining as compiler directive doesn't print virtual calls

XMLWordPrintable

    • b28

        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 virtuall 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 {

              simonis Volker Simonis
              simonis Volker Simonis
              Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

                Created:
                Updated:
                Resolved: