You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is probably something we can defer. It's not urgent, and would make more sense as part of a broader cleanup of the code for control flow.
Inlining joins is generally the preferred mode of joins, since it lets you emit clean(er) rust code that doesn't touch the join stack. Generally, you only ever want to create a serialized join if you're going to cross a yield boundary.
However, if you cross a yield boundary with a bunch of inlined joins in the compiler's stack, it implicitly converts them to serialized joins and does so on a per-funclet basis. The result is a long string of inlined code, followed by a chain of unexpected tiny joins.
Really, codegen should merge these inlined joins and put them on a queue. This would entail a few parts of the codegen needing to think in terms of funclet chains and not individual funclets, though.
The text was updated successfully, but these errors were encountered:
This is probably something we can defer. It's not urgent, and would make more sense as part of a broader cleanup of the code for control flow.
Inlining joins is generally the preferred mode of joins, since it lets you emit clean(er) rust code that doesn't touch the join stack. Generally, you only ever want to create a serialized join if you're going to cross a yield boundary.
However, if you cross a yield boundary with a bunch of inlined joins in the compiler's stack, it implicitly converts them to serialized joins and does so on a per-funclet basis. The result is a long string of inlined code, followed by a chain of unexpected tiny joins.
Really, codegen should merge these inlined joins and put them on a queue. This would entail a few parts of the codegen needing to think in terms of funclet chains and not individual funclets, though.
The text was updated successfully, but these errors were encountered: