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

JIT: handle interaction of OSR, PGO, and tail calls #62263

Merged
merged 3 commits into from Dec 2, 2021

Commits on Dec 2, 2021

  1. JIT: handle interaction of OSR, PGO, and tail calls

    When both OSR and PGO are enabled, the jit will add PGO probes to OSR methods.
    And if the OSR method also has a tail call, the jit must take care to not add
    block probes to any return block reachable from possible tail call blocks.
    
    Instead, instrumentation should create copies of the return block probe in each
    return block predecessor (possibly splitting critical edges to make this viable).
    
    Because all this happens early on, there are no pred lists. The analysis leverages
    cheap preds instead, which means it needs to handle cases where a given pred has
    multiple pred list entries. And it must also be aware that the OSR method's actual
    flowgraph is a subgraph of the full initial graph.
    
    This came up while scouting what it would take to enable OSR by default.
    See dotnet#61934.
    AndyAyersMS committed Dec 2, 2021
    Configuration menu
    Copy the full SHA
    9fe8c05 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    f8efe04 View commit details
    Browse the repository at this point in the history
  3. review feedback

    AndyAyersMS committed Dec 2, 2021
    Configuration menu
    Copy the full SHA
    b111cfb View commit details
    Browse the repository at this point in the history