Skip to content

JIT: Make async tail merging layout equality assert a check#128712

Merged
jakobbotsch merged 3 commits into
dotnet:mainfrom
jakobbotsch:revert-async-tail-merge
May 28, 2026
Merged

JIT: Make async tail merging layout equality assert a check#128712
jakobbotsch merged 3 commits into
dotnet:mainfrom
jakobbotsch:revert-async-tail-merge

Conversation

@jakobbotsch
Copy link
Copy Markdown
Member

@jakobbotsch jakobbotsch commented May 28, 2026

#128704 shows that the comment is false. Just make the assert a real check until I have time to look into why it wouldn't be true.

Fix #128704

Copilot AI review requested due to automatic review settings May 28, 2026 17:13
@github-actions github-actions Bot added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label May 28, 2026
@dotnet-policy-service
Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch
See info in area-owners.md if you want to be subscribed.

@jakobbotsch jakobbotsch changed the title Revert "JIT: Tail merge async suspensions (#128559)" JIT: Make an assert a check May 28, 2026
@jakobbotsch jakobbotsch changed the title JIT: Make an assert a check JIT: Make async tail merging layout equality assert a check May 28, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR backs out the async suspension tail-merge optimization in the CoreCLR JIT to avoid the ContinuationLayoutBuilder::Equals assertion failure reported in #128704.

Changes:

  • Removes the async suspension reuse/merge path and its associated metric.
  • Removes helper comparison APIs that were only used by the merge logic.
  • Restores per-suspension state creation while keeping existing continuation layout/reuse flow intact.

Reviewed changes

Copilot reviewed 1 out of 1 changed files in this pull request and generated no comments.

Show a summary per file
File Description
src/coreclr/jit/jitmetadatalist.h Removes the now-unused SuspensionPointsMerged JIT metric.
src/coreclr/jit/gentree.h Removes the unused GenTreeLclVarCommon::EqualsLocal declaration.
src/coreclr/jit/gentree.cpp Removes the EqualsLocal implementation formerly used by async suspension merging.
src/coreclr/jit/async.h Removes declarations for suspension reuse helpers and updates suspension fill signature.
src/coreclr/jit/async.cpp Removes suspension tail-merge logic and always creates a distinct suspension state per async call.

@jakobbotsch
Copy link
Copy Markdown
Member Author

cc @dotnet/jit-contrib PTAL @AndyAyersMS

@jakobbotsch jakobbotsch requested a review from AndyAyersMS May 28, 2026 18:19
@jakobbotsch
Copy link
Copy Markdown
Member Author

/ba-g Simple change, merging to fix innerloop

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[ci-scan] Known Build Error: JIT assert ContinuationLayoutBuilder::Equals under libraries-jitstress

3 participants