-
Notifications
You must be signed in to change notification settings - Fork 4.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
JIT: Factor reachability sets and base them on new DFS (#96892)
- Introduce `BlockReachabilitySets` which encapsulates a data structure that can answer "A -> B" reachability queries in `O(1)`. It factors the old `fgComputeReachabilitySets` and `fgReachable`. - Base the new reachability sets on the new DFS instead of using the old DFS. Switch to postorder num indexing instead of bbNum based indexing. - Remove `BasicBlock::bbReach`; store the reachability sets within `BlockReachabilitySets` instead. This costs some extra memory in FullOpts if we end up computing it twice, but reduces memory in MinOpts. - We no longer propagate `BBF_GC_SAFE_POINT` during the reachability computation. The cycle-based GC safe point algorithm introduced in #95299 does not require this propagation. - Switch the dead block elimination in `fgComputeReachability` to use `fgDfsBlocksAndRemove`, which has more general handling of EH and does not require as much iteration to closure - Remove the compuation of "enter blocks". With recent work the reachability computation was the last remaining use. Minor diffs expected due to the more general dead block removal capacity of `fgDfsBlocksAndRemove`.
- Loading branch information
1 parent
59fb3be
commit 9fde15e
Showing
10 changed files
with
209 additions
and
368 deletions.
There are no files selected for viewing
This file contains 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
This file contains 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
This file contains 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
This file contains 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
This file contains 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
Oops, something went wrong.