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

PrintInlining as compiler directive doesn't print virtual calls

    XMLWordPrintable

Details

    • b28

    Backports

      Description

        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 {

        Attachments

          Issue Links

            Activity

              People

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

                Dates

                  Created:
                  Updated:
                  Resolved: