summary refs log tree commit diff
path: root/src/librustc_data_structures
AgeCommit message (Collapse)AuthorLines
2019-11-01Rollup merge of #65997 - spastorino:fix-init_locking-rustdoc, r=Mark-SimulacrumTyler Mandry-4/+4
Fix outdated rustdoc of Once::init_locking function r? @Mark-Simulacrum related to https://github.com/rust-lang/rust/pull/65979
2019-11-01Rollup merge of #65112 - jack-t:type-parens-lint, r=varkorTyler Mandry-4/+4
Add lint and tests for unnecessary parens around types This is my first contribution to the Rust project, so I apologize if I'm not doing things the right way. The PR fixes #64169. It adds a lint and tests for unnecessary parentheses around types. I've run `tidy` and `rustfmt` — I'm not totally sure it worked right, though — and I've tried to follow the instructions linked in the readme. I tried to think through all the variants of `ast::TyKind` to find exceptions to this lint, and I could only find the one mentioned in the original issue, which concerns types with `dyn`. I'm not a Rust expert, thought, so I may well be missing something. There's also a problem with getting this to build. The new lint catches several things in the, e.g., `core`. Because `x.py` seems to build with an equivalent of `-Werror`, what would have been warnings cause the build to break. I got it to build and the tests to pass with `--warnings warn` on my `x.py build` and `x.py test` commands.
2019-10-31Fix outdated rustdoc of Once::init_locking functionSantiago Pastorino-4/+4
2019-10-30Make init_locking return a reference to the initialized dataSantiago Pastorino-6/+8
2019-10-29Add lint for unnecessary parens around typesjack-t-4/+4
2019-10-23Rollup merge of #65648 - nnethercote:rm-intersect_opt, r=nikomatsakisMazdak Farrokhzad-21/+6
Eliminate `intersect_opt`. Its fourth argument is always `Some(pred)`, so the pattern matching is unnecessary. This commit inlines and removes it. r? @nikomatsakis
2019-10-21Remove many unnecessary trait derivations.Nicholas Nethercote-11/+11
2019-10-21Eliminate `intersect_opt`.Nicholas Nethercote-21/+6
Its fourth argument is always `Some(pred)`, so the pattern matching is unnecessary. This commit inlines and removes it.
2019-10-21Remove unnecessary `Hash` bounds from various types.Nicholas Nethercote-5/+5
2019-10-17Use a sharded dep node to dep node index mapJohn Kåre Alsaker-7/+23
2019-10-14Rename serial_join and serial_scope to join and scopeSantiago Pastorino-25/+22
2019-10-14Move serial_scope and serial_join to parallel_compiler = falseSantiago Pastorino-23/+23
2019-10-14Minor comment tweaksSantiago Pastorino-2/+2
2019-10-07Rebase rustc-rayon on rayon-1.2Josh Stone-2/+2
See also https://github.com/rust-lang/rustc-rayon/pull/3
2019-10-01Rollup merge of #64942 - JohnTitor:fix-clippy, r=eddybTyler Mandry-2/+2
Fix clippy warnings * Use `match` instead of `if` chain * Remove redundant `into_iter()` * Use `copied()` instead of `map()` etc.
2019-10-01Rollup merge of #64805 - nnethercote:ObligForest-still-more, r=nikomatsakisTyler Mandry-126/+115
Still more `ObligationForest` improvements. Following on from #64627, more readability improvements, but negligible effects on speed. r? @nikomatsakis
2019-10-01Fix clippy warningsYuki Okushi-2/+2
2019-09-30Avoid the popping loop at the end of `compress()`.Nicholas Nethercote-34/+40
By collecting the done obligations (when necessary) in the main loop. This makes the code cleaner. The commit also changes the order in which successful obligations are returned -- they are now returned in the registered order, rather than reversed. Because this order doesn't actually matter, being only used by tests, the commit uses `sort()` to make the test agnostic w.r.t. the order.
2019-09-30Remove an out-of-date sentence in a comment.Nicholas Nethercote-3/+2
2019-09-30Rename `nodes_len` and use it in a few more places.Nicholas Nethercote-9/+9
2019-09-30Convert some `match` expressions to `if`s.Nicholas Nethercote-36/+21
These make the code more concise.
2019-09-30Introduce some intermediate variables that aid readability.Nicholas Nethercote-3/+5
2019-09-30Remove unnecessary uses of `ObligationForest::scratch`.Nicholas Nethercote-12/+8
They don't help performance at all, and just complicate things.
2019-09-30Use `filter` and `map` in `to_errors`.Nicholas Nethercote-11/+11
2019-09-30Tweak the control flow in `process_obligations()`.Nicholas Nethercote-4/+4
2019-09-30Inline `mark_as_waiting_from`.Nicholas Nethercote-12/+13
It has a single call site, and the code is easier to read this way.
2019-09-30Rename `node_index` as `index`.Nicholas Nethercote-2/+2
For consistency with other variables in this file.
2019-09-30Remove `NodeState::OnDfsStack`.Nicholas Nethercote-19/+19
It's not necessary; cycles (which are rare) can be detected by looking at the node stack. This change speeds things up slightly, as well as simplifying the code a little.
2019-09-29remove indexed_vec re-export from rustc_data_structurescsmoe-13/+12
2019-09-29remove bit_set re-export from rustc_data_structurescsmoe-6/+6
2019-09-29move bit_set into rustc_indexcsmoe-1355/+1
2019-09-29move index_vec into rustc_indexcsmoe-831/+2
2019-09-29Rollup merge of #64824 - Mark-Simulacrum:no-stable-hasher-result-everywhere, ↵Mazdak Farrokhzad-133/+53
r=michaelwoerister No StableHasherResult everywhere This removes the generic parameter on `StableHasher`, instead moving it to the call to `finish`. This has the side-effect of making all `HashStable` impls nicer, since we no longer need the verbose `<W: StableHasherResult>` that previously existed -- often forcing line wrapping. This is done for two reasons: * we should avoid false "generic" dependency on the result of StableHasher * we don't need to codegen two/three copies of all the HashStable impls when they're transitively used to produce a fingerprint, u64, or u128. I haven't measured, but this might actually make our artifacts somewhat smaller too. * Easier to understand/read/write code -- the result of the stable hasher is irrelevant when writing a hash impl.
2019-09-28Switch over all StableHash impls to new formatMark Rousskov-122/+46
2019-09-28StableHasher does not need to be generic over the Result typeMark Rousskov-11/+7
2019-09-28data_structures: Add deterministic FxHashMap and FxHashSet wrappersShivani Bhardwaj-0/+178
StableMap A wrapper for FxHashMap that allows to insert, remove, get and get_mut but no iteration support. StableSet A wrapper for FxHashSet that allows to insert, remove, get and create a sorted vector from a hashset but no iteration support.
2019-09-25Auto merge of #64627 - nnethercote:ObligForest-even-more, r=nikomatsakisbors-34/+35
Even more `ObligationForest` improvements Following on from #64545, more speed and readability improvements. r? @nikomatsakis
2019-09-23Add cycle detection for graphsDylan MacKenzie-1/+224
2019-09-20Rename a variable.Nicholas Nethercote-2/+2
Because the meaning of this `index` variable is quite different to all the other `index` variables in this file.
2019-09-20Rename `waiting_cache`.Nicholas Nethercote-14/+14
The name `waiting_cache` sounds like it is related to the states `NodeState::Waiting`, but it's not; the cache holds nodes of various states. This commit changes it to `active_state`.
2019-09-20Rename a loop variable.Nicholas Nethercote-7/+7
We normally use `index` for indices to `ObligationForest::nodes`, but this is a `Nodes::dependents` index.
2019-09-20Remove some unnecessary `backtrace` intermediate variables.Nicholas Nethercote-4/+2
2019-09-20Upgrade to ena-0.13.1 and use the new `inlined_probe_value` function.Nicholas Nethercote-1/+1
This is a big speed win for `keccak` and `inflate`.
2019-09-20Reorder the state handling in `process_cycles()`.Nicholas Nethercote-6/+9
This gives a slight speed-up.
2019-09-17Rename some index variables.Nicholas Nethercote-44/+44
Now that all indices have type `usize`, it makes sense to be more consistent about their naming. This commit removes all uses of `i` in favour of `index`.
2019-09-17Remove `NodeIndex`.Nicholas Nethercote-36/+27
The size of the indices doesn't matter much here, and having a `newtype_index!` index type without also using `IndexVec` requires lots of conversions. So this commit removes `NodeIndex` in favour of uniform use of `usize` as the index type. As well as making the code slightly more concise, it also slightly speeds things up.
2019-09-17Move a `Node`'s parent into the descendents list.Nicholas Nethercote-43/+36
`Node` has an optional parent and a list of other descendents. Most of the time the parent is treated the same as the other descendents -- error-handling is the exception -- and chaining them together for iteration has a non-trivial cost. This commit changes the representation. There is now a single list of descendants, and a boolean flag that indicates if there is a parent (in which case it is first descendent). This representation encodes the same information, in a way that is less idiomatic but cheaper to iterate over for the common case where the parent doesn't need special treatment. As a result, some benchmark workloads are up to 2% faster.
2019-09-17Rollup merge of #64500 - nnethercote:ObligForest-fixups, r=nikomatsakisMazdak Farrokhzad-167/+148
Various `ObligationForest` improvements These commits make the code both nicer and faster. r? @nikomatsakis
2019-09-16Auto merge of #64381 - mati865:rand, r=alexcrichtonbors-1/+1
Upgrade parking_lot and tempfile rustc dependencies This should be last piece to unbreak `rustc` in https://github.com/rust-lang/rust/issues/63848
2019-09-16Move `impl Node` just after `struct Node`.Nicholas Nethercote-16/+16