GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Implement portable tailcall helpers by jakobbotsch · Pull Request #341 · dotnet/runtime

Conversation

@jakobbotsch

@jakobbotsch jakobbotsch commented Nov 27, 2019 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member

This implements tailcall-via-help support for all platforms supported by
the runtime. In this new mechanism the JIT asks the runtime for help
whenever it realizes it will need a helper to perform a tailcall, i.e.
when it sees an explicit tail. prefixed call that it cannot make into a
fast jump-based tailcall.

The runtime creates two important IL stubs to help the JIT in performing
the necessary tailcalls. One IL stub is used to store the args for the
tailcall while the other is used to dispatch the actual tailcall
itself. The JIT will then transform the call from

return tail. F(a1, ..., an);

to

IL_STUB_StoreTailCallArgs(a1, ..., an);
T result;
IL_STUB_DispatchTailCalls(..., &result);
return result;

The dispatcher is written in such a way that it is able to dispatch
multiple tailcalls in a row when tailcalled functions also perform
tailcalls. To do this, the JIT helps the dispatcher detect if the
caller's caller is also a dispatcher. When this is the case the
dispatcher returns to let the previous dispatcher perform the tailcall
with the currently stored args. This allows the frame to unwind and
ensures that sequences of tailcalls do not grow the stack more than by a
constant factor.

Due to this unwinding the args cannot be stored on the stack and are
instead stored in TLS. The GC is made specially aware of this buffer as
the args can be anything, including interior pointers.

The control-flow when performing the new tailcalls is nonstandard, so
this also changes the debugger to support proper stepping into/over/out
of tailcalled functions when they go through the new dispatcher.

x86's tailcalling mechanism does not change.

Port of dotnet/coreclr#26418.

WIP:

  • Stubs
    • EH clause
  • Initial JIT work
  • ReturnAddress intrinsics for detecting previous frames
    • XArch
    • ARM
    • Compatibility with return address hijacking
  • Void returning methods
  • Instance methods
    • Classes
    • Structs
  • Retbuf
  • Structs returned in registers
  • GC support
  • Virtual methods
    • Non-VSD
    • VSD
  • Generics
    • Virtual
    • Non-virtual
  • tail. calli
    • Evaluation order (target address must be evaluated last)
  • Stop relying on fast tailcall support (makes x86 support difficult/downright impossible)
  • ByRef support (validate GC tracking)
  • Initial bringup of other platforms
    • x64 Linux
    • x64 Windows
    • ARM32 Linux
    • ARM64 Linux
  • Localloc
  • Debugging
  • Use old mechanism on x86 (as it is fast there)
  • SuperPMI changes for interface
  • Better test coverage of tailcall via helpers
    • tail. calli
    • Calls to generics
    • Virtual calls
    • Instance calls
    • Retbufs
    • Void-returning
    • Exceptions we already have coverage in https://github.com/dotnet/coreclr/tree/master/tests/src/JIT/Methodical/Invoke/SEH
    • Delegates
    • Byrefs
    • Multi-reg returning
    • Vector returns
    • Struct/class instance methods
    • Stackallocs
    • Virtual non-generic method in generic abstract class
    • Non-generic method in generic static class
  • Change to use similar code paths as ldvirtftn/ldftn
    • Expand GT_RUNTIMELOOKUP so it can be used from morph
  • Varargs
  • Revise documentation
  • Tailcall IL stub sharing
  • R2R
  • Investigate unloadability
  • Investigate tailcalls to functions with non-standard args
  • Improve arg buffer allocation policy

FYI @dotnet/jit-contrib @janvorli

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

itsamelambda, nietras, l3m, intellild, panesofglass, vininu, and adelarsq reacted with thumbs up emoji jashook, Berrysoft, abhi18av, strangeman375, NatElkins, mhmd-azeez, eugene-g, ReubenBond, jarlestabell, matijagrcic, and 13 more reacted with hooray emoji matijagrcic, intellild, panesofglass, and adelarsq reacted with heart emoji
All reactions
  • 👍 7 reactions
  • 🎉 23 reactions
  • ❤️ 4 reactions
