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

Support fast tailcalls in R2R #56669

Merged
merged 28 commits into from
Oct 7, 2021
Merged

Commits on Jul 31, 2021

  1. Support fast tailcalls in R2R

    Partially addresses dotnet#5857
    jakobbotsch committed Jul 31, 2021
    Configuration menu
    Copy the full SHA
    7137494 View commit details
    Browse the repository at this point in the history
  2. Support ARM64

    jakobbotsch committed Jul 31, 2021
    Configuration menu
    Copy the full SHA
    0efbbc4 View commit details
    Browse the repository at this point in the history
  3. Run jit-format

    jakobbotsch committed Jul 31, 2021
    Configuration menu
    Copy the full SHA
    5b0127e View commit details
    Browse the repository at this point in the history
  4. Fix non-R2R ARM build

    jakobbotsch committed Jul 31, 2021
    Configuration menu
    Copy the full SHA
    2b360c8 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    ae8fd46 View commit details
    Browse the repository at this point in the history

Commits on Aug 1, 2021

  1. Configuration menu
    Copy the full SHA
    e45f0c5 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    7f21f31 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    5ce1e65 View commit details
    Browse the repository at this point in the history

Commits on Aug 2, 2021

  1. Fix x86

    jakobbotsch committed Aug 2, 2021
    Configuration menu
    Copy the full SHA
    81268fa View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    8e15c1c View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    b971fce View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    483b34a View commit details
    Browse the repository at this point in the history

Commits on Aug 4, 2021

  1. Configuration menu
    Copy the full SHA
    b533f4b View commit details
    Browse the repository at this point in the history

Commits on Aug 29, 2021

  1. Configuration menu
    Copy the full SHA
    1c0ede7 View commit details
    Browse the repository at this point in the history

Commits on Aug 30, 2021

  1. Regenerate JIT interface

    jakobbotsch committed Aug 30, 2021
    Configuration menu
    Copy the full SHA
    424d538 View commit details
    Browse the repository at this point in the history

Commits on Sep 4, 2021

  1. Configuration menu
    Copy the full SHA
    24cfa6f View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    0968851 View commit details
    Browse the repository at this point in the history

Commits on Sep 24, 2021

  1. Configuration menu
    Copy the full SHA
    91a665a View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    b345db7 View commit details
    Browse the repository at this point in the history
  3. More efficient arm64 VSD fast tailcalls, fix some bad merging

    Also fix logic since we removed tailcall register. For ARM64 that means
    we now use the single temp reg that is available for R2R/VSD calls, and
    in LSRA we ensure this goes into a volatile register.
    jakobbotsch committed Sep 24, 2021
    Configuration menu
    Copy the full SHA
    0816d52 View commit details
    Browse the repository at this point in the history
  4. Take R2R indirection into account for tail call profitability

    On x64 an R2R indirected direct call normally disassembles the call site
    to determine the indirection cell, so it is more expensive to do tail
    calls in this scenario as the indirection cell needs to be passed in a
    register. Take this into account: if there is no tail. prefix, do normal
    calls, and otherwise use tail calls.
    jakobbotsch committed Sep 24, 2021
    Configuration menu
    Copy the full SHA
    863ad4d View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    0778263 View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    92cd381 View commit details
    Browse the repository at this point in the history
  7. Revert "Take R2R indirection into account for tail call profitability"

    This reverts commit 863ad4d.
    
    Let's not divert on the behavior here. It is not clear that having a
    smaller call site is better than tail calling albeit with a larger call
    site.
    jakobbotsch committed Sep 24, 2021
    Configuration menu
    Copy the full SHA
    16e32b0 View commit details
    Browse the repository at this point in the history

Commits on Sep 25, 2021

  1. Configuration menu
    Copy the full SHA
    d5729a7 View commit details
    Browse the repository at this point in the history

Commits on Sep 26, 2021

  1. Configuration menu
    Copy the full SHA
    b8ad2ba View commit details
    Browse the repository at this point in the history

Commits on Oct 1, 2021

  1. Fix conflicts

    jakobbotsch committed Oct 1, 2021
    Configuration menu
    Copy the full SHA
    9f70cc4 View commit details
    Browse the repository at this point in the history

Commits on Oct 5, 2021

  1. Take necessary conditions into account in canTailCall

    Do not do implicit tailcalls when
    * The caller is the entry point
    * The caller is marked NoInline
    * The callee requires security object
    jakobbotsch committed Oct 5, 2021
    Configuration menu
    Copy the full SHA
    ad78caf View commit details
    Browse the repository at this point in the history