-
Notifications
You must be signed in to change notification settings - Fork 12.8k
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.: Deduplicate some DepNodes and introduce anonymous DepNodes #43028
Conversation
2de78df
to
4ad0609
Compare
@@ -661,3 +661,60 @@ for ty::TypeckTables<'tcx> { | |||
}) | |||
} | |||
} | |||
|
|||
impl_stable_hash_for!(enum ty::fast_reject::SimplifiedType { |
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 SimplifiedType
? Seems ok though
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.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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