Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Initial version of class profiling for PGO #45133

Merged
merged 10 commits into from
Nov 25, 2020

Commits on Nov 23, 2020

  1. Initial version of class profiling for PGO

    Add support to the jit and runtime so that PGO can determine the distribution of
    classes at virtual and indirect call sites.
    
    Use this information when jitting to enable guarded devirtualization, if there
    is a suitably likely class to guess for.
    
    Enable by setting:
    ```
    COMPlus_TieredCompilation=1
    COMPlus_TieredPGO=1
    COMPlus_JitClassProfiling=1
    COMPlus_JitEnableGuardedDevirtualization=1
    ```
    impact can be enhanced by also setting
    ```
    COMPlus_TC_QuickJitForLoops=1
    ```
    to allow more methods to pass through Tier0.
    AndyAyersMS committed Nov 23, 2020
    Configuration menu
    Copy the full SHA
    3c2f24a View commit details
    Browse the repository at this point in the history
  2. fix SPMI packet numbers

    AndyAyersMS committed Nov 23, 2020
    Configuration menu
    Copy the full SHA
    2b0b1ca View commit details
    Browse the repository at this point in the history

Commits on Nov 24, 2020

  1. Configuration menu
    Copy the full SHA
    1533a1d View commit details
    Browse the repository at this point in the history
  2. review feedback

    AndyAyersMS committed Nov 24, 2020
    Configuration menu
    Copy the full SHA
    b357320 View commit details
    Browse the repository at this point in the history
  3. fix compile issue

    AndyAyersMS committed Nov 24, 2020
    Configuration menu
    Copy the full SHA
    f490d8c View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    48d757b View commit details
    Browse the repository at this point in the history
  5. null, not 0

    AndyAyersMS committed Nov 24, 2020
    Configuration menu
    Copy the full SHA
    b72de10 View commit details
    Browse the repository at this point in the history
  6. Restore the logic to do guarded devirt for predicatble interface

    calls. Not sure how this got lost.
    AndyAyersMS committed Nov 24, 2020
    Configuration menu
    Copy the full SHA
    7b7efc9 View commit details
    Browse the repository at this point in the history

Commits on Nov 25, 2020

  1. Generalize handling of the case where the dispatch object has a class…

    … type
    
    to work with shared classes (like __Canon). Also note we can reach this
    stage for both virtual and interface calls.
    AndyAyersMS committed Nov 25, 2020
    Configuration menu
    Copy the full SHA
    23f26bf View commit details
    Browse the repository at this point in the history
  2. review feedback

    AndyAyersMS committed Nov 25, 2020
    Configuration menu
    Copy the full SHA
    95c6d8e View commit details
    Browse the repository at this point in the history