-
Notifications
You must be signed in to change notification settings - Fork 4.7k
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: Allow forwarding field accesses off of implicit byrefs #80852
JIT: Allow forwarding field accesses off of implicit byrefs #80852
Conversation
The JIT currently allows forwarding implicit byrefs at their last uses to calls, but only if the full implicit byref is used. This change allows the JIT to forward any such access off of an implicit byref parameter.
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch, @kunalspathak Issue DetailsThe JIT currently allows forwarding implicit byrefs at their last uses to calls, but only if the full implicit byref is used. This change allows the JIT to forward any such access off of an implicit byref parameter. For example:
Codegen before:
Codegen after:
(The latter would also be tailcalled without NoInlining attribute)
|
cc @dotnet/jit-contrib PTAL @AndyAyersMS Small set of diffs. The main benefit is that it makes the copy elision work consistently for both implicit byrefs and normal locals. |
Ping @AndyAyersMS |
…0852) The JIT currently allows forwarding implicit byrefs at their last uses to calls, but only if the full implicit byref is used. This change allows the JIT to forward any such access off of an implicit byref parameter.
The JIT currently allows forwarding implicit byrefs at their last uses to calls, but only if the full implicit byref is used. This change allows the JIT to forward any such access off of an implicit byref parameter.
For example:
Codegen before:
Codegen after:
(The latter would also be tailcalled without NoInlining attribute)