@jakobbotsch
Implement portable tailcall helpers
cc45a0e
This implements tailcall-via-help support for all platforms supported by
the runtime. In this new mechanism the JIT asks the runtime for help
whenever it realizes it will need a helper to perform a tailcall, i.e.
when it sees an explicit tail. prefixed call that it cannot make into a
fast jump-based tailcall.

The runtime created two important IL stubs to help the JIT in performing
the necessary tailcalls. One IL stub is used to store the args for the
tailcall, while the other is used to dispatch the actual tailcall
itself. The JIT will then transform the call from

return tail. F(a1, ..., an);

to

IL_STUB_StoreTailCallArgs(a1, ..., an);
T result;
IL_STUB_DispatchTailCalls(..., &result);
return result;

The dispatcher is written in such a way that it is able to dispatch
multiple tailcalls in a row when tailcalled functions also perform
tailcalls. To do this, the JIT helps the dispatcher detect if the
caller's caller is also a dispatcher. When this is the case the
dispatcher returns to let the previous dispatcher perform the tailcall
with the currently stored args. This allows the frame to unwind and
ensures that sequences of tailcalls do not grow the stack more than by a
constant factor.

Due to this unwinding the args cannot be stored on the stack and are
instead stored in TLS. The GC is made specially of this buffer as the
args can be anything, including interior pointers.

The control-flow when performing the new tailcalls is nonstandard, so
this also changes the debugger to support proper stepping into/over/out
of tailcalled functions when they go through the new dispatcher.

x86's tailcalling mechanism does not change.
@Dotnet-GitSync-Bot Dotnet-GitSync-Bot added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Nov 27, 2019
@jakobbotsch
Fix build
62a0134
@jashook

jashook commented Nov 27, 2019

Copy link
Copy Markdown
Contributor

Thank you for porting!

BruceForstall reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

jashook
jashook reviewed Nov 27, 2019
View reviewed changes

@jashook jashook left a comment

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have mostly nits and asks for more asserts. Overall to me the change looks good. Thank you for the work!

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread src/coreclr/src/ToolBox/superpmi/superpmi-shared/methodcontext.cpp Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/coreclr/src/ToolBox/superpmi/superpmi-shared/methodcontext.cpp Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/coreclr/src/debug/ee/controller.cpp Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/coreclr/src/jit/gentree.h Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/coreclr/src/jit/lower.cpp Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/coreclr/src/jit/morph.cpp Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/coreclr/src/jit/morph.cpp
#endif

JITDUMP("fgMorphTailCallViaHelper (before):\n");
JITDUMP("fgMorphTailCallViaHelpers (before):\n");

@jashook jashook Nov 27, 2019

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This method in general makes interestingly scary changes to the argument list. I think in general this method should have many asserts. Any time the arg list changes there should be an assert that the rest of the arglist is unaffected. Also there should be entry and exit asserts checking that the arglist is valid.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@jakobbotsch jakobbotsch Nov 27, 2019

Copy link
Copy Markdown
Member Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you have suggestions on how to check those conditions?

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@jashook jashook Nov 27, 2019

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Didn't think that far ahead sorry, I spoke with @BruceForstall and he and I didn't have a clear idea on how to do this today. Would you mind adding TODO: assert check this arg is the correct arg type to remove

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@jashook jashook Nov 27, 2019

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can address this post-merge.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread src/coreclr/src/jit/morph.cpp Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/coreclr/src/jit/morph.cpp Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/coreclr/src/jit/morph.cpp Resolved

Uh oh!

There was an error while loading. Please reload this page.

@jashook

jashook commented Nov 27, 2019

Copy link
Copy Markdown
Contributor

Before this goes in we should do a round of asm diffs.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@jashook
jashook requested review from AaronRobinsonMSFT, BruceForstall, CarolEidt, janvorli and jkoritzinsky November 27, 2019 16:44
@jakobbotsch

jakobbotsch commented Nov 27, 2019

Copy link
Copy Markdown
Member Author

Thanks for the review @jashook. I still have this as WIP as I believe there are some things left to do, eg. you have pointed some of them out in the reviews, and the runtime lookup done in morph needs to be investigated carefully. I don't really have the expertise to sign off on that change as it stands.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

janvorli
janvorli reviewed Dec 4, 2019
View reviewed changes
Comment thread src/coreclr/src/vm/dllimport.h Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/coreclr/src/vm/jitinterface.cpp Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/coreclr/src/vm/stubgen.h Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/coreclr/src/vm/tailcallhelp.cpp Resolved

Uh oh!

There was an error while loading. Please reload this page.

@BruceForstall

BruceForstall commented Dec 5, 2019

Copy link
Copy Markdown
Contributor

Does the design document https://github.com/dotnet/runtime/blob/master/docs/design/features/tailcalls-with-helpers.md need to be updated to match this implementation? (Either with this change, or after it is merged?)

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@jakobbotsch

jakobbotsch commented Dec 5, 2019

Copy link
Copy Markdown
Member Author

@BruceForstall Yes, I have an updated document I will add soon.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

CarolEidt
CarolEidt reviewed Dec 6, 2019
View reviewed changes

@CarolEidt CarolEidt left a comment

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've only reviewed the JIT sources so far, and I mostly have questions or requests for additional comments.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread src/coreclr/src/jit/compiler.h Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/coreclr/src/jit/compiler.h Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/coreclr/src/jit/emit.cpp Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/coreclr/src/jit/gentree.h Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/coreclr/src/jit/importer.cpp Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/coreclr/src/jit/morph.cpp Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/coreclr/src/jit/morph.cpp Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/coreclr/src/jit/morph.cpp Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/coreclr/src/jit/morph.cpp Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/coreclr/src/jit/morph.cpp Resolved

Uh oh!

There was an error while loading. Please reload this page.

@jakobbotsch jakobbotsch mentioned this pull request Jan 15, 2020
JIT\Directed\tailcall fails at runtime with jitstress=2 #1752
Closed
@AndyAyersMS AndyAyersMS mentioned this pull request Jan 15, 2020
Jitstress fixes for tailcall tests #1771
Merged
AndyAyersMS added a commit that referenced this pull request Jan 15, 2020
@AndyAyersMS
Jitstress fixes for tailcall tests (#1771)
e17f25c
Make STRESS_GENERIC_VARN more compatible with methods that make explicit tail
calls. Don't add gc checks for explicit tail calls, and remove the code in
morph that blocks tail calls if gc checks are active.

Update the tailcall test to to disable STRESS_UNSAFE_BUFFER_CHECKS. This can
be reverted when #341 is merged.

Fixes #1752.
@AndyAyersMS AndyAyersMS mentioned this pull request Jan 25, 2020
The frustrating state of tails calls in .NET #2191
Closed
@erozenfeld

erozenfeld commented Feb 5, 2020

Copy link
Copy Markdown
Contributor

@jakobbotsch I'd like to help get this PR to a point we can merge it. You mentioned in a few comments above that you were going to do some experiments and make some changes. Do you have anything in progress? Can you add an updated document? Let me know what you think is the best way to get this ready for a merge. We don't want this work to bit-rot. I have cycles to help.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@janvorli janvorli mentioned this pull request Feb 5, 2020
tailcalls_do / tailcalls_d fail on Windows ARM64 #31729
Closed
@jakobbotsch
Update design doc for helper-based tailcalls
b6af537
@jakobbotsch

jakobbotsch commented Feb 5, 2020 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member Author

@erozenfeld Sounds great. Unfortunately I have not had time to experiment further with this.
Also, as you can see, there is some unaddressed feedback from the team.

I have just added the updated design doc so you can take a look at that for a description of how it works. Also, I am happy to answer any questions you might have.

Let me know what you think is the best way to get this ready for a merge.

Essentially the missing part is dealing with tailcalls to generic functions which require generic contexts (or maybe even other nonstandard arguments). My idea was to pass a callable function pointer to the IL stubs. Such a function pointer can be obtained by doing something like ldftn or ldvirtftn, which will create instantiating stubs when a generic context parameter is required.
The problem is that we are in the JIT, more specifically in morph when we figure out that such a callable function pointer will be needed. At this point it is hard to create the complex trees required for runtime lookups which the JIT normally does directly during import (of eg. ldvirtftn).

My idea was to repurpose GT_RUNTIMELOOKUP nodes to hold information about runtime lookups. Then, change import and tailcall morph to generate such nodes when needed, eg. for ldvirtftn or for tailcalls requiring the same. Finally, expand these nodes later in the JIT, eg. during rationalization or lowering. This might have some impact on CSE which is what I wanted to experiment with.

There is some more discussion in the original thread, starting at dotnet/coreclr#26418 (comment). Once again, let me know if you have any questions about the design.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@erozenfeld

erozenfeld commented Mar 3, 2020

Copy link
Copy Markdown
Contributor

@jakobbotsch Can you please rebase the changes? I plan to work on getting us closer to merge this week.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@AaronRobinsonMSFT
AaronRobinsonMSFT removed their request for review March 3, 2020 02:48
jakobbotsch added 3 commits March 3, 2020 20:38
@jakobbotsch
Address some feedback
de7608a
@jakobbotsch
Merge remote-tracking branch 'upstream/master' into portable-tailcall…
c121e9e
…-helpers
@jakobbotsch
Fix some bad merges
442f186
@jakobbotsch

jakobbotsch commented Mar 3, 2020

Copy link
Copy Markdown
Member Author

@erozenfeld I addressed some feedback and resolved the conflicts. I merged instead of a rebase to make it a bit easier to check the merge resolutions, we can squash it later.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@erozenfeld
erozenfeld merged commit e1ffadd into dotnet:master Apr 28, 2020
@BruceForstall

BruceForstall commented Apr 28, 2020

Copy link
Copy Markdown
Contributor

Congratulations!

Many, many thanks to @jakobbotsch for the implementation (and design updating) work, @janvorli for the original design, @jashook for mentoring, and @erozenfeld for doing the hard work to get it over the line. It's really great to see this get in!

BruceForstall, jashook, sandreenko, jkotas, janvorli, dsyme, govert, jarlestabell, pkese, jawn, and Mertsch reacted with hooray emoji jkotas, janvorli, and jawn reacted with heart emoji BruceForstall, jashook, jkotas, and janvorli reacted with rocket emoji
All reactions
  • 🎉 11 reactions
  • ❤️ 3 reactions
  • 🚀 4 reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@saucecontrol saucecontrol mentioned this pull request Apr 28, 2020
Add BSF and BSR fallbacks for BitOperations methods #34550
Merged
@erozenfeld erozenfeld mentioned this pull request Apr 28, 2020
Jit: move runtime lookup expansion to lower #35551
Closed
@erozenfeld

erozenfeld commented Apr 28, 2020

Copy link
Copy Markdown
Contributor

Also thanks to @CarolEidt , @AndyAyersMS and @jkotas for code reviews and feedback along the way!

I opened two follow-up issues: #35551 (Jit: move runtime lookup expansion to lower) and #35423 (Add support for R2R tail calls with helpers in crossgen/crossgen2).

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@jkotas jkotas mentioned this pull request Apr 28, 2020
Delete deprecated tailcalls support #35552
Merged
@jakobbotsch
jakobbotsch deleted the portable-tailcall-helpers branch April 28, 2020 08:27
@jakobbotsch

jakobbotsch commented Apr 28, 2020

Copy link
Copy Markdown
Member Author

Thanks to all for the help, and a special thanks to @erozenfeld for pushing this past the finishing line!

I also opened #35559 about moving the dispatcher to System.Private.CoreLib once we have function pointer support.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@janvorli

janvorli commented Apr 28, 2020

Copy link
Copy Markdown
Member

Awesome, I am very happy to see this going in!

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

jkotas added a commit that referenced this pull request Apr 28, 2020
@jkotas
Delete deprecated tailcalls support (#35552)
bd34833
Follow up on #341
@erozenfeld erozenfeld mentioned this pull request Apr 29, 2020
Fix compFastTailCalls check. #35596
Merged
erozenfeld added a commit to erozenfeld/runtime that referenced this pull request Apr 29, 2020
@erozenfeld
Fix compFastTailCalls check.
9960d15
compFastTailCalls is true if COMPlus_FastTailCalls is not 0.
It was introduced in dotnet#341 to help with testing:
setting COMPlus_FastTailCalls to 0 forces all tail-prefixed
calls to be dispatched via helpers.

This fixes a subtle bug with checking compFastTailCalls:
it needs to be checked after `fgInitargInfo` has been called in
`fgCanFastTailCall`. `fgInitArgInfo` adds the stub address for VSD calls
and `fgMorphTailCallViaHelpers` then removes it.

This change also factors out the logic for checking whether the call
has byref parameters that must be copied by the caller.
erozenfeld added a commit that referenced this pull request Apr 30, 2020
@erozenfeld
Fix compFastTailCalls check. (#35596)
4becc75
compFastTailCalls is true if COMPlus_FastTailCalls is not 0.
It was introduced in #341 to help with testing:
setting COMPlus_FastTailCalls to 0 forces all tail-prefixed
calls to be dispatched via helpers.

This fixes a subtle bug with checking compFastTailCalls:
it needs to be checked after `fgInitargInfo` has been called in
`fgCanFastTailCall`. `fgInitArgInfo` adds the stub address for VSD calls
and `fgMorphTailCallViaHelpers` then removes it.

This change also factors out the logic for checking whether the call
has byref parameters that must be copied by the caller.
@erozenfeld erozenfeld mentioned this pull request May 1, 2020
JIT\opt\OSR\tailrecursetry\tailrecursetry.cmd fails with COMPlus_FastTailCalls=0 #35687
Closed
erozenfeld added a commit to erozenfeld/runtime that referenced this pull request May 1, 2020
@erozenfeld
Remove an unnecessary check from fgMakeOutgoingStructArgCopy.
2b8e185
The old-style helper tail calls required the jit to copy implicit by-ref
args. After dotnet#341 we are using old-style helper tail calls only for x86,
which doesn't have implicit by-ref parameters. So the check is no longer
necessary.

This is a no-diffs cleanup change.
@erozenfeld erozenfeld mentioned this pull request May 1, 2020
Remove an unnecessary check from fgMakeOutgoingStructArgCopy. #35701
Merged
erozenfeld added a commit that referenced this pull request May 1, 2020
@erozenfeld
Remove an unnecessary check from fgMakeOutgoingStructArgCopy. (#35701)
87f3910
The old-style helper tail calls required the jit to copy implicit by-ref
args. After #341 we are using old-style helper tail calls only for x86,
which doesn't have implicit by-ref parameters. So the check is no longer
necessary.

This is a no-diffs cleanup change.
@erozenfeld

erozenfeld commented May 5, 2020

Copy link
Copy Markdown
Contributor

@jakobbotsch If you still have slides from your presentation about this work, can you send them to me?

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@jakobbotsch

jakobbotsch commented May 5, 2020

Copy link
Copy Markdown
Member Author

@erozenfeld Unfortunately I seem to have kept it on my Microsoft OneDrive which I do not have access to anymore.

jawn reacted with confused emoji
All reactions
  • 😕 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@janvorli

janvorli commented May 5, 2020

Copy link
Copy Markdown
Member

@erozenfeld there is the video from that presentation available if that's sufficient for you.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

This was referenced May 11, 2020
Full tailcall support on Unix #4907
Closed
ARM64: JIT does not do TailCall when it requires more stack space than the caller has its incoming argument space #6469
Closed
@jakobbotsch jakobbotsch mentioned this pull request Aug 10, 2020
tail. call got stack overflow error !? #40581
Closed
This was referenced Nov 2, 2020
Move return buffer handling from interop to the JIT #39294
Merged
Change gtGetThisArg not to return nullptr. #44398
Merged
@ghost ghost locked as resolved and limited conversation to collaborators Dec 11, 2020
MichalStrehovsky added a commit to MichalStrehovsky/runtime that referenced this pull request Mar 25, 2021
@MichalStrehovsky
Switch coredistools to the dotnet/runtime plan (dotnet#612)
fe57434
Fixes dotnet#341.
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Reviewers

@janvorli janvorli janvorli left review comments
@jkotas jkotas jkotas approved these changes
@AndyAyersMS AndyAyersMS AndyAyersMS approved these changes
@BruceForstall BruceForstall Awaiting requested review from BruceForstall
@jkoritzinsky jkoritzinsky Awaiting requested review from jkoritzinsky
+3 more reviewers
@jashook jashook jashook left review comments
@CarolEidt CarolEidt CarolEidt left review comments
@erozenfeld erozenfeld erozenfeld left review comments
Reviewers whose approvals may not affect merge requirements

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

9 participants

@jakobbotsch @jashook @BruceForstall @erozenfeld @AndyAyersMS @janvorli @CarolEidt @jkotas @Dotnet-GitSync-Bot
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.