dotnet / runtime

.NET is a cross-platform runtime for cloud, mobile, desktop, and IoT apps.
https://docs.microsoft.com/dotnet/core/
MIT License
15.08k stars 4.7k forks source link

JIT: disentangle tail call screening logic #12859

Open AndyAyersMS opened 5 years ago

AndyAyersMS commented 5 years ago

We do different kinds of screening for tail call stress and implicit tail calls, and this can lead to issues like dotnet/runtime#12833.

Because of this we are also missing the opportunity to tail call stress at tail call sites in inlinees. Seems like we ought to unify the logic if possible. It wasn't done earlier because information needed to qualify a tail call candidate is also needed for general call handling, and we didn't want to duplicate things.

category:implementation theme:tail-call skill-level:intermediate cost:medium impact:small

BruceForstall commented 5 years ago

cc @jashook @jakobbotsch