-
Notifications
You must be signed in to change notification settings - Fork 13.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
incr.comp.: Add new DepGraph implementation. #44772
Conversation
r? @eddyb (rust_highfive has picked a reviewer for you, use r? to override) |
src/librustc/dep_graph/graph.rs
Outdated
data.current.borrow_mut().read(v); | ||
|
||
let mut current = data.current.borrow_mut(); | ||
debug_assert!(current.node_to_node_index.contains_key(&v), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why have both the debug assert and the bug!
?
Also, what is going on here =) -- that is, when exactly are these getting allocated? This is not obvious to me.
OK, I skimmed the commits. It all looks good to me. I left a question of something I don't understand, but r=me (I'm sure you can explain it to me async =) |
Oh, that seems to be an oversight.
Nodes are only allocated via |
☔ The latest upstream changes (presumably #44696) made this pull request unmergeable. Please resolve the merge conflicts. |
…nstead of DepNode existence.
e8eb327
to
89aec1e
Compare
📌 Commit 89aec1e has been approved by |
incr.comp.: Add new DepGraph implementation. This commits does a few things: 1. It adds the new dep-graph implementation -- *in addition* to the old one. This way we can start testing the new implementation without switching all tests at once. 2. It persists the new dep-graph (which includes query result fingerprints) to the incr. comp. caching directory and also loads this data. 3. It removes support for loading fingerprints of metadata imported from other crates (except for when running autotests). This is not needed anymore with red/green. It could provide a performance advantage but that's yet to be determined. For now, as red/green is not fully implemented yet, the cross-crate incremental tests are disabled. Note, this PR is based on top of soon-to-be-merged #44696 and only the last 4 commits are new: ``` - incr.comp.: Initial implemenation of append-only dep-graph. (c90147c) - incr.comp.: Do some various cleanup. (8ce20c5) - incr.comp.: Serialize and deserialize new DepGraph. (0e13c1a) - incr.comp.: Remove support for loading metadata fingerprints. (270a134) EDIT 2: - incr.comp.: Make #[rustc_dirty/clean] test for fingerprint equality ... (d8f7ff9) ``` (EDIT: GH displays the commits in the wrong order for some reason) Also note that this PR is expected to certainly result in performance regressions in the incr. comp. test cases, since we are adding quite a few things (a whole additional dep-graph, for example) without removing anything. End-to-end performance measurements will only make sense again after red/green is enabled and all the legacy tracking has been turned off. EDIT 2: Pushed another commit that makes the `#[rustc_dirty]`/`#[rustc_clean]` based autotests compared query result fingerprints instead of testing `DepNode` existence.
☀️ Test successful - status-appveyor, status-travis |
This commits does a few things:
Note, this PR is based on top of soon-to-be-merged #44696 and only the last 4 commits are new:
(EDIT: GH displays the commits in the wrong order for some reason)
Also note that this PR is expected to certainly result in performance regressions in the incr. comp. test cases, since we are adding quite a few things (a whole additional dep-graph, for example) without removing anything. End-to-end performance measurements will only make sense again after red/green is enabled and all the legacy tracking has been turned off.
EDIT 2: Pushed another commit that makes the
#[rustc_dirty]
/#[rustc_clean]
based autotests compared query result fingerprints instead of testingDepNode
existence.