Skip to content

Serialize chains, not funclets #26

@od0x0

Description

@od0x0

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    coreEssential (planned) functionality or maintenancedeferred

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions