Wasm loop aware rpo compute last block in loop quickly#125101
Merged
AndyAyersMS merged 2 commits intodotnet:mainfrom Mar 3, 2026
Merged
Wasm loop aware rpo compute last block in loop quickly#125101AndyAyersMS merged 2 commits intodotnet:mainfrom
AndyAyersMS merged 2 commits intodotnet:mainfrom
Conversation
…Flow The LaRPO guarantees loop bodies are contiguous, so the end position of a loop starting at cursor is simply cursor + NumLoopBlocks(). This replaces the O(n) while loop that scanned forward calling ContainsBlock per block. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Member
Author
|
@jakobbotsch PTAL Verified the fix in a local crossgen run. |
Contributor
|
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch |
Contributor
There was a problem hiding this comment.
Pull request overview
This PR optimizes WebAssembly control-flow interval construction by leveraging the invariant that Loop-Aware RPO (LaRPO) keeps loop bodies contiguous, enabling O(1) computation of a loop’s end position in the LaRPO order.
Changes:
- Compute loop interval end position as
headerIndex + NumLoopBlocks()instead of scanning forward through the layout. - Add a DEBUG-only verification that the new computation matches the previous scan-based behavior.
- Update the TODO list to remove items that are no longer applicable.
jakobbotsch
reviewed
Mar 3, 2026
jakobbotsch
approved these changes
Mar 3, 2026
This was referenced Mar 3, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Since Loop Aware RPO keeps loops compact, we can quickly figure out the last block in the loop in the order.