Repository navigation
JIT: Centralize exception and write-barrier proofs in value numbering - #137045
Draft
NinoFloris wants to merge 4 commits into
Draft
NinoFloris wants to merge 4 commits into
NinoFloris wants to merge 4 commits into
Conversation
|
Azure Pipelines: Successfully started running 5 pipeline(s). 10 pipeline(s) were filtered out due to trigger conditions. There may be pipelines that require an authorized user to comment /azp run to run. |
Contributor
|
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch |
NinoFloris
force-pushed
the
jit/vn-dominated-exceptions
branch
2 times, most recently
from
November 5, 2026 23:31
52942ad to
da6351b
Compare
NinoFloris
force-pushed
the
jit/vn-dominated-exceptions
branch
3 times, most recently
from
November 7, 2026 03:54
3fae14d to
1a1445e
Compare
NinoFloris
force-pushed
the
jit/vn-dominated-exceptions
branch
5 times, most recently
from
November 7, 2026 20:11
551e1ea to
0ffa0d4
Compare
NinoFloris
force-pushed
the
jit/vn-dominated-exceptions
branch
2 times, most recently
from
November 7, 2026 23:12
9e5166c to
0bf9a73
Compare
NinoFloris
force-pushed
the
jit/vn-dominated-exceptions
branch
from
November 8, 2026 13:28
051cae4 to
88095c1
Compare
This was referenced Nov 8, 2026
NinoFloris
force-pushed
the
jit/vn-dominated-exceptions
branch
from
November 9, 2026 21:42
5794b06 to
bd19734
Compare
This was referenced Nov 10, 2026
NinoFloris
force-pushed
the
jit/vn-dominated-exceptions
branch
from
November 10, 2026 16:02
c702aac to
f166c32
Compare
NinoFloris
force-pushed
the
jit/vn-dominated-exceptions
branch
from
November 10, 2026 16:48
f166c32 to
d197c59
Compare
Omit exception items that an earlier operation or covered join has already ruled out. Include exceptional entries in join coverage and index large survivor sets to bound lookup cost. Cover exceptional entry to an uncloned finally.
Publish non-faulting and arithmetic proofs during numbering and remove duplicate global assertion-propagation work. Distinguish owned and inherited dominated ordering, retain compact block anchors, and pass those records explicitly to hoisting. Update tree and LIR motion, comparison folding, branch optimization and bounds-check coalescing together. Preserve dependencies through cloning and flag refreshes, and keep common flag-free paths cheap. Keep a focused regression test for conditional hoisting.
Classify reference and block stores after all reaching values have been numbered, before CSE can hide their addresses or values. Use null-edge facts to remove unnecessary barriers and remove duplicate classification from assertion propagation. Preserve destination fault behavior and test null edges and non-null stored values.
Keep the contextual marker on its operation without propagating it into ordinary ordering. Search subtrees where a transformation needs their ordering requirements, and use operation-local effects directly in LIR. Preserve argument evaluation constraints and ownership during long decomposition.
NinoFloris
force-pushed
the
jit/vn-dominated-exceptions
branch
from
November 11, 2026 14:15
d197c59 to
3868e86
Compare
This branch has not been deployed
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.
Centralize exception and write-barrier proofs in value numbering so CSE and later phases can use them without rediscovering the same facts.
VN drops exception items already ruled out by dominating checks or fully covered joins, including exceptional entries. It publishes non-faulting and arithmetic properties during the numbering walk, and classifies write barriers after all reaching values have been numbered. This removes the duplicate VN-based non-null walk and write-barrier classification from global assertion propagation, and makes the information available earlier to RBO and hoisting.
CI results (negative is better):
The awkward part is preserving contextual proofs when code moves.
GTF_ORDER_DOMINATEDmarks the operation whose safety depends on an earlier check. It is local to that operation and is not propagated to parent nodes or folded intoGTF_ORDER_SIDEEFF. Tree transformations inspect operands when they need a subtree summary, while LIR checks the operations directly. Hoisting receives scoped block anchors to check that the required facts still hold at the destination.Focused regression tests cover exceptional entry into a finally, conditional hoisting, and write-barrier classification without losing stores, faults or live references.