• Home
    • View
    • Login
    This page
    • Normal
    • Export PDF
    • Export Word
    • Attachments
    • Page Information

    Loading...
  1. Dashboard
  2. HotSpot
  3. Main
  4. Compiler
  5. Server Compiler Inlining Messages

Server Compiler Inlining Messages

  • Created by Tom Rodriguez, last modified on Apr 04, 2011

This is a short description of the inlining messages from the server
compiler. The policy is generally very greedy and several of the
limits are intended to keep the compiler from attempting to inline the
whole program.

In the descriptions below a call site is considered hot if the ratio
of number of times this call site was executed to the number of times
the callee was called greater than or equal to InlineFrequencyRatio or
the number of times the call site was executed is greater than
InlineFrequencyCount. These descriptions are derived from the
inlining policy logic in src/share/vm/opto/bytecodeInfo.cpp and may
change as the code evolves.

  • too big: the call site isn't hot according to profiling but the
    bytecodes are larger than MaxInlineSize.
  • hot method too big: the call site is hot according to profiling but
    the bytecodes of the callee are larger than FreqInlineSize.
  • already compiled into a big method: there is already compiled code
    for the method that is called from the call site and the code that was
    generated for is larger than InlineSmallCode
  • already compiled into a medium method: there is already compiled code
    for the method that is called from the call site and the code that was
    generated for is larger than InlineSmallCode / 4
  • call site not reached: the profiling for the call site records no
    calls calls so it appears to have never been executed.
  • exception method: methods that inherit from Throwable are only inlined in Throwable related methods
  • never executed: the method being called has never incremented it's
    invocation counter so it has never been called.
  • executed < MinInliningThreshold times: the invocation counter for
    the method reports less than MinInliningThreshold invocations.
  • inlining too deep: the call depth is greater than MaxInlineLevel
  • recursively inlining too deep: the call depth is greater than
    MaxRecursiveInlineLevel so inlining is stopped at this point
  • native method: native Java method.
  • size > DesiredMethodLimit: the inlining that's been done so far has
    inlined more than DesiredMethodLimit bytecodes so inlining will be stopped.
  • NodeCountInliningCutoff: the inlining that's been done so far has
    created more than NodeCountInliningCutoff IR nodes so inlining will be stopped.
  • unloaded signature classes: a class mentioned in the signature of the
    call site hasn't been loaded and can't be resolved. Since the
    compiler wants precise types is make it impossible for the method to
    be inlined since the types can't be resolved.

Common targets for tuning are to adjust the FreqInlineSize,
MaxInlineSize and InlineSmallCode. Raising some of the other limits
like DesiredMethodLimit or NodeCountInliningCutoff might work well for
particular programs but they require a bit more care since they may
create compiles with more than MaxNodeLimit nodes in the IR and will
bail out of the compile. This means we won't produce compiled code at
all for the root method of the compile. Look for compilation bail out
messages that mention "out of nodes" in their description.

Overview
Content Tools
ThemeBuilder
  • No labels

Terms of Use
• License: GPLv2
• Privacy • Trademarks • Contact Us

Powered by a free Atlassian Confluence Open Source Project License granted to https://www.atlassian.com/software/views/opensource-community-additional-license-offer. Evaluate Confluence today.

  • Kolekti ThemeBuilder Powered by Atlassian Confluence 8.5.21
  • Kolekti ThemeBuilder printed.by.atlassian.confluence
  • Report a bug
  • Atlassian News
Atlassian
Kolekti ThemeBuilder EngineAtlassian Confluence
{"serverDuration": 301, "requestCorrelationId": "d433a6283b2accf6"}