-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Paper Submission (OSDI 25) Sprint Improvements (#170)
## What Changed? This PR contains a plethora of improvements and fixes performed for the OSDI 25 submission. They should be separate PRs but I am too lazy to make so many. ## Why Does It Need To? This PR fixes the following problems: - `async_trait` recognition now accommodates newer versions which sometimes have more than 2 predicates in the `dyn` - Writing cross-crate MIR bodies now happens after the analysis and can be skipped. The analysis will lazily fetch and create typecheck facts for local bodies. - Bodies are now written in a per-crate artifact to reduce size. Filenames contained in those artifacts are deduplicated. - End-to-end timing (including for cross crate MIR dumping) is now recorded as well as and new timers for dumping of MIR have been added - For efficiency we no longer construct the polonius facts but use just the outlives constraints directly which turn out to be sufficient - Shim calls (for function pointers and closures) are now handled correctly - Fixed control flow across function boundaries. It is now emitted correctly. - Control flow edges from the `await` state machine are now omitted from the PDG. - Artifacts are written (vastly) more efficiently using buffered readers/writers - External marker files can now assign multiple markers to an entity in a single entry or to multiple refinements. - PDGs are now always constructed for bodies that handle marked types - Emitting the spans of analyzed bodies has been reinstated - `Context` has been renamed to `RootContext` and a new `Context` trait has been introduced that contains some of the simple graph queries. ## Checklist - [x] Above description has been filled out so that upon quash merge we have a good record of what changed. - [x] New functions, methods, types are documented. Old documentation is updated if necessary - [ ] Documentation in Notion has been updated - [ ] Tests for new behaviors are provided - [ ] New test suites (if any) ave been added to the CI tests (in `.github/workflows/rust.yml`) either as compiler test or integration test. *Or* justification for their omission from CI has been provided in this PR description.
- Loading branch information
1 parent
52a64bd
commit 0a5c628
Showing
59 changed files
with
2,013 additions
and
576 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
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
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.