-
Notifications
You must be signed in to change notification settings - Fork 12.7k
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
Store a Symbol
instead of an Ident
in VariantDef
/FieldDef
#92533
Conversation
Some changes occured to the CTFE / Miri engine cc @rust-lang/miri |
(rust-highfive has picked a reviewer for you, use r? to override) |
@bors try @rust-timer queue |
Awaiting bors try build completion. @rustbot label: +S-waiting-on-perf |
⌛ Trying commit b7e5ddf59cf8e5c979da2087676b54758f3aadbc with merge 7ba15b7f514570c7f7491ce79be1890d314aa5b1... |
This comment has been minimized.
This comment has been minimized.
b7e5ddf
to
ef01dd9
Compare
This comment has been minimized.
This comment has been minimized.
ef01dd9
to
a57cc29
Compare
This comment has been minimized.
This comment has been minimized.
a57cc29
to
c9f2899
Compare
This comment has been minimized.
This comment has been minimized.
@bors try |
⌛ Trying commit c9f2899c677383aa1c5c722a4b24b71ea950801a with merge c1f5740893c9cdd25535dac455ea84154d41ef11... |
☀️ Try build successful - checks-actions |
Queued c1f5740893c9cdd25535dac455ea84154d41ef11 with parent ddabe07, future comparison URL. |
Finished benchmarking commit (c1f5740893c9cdd25535dac455ea84154d41ef11): comparison url. Summary: This change led to large relevant improvements 🎉 in compiler performance.
If you disagree with this performance assessment, please file an issue in rust-lang/rustc-perf. Benchmarking this pull request likely means that it is perf-sensitive, so we're automatically marking it as not fit for rolling up. While you can manually mark this PR as fit for rollup, we strongly recommend not doing so since this PR led to changes in compiler perf. @bors rollup=never |
The perf improvements appear to be coming entirely from performing fewer |
This is the same idea as rust-lang#92533, but for `AssocItem` instead of `VariantDef`/`FieldDef`. With this change, we no longer have any uses of `#[stable_hasher(project(...))]`
Store a `Symbol` instead of an `Ident` in `AssocItem` This is the same idea as rust-lang#92533, but for `AssocItem` instead of `VariantDef`/`FieldDef`. With this change, we no longer have any uses of `#[stable_hasher(project(...))]`
This is the same idea as rust-lang#92533, but for `AssocItem` instead of `VariantDef`/`FieldDef`. With this change, we no longer have any uses of `#[stable_hasher(project(...))]`
Store a `Symbol` instead of an `Ident` in `AssocItem` This is the same idea as rust-lang#92533, but for `AssocItem` instead of `VariantDef`/`FieldDef`. With this change, we no longer have any uses of `#[stable_hasher(project(...))]`
@Aaron1011 Due to the large number of reports of people getting an ICE that seems to be fixed by this, would it make sense to nominate this for a beta backport to 1.59? |
While I don't think backporting this will cause any issues, the diff is somewhat large, and might require adjusting if beta has additional uses of |
|
The field is also renamed from
ident
toname
. In most cases,we don't actually need the
Span
. A newident
method is addedto
VariantDef
andFieldDef
, which constructs the fullIdent
using
tcx.def_ident_span()
. This method is used in the caseswhere we actually need an
Ident
.This makes incremental compilation properly track changes
to the
Span
, without all of the invalidations caused by storinga
Span
directly via anIdent
.