Uh oh!
There was an error while loading. Please reload this page.
Remove InternedString - #65657
Conversation
This avoids the needs for various conversions, and makes the code slightly faster, because `Symbol` comparisons and hashing is faster.
It's a full conversion, except in `DefKey::compute_stable_hash()` where a `Symbol` now is converted to an `InternedString` before being hashed. This was necessary to avoid test failures.
This requires changing the `PartialOrd`/`Ord` implementations to look at the chars rather than the symbol index.
This is a straightforward replacement except for two places where we have to convert to `LocalInternedString` to get a stable sort.
By using `LocalInternedString` instead for the few remaining uses.
Uh oh!
There was an error while loading. Please reload this page.
eddyb
commented
Oct 21, 2019
@bors try (for perf) |
bors
commented
Oct 21, 2019
Remove `InternedString` This PR removes `InternedString` by converting all occurrences to `Symbol`. There are a handful of places that need to use the symbol chars instead of the symbol index, e.g. for stable sorting; local conversions `LocalInternedString` is used in those places. r? @eddyb
eddyb
commented
Oct 21, 2019
Oh, btw, I think |
nnethercote
commented
Oct 21, 2019
I agree! I was planning to rename in a follow-up. I had thought of |
nnethercote
commented
Oct 21, 2019
BTW, you can now do |
bors
commented
Oct 21, 2019
☀️ Try build successful - checks-azure |
eddyb
commented
Oct 21, 2019
@rust-timer queue |
rust-timer
commented
Oct 21, 2019
Awaiting bors try build completion |
Mark-Simulacrum
commented
Oct 21, 2019
Queue needs to be run before the try build completes; @rust-timer build c7f7350 |
rust-timer
commented
Oct 21, 2019
Queued c7f7350 with parent 1ba7b4e, future comparison URL. |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
rust-timer
commented
Oct 21, 2019
Finished benchmarking try commit c7f7350, comparison URL. |
nnethercote
commented
Oct 22, 2019
Instruction counts look good, lots of small reductions of up to 1%. That's not surprising; hashing and ordering the symbol index is clearly cheaper than the symbol chars (which also involve a TLS lookup). |
michaelwoerister
commented
Oct 22, 2019
Just to be sure: |
nnethercote
commented
Oct 22, 2019
For |
michaelwoerister
commented
Oct 22, 2019
Great! Thanks for confirming, @nnethercote. |
nnethercote
commented
Oct 22, 2019
bors
commented
Oct 22, 2019
📌 Commit 08e2f05 has been approved by |
bors
commented
Oct 22, 2019
🌲 The tree is currently closed for pull requests below priority 1000, this pull request will be tested once the tree is reopened |
…rly, r=eddyb Remove `InternedString` This PR removes `InternedString` by converting all occurrences to `Symbol`. There are a handful of places that need to use the symbol chars instead of the symbol index, e.g. for stable sorting; local conversions `LocalInternedString` is used in those places. r? @eddyb
…rly, r=eddyb Remove `InternedString` This PR removes `InternedString` by converting all occurrences to `Symbol`. There are a handful of places that need to use the symbol chars instead of the symbol index, e.g. for stable sorting; local conversions `LocalInternedString` is used in those places. r? @eddyb
Rollup of 12 pull requests Successful merges: - #64178 (More Clippy fixes for alloc, core and std) - #65144 (Add Cow::is_borrowed and Cow::is_owned) - #65193 (Lockless LintStore) - #65479 (Add the `matches!( $expr, $pat ) -> bool` macro) - #65518 (Avoid ICE when checking `Destination` of `break` inside a closure) - #65583 (rustc_metadata: use a table for super_predicates, fn_sig, impl_trait_ref.) - #65641 (Derive `Rustc{En,De}codable` for `TokenStream`.) - #65648 (Eliminate `intersect_opt`.) - #65657 (Remove `InternedString`) - #65691 (Update E0659 error code long explanation to 2018 edition) - #65696 (Fix an issue with const inference variables sticking around under Chalk + NLL) - #65704 (relax ExactSizeIterator bound on write_bytes) Failed merges: r? @ghost
This PR removes
InternedStringby converting all occurrences toSymbol. There are a handful of places that need to use the symbol chars instead of the symbol index, e.g. for stable sorting; local conversionsLocalInternedStringis used in those places.r? @eddyb