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: refactor to allow OSR to switch to optimized #61851

Merged
merged 5 commits into from
Nov 22, 2021

Commits on Nov 19, 2021

  1. JIT: refactor to allow OSR to switch to optimized

    When OSR is enabled, the jit may still need to switch to optimized codegen if
    there is something in the method that OSR cannot handle. Examples include:
    * localloc
    * tail. prefixes
    * loops in handlers
    * reverse pinvoke (currently bypasses Tiering so somewhat moot)
    
    When OSR is enabled, rework the "switch to optimize logic" in the jit to check
    for these cases up front before we start importing code.
    
    When both QuickJitForLoops and OnStackReplacement are enabled, this should ensure
    that if we can't transition out of long-running Tier0 code (via OSR) then we will
    instead optimize the method. Very few methods overall should opt-out of Tier0.
    
    Note some of these unhandled constructs can eventually be handled by OSR, with
    additional work.
    AndyAyersMS committed Nov 19, 2021
    Configuration menu
    Copy the full SHA
    c02db74 View commit details
    Browse the repository at this point in the history
  2. fix qjfl check

    AndyAyersMS committed Nov 19, 2021
    Configuration menu
    Copy the full SHA
    38a4b63 View commit details
    Browse the repository at this point in the history
  3. Revise interaction of QJFL, OSR, BBINSTR, and explicit tail calls.

    This should replicate the current logic where we alwatys optimize methods
    with explicit tail calls unless we're instrumenting them.
    
    To make this work with OSR we simply won't put patchpoints in methods
    with explicit tail calls, instead trusting that Tiering can get us
    to optimized versions.
    AndyAyersMS committed Nov 19, 2021
    Configuration menu
    Copy the full SHA
    6af6ef2 View commit details
    Browse the repository at this point in the history

Commits on Nov 20, 2021

  1. fix test

    AndyAyersMS committed Nov 20, 2021
    Configuration menu
    Copy the full SHA
    78d5ad9 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    958df78 View commit details
    Browse the repository at this point in the history