incr.comp.: Deduplicate some DepNodes and introduce anonymous DepNodes#43028
incr.comp.: Deduplicate some DepNodes and introduce anonymous DepNodes#43028bors merged 10 commits intorust-lang:masterfrom
Conversation
2de78df to
4ad0609
Compare
| } | ||
| } | ||
|
|
||
| impl_stable_hash_for!(enum ty::fast_reject::SimplifiedType { |
There was a problem hiding this comment.
Why SimplifiedType? Seems ok though
There was a problem hiding this comment.
Because it's used in the query key of relevant_trait_impls.
|
@bors r+ |
|
📌 Commit 4ad0609 has been approved by |
|
🔒 Merge conflict |
4ad0609 to
6d049fb
Compare
|
I pushed 3 more commits to this branch. They introduce anonymous |
| fn new(v: usize) -> IdIndex { | ||
| impl DepNodeIndex { | ||
|
|
||
| pub const INVALID: DepNodeIndex = DepNodeIndex { index: ::std::u32::MAX }; |
There was a problem hiding this comment.
Nit: this is fine for now, but it'd be nicer to use Nonzero so that we can (efficiently) use Option<DepNodeIndex>, I suspect.
|
So travis is failing because the log is too big. The log seems to include some DEBUG output, which is weird? |
|
That said, the test that is failing probably enables the log, so i think the real problem is the test is failing for some reason: |
|
@nikomatsakis The logs are part of the test's stderr. // rustc-env:RUST_LOG=debug
fn main() {} |
|
@kennytm right, this is why I said I suspect the real problem is that the test fails in the first place. |
|
Tried locally but not reproducible. Spurious I guess. Compiler-test should probably filter the output so only the top and bottom 16 KB of text are printed out. |
Huh. Can we test that hypothesis? I guess we can r+... maybe if we cycle travis? |
|
@nikomatsakis r+ is one way. Owners of this repo could also go to Travis and restart the job, without accepting the PR. Closing the PR and reopening it would also trigger a build. |
|
@kennytm I am able to reproduce locally |
|
@bors r+ |
|
📌 Commit 4f1f671 has been approved by |
|
Thanks for fixing! |
incr.comp.: Deduplicate some DepNodes and introduce anonymous DepNodes This is a parallel PR to the pending #42769. It implements most of what is possible in terms of DepNode re-opening without having anonymous DepNodes yet (#42298). r? @nikomatsakis
|
☀️ Test successful - status-appveyor, status-travis |
|
This produced a 20 second reduction in the regex expand benchmark: https://perf.rust-lang.org/graphs.html?start=2017-07-07T00%3A00%3A00%2B00%3A00&end=2017-07-12T00%3A00%3A00%2B00%3A00&crates=%7B%22list%22%3A%22List%22%2C%22content%22%3A%5B%22regex-0.1.80%40050-expand%22%5D%7D&phases=%7B%22list%22%3A%22All%22%2C%22content%22%3Anull%7D&group_by=crate&type=time, as well as saving 57 MB of memory. |
|
@Mark-Simulacrum, nice! Thanks for making me aware of that. Overall I expected this patch to make things 10% slower, but I seem to have tested only the worst case. Or difference gets more pronounced when turning off debug assertions (which I mostly do for performance testing). |
|
It looks like this may have regressed another benchmark though :( Was that expected though? |
|
Yes, that was expected. I'm surprised it doesn't show up in other benchmarks more. This should get better again when the current (humongous) refactoring is done. |

This is a parallel PR to the pending #42769. It implements most of what is possible in terms of DepNode re-opening without having anonymous DepNodes yet (#42298).
r? @nikomatsakis