Commit graph

745 commits

Author SHA1 Message Date
Mark Rousskov
2fd545485a Register queries with self profiler in rustc_interface 2019-11-12 13:13:14 -05:00
Mark Rousskov
f696b21c5f Move self-profile infrastructure to data structures
The single dependency on queries (QueryName) can be fairly easily
abstracted via a trait and this further decouples Session from librustc
(the primary goal).
2019-11-12 12:48:04 -05:00
Ralf Jung
90b8d34c9f bump smallvec to 1.0 2019-11-04 15:59:09 +01:00
Tyler Mandry
665d6479c4
Rollup merge of #65997 - spastorino:fix-init_locking-rustdoc, r=Mark-Simulacrum
Fix outdated rustdoc of Once::init_locking function

r? @Mark-Simulacrum

related to https://github.com/rust-lang/rust/pull/65979
2019-11-01 11:20:25 -07:00
Tyler Mandry
9175247e72
Rollup merge of #65112 - jack-t:type-parens-lint, r=varkor
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-11-01 11:20:07 -07:00
Santiago Pastorino
18391b62f3
Fix outdated rustdoc of Once::init_locking function 2019-10-31 10:06:14 -03:00
Santiago Pastorino
12273cb7f6
Make init_locking return a reference to the initialized data 2019-10-30 18:35:54 -03:00
jack-t
08ca2360c4 Add lint for unnecessary parens around types 2019-10-29 18:11:12 +00:00
Mazdak Farrokhzad
951b8c84be
Rollup merge of #65648 - nnethercote:rm-intersect_opt, r=nikomatsakis
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-23 22:19:17 +02:00
Nicholas Nethercote
ac6daed384 Remove many unnecessary trait derivations. 2019-10-21 20:59:18 +11:00
Nicholas Nethercote
ddc1c27975 Eliminate intersect_opt.
Its fourth argument is always `Some(pred)`, so the pattern matching is
unnecessary. This commit inlines and removes it.
2019-10-21 15:42:32 +11:00
Nicholas Nethercote
c3b3a86124 Remove unnecessary Hash bounds from various types. 2019-10-21 13:48:20 +11:00
John Kåre Alsaker
42c0236ed0 Use a sharded dep node to dep node index map 2019-10-17 04:58:10 +02:00
Santiago Pastorino
b9bc431bd2
Rename serial_join and serial_scope to join and scope 2019-10-14 18:05:07 -03:00
Santiago Pastorino
83560225ad
Move serial_scope and serial_join to parallel_compiler = false 2019-10-14 18:05:07 -03:00
Santiago Pastorino
068a8d163c
Minor comment tweaks 2019-10-14 18:05:07 -03:00
Josh Stone
33c4125fbe Rebase rustc-rayon on rayon-1.2
See also https://github.com/rust-lang/rustc-rayon/pull/3
2019-10-07 13:20:17 -07:00
Tyler Mandry
73aa2bd707
Rollup merge of #64942 - JohnTitor:fix-clippy, r=eddyb
Fix clippy warnings

* Use `match` instead of `if` chain
* Remove redundant `into_iter()`
* Use `copied()` instead of `map()`

etc.
2019-10-01 23:06:19 -07:00
Tyler Mandry
0e88e56a9a
Rollup merge of #64805 - nnethercote:ObligForest-still-more, r=nikomatsakis
Still more `ObligationForest` improvements.

Following on from #64627, more readability improvements, but negligible effects on speed.

r? @nikomatsakis
2019-10-01 23:06:14 -07:00
Yuki Okushi
f10d2e2d23 Fix clippy warnings 2019-10-01 23:15:47 +09:00
Nicholas Nethercote
a820672f6c Avoid the popping loop at the end of compress().
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-30 05:25:25 +10:00
Nicholas Nethercote
2883c258f1 Remove an out-of-date sentence in a comment. 2019-09-30 05:23:07 +10:00
Nicholas Nethercote
8a62bb1a1d Rename nodes_len and use it in a few more places. 2019-09-30 05:23:07 +10:00
Nicholas Nethercote
9e67f19eee Convert some match expressions to ifs.
These make the code more concise.
2019-09-30 05:23:07 +10:00
Nicholas Nethercote
6fb1f37888 Introduce some intermediate variables that aid readability. 2019-09-30 05:23:07 +10:00
Nicholas Nethercote
22943ee27c Remove unnecessary uses of ObligationForest::scratch.
They don't help performance at all, and just complicate things.
2019-09-30 05:23:07 +10:00
Nicholas Nethercote
ea726501e1 Use filter and map in to_errors. 2019-09-30 05:23:07 +10:00
Nicholas Nethercote
7130e6c073 Tweak the control flow in process_obligations(). 2019-09-30 05:23:07 +10:00
Nicholas Nethercote
85a56cbd88 Inline mark_as_waiting_from.
It has a single call site, and the code is easier to read this way.
2019-09-30 05:23:07 +10:00
Nicholas Nethercote
4a7fb8b13a Rename node_index as index.
For consistency with other variables in this file.
2019-09-30 05:23:07 +10:00
Nicholas Nethercote
3b506d9694 Remove NodeState::OnDfsStack.
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-30 05:23:07 +10:00
csmoe
64f61c7888 remove indexed_vec re-export from rustc_data_structures 2019-09-29 16:48:31 +00:00
csmoe
d20183dbbf remove bit_set re-export from rustc_data_structures 2019-09-29 16:11:30 +00:00
csmoe
17990637b3 move bit_set into rustc_index 2019-09-29 16:11:30 +00:00
csmoe
1cff2e6557 move index_vec into rustc_index 2019-09-29 16:11:30 +00:00
Mazdak Farrokhzad
d7d7c2fce2
Rollup merge of #64824 - Mark-Simulacrum:no-stable-hasher-result-everywhere, 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-29 04:36:02 +02:00
Mark Rousskov
14a5aefb01 Switch over all StableHash impls to new format 2019-09-28 11:47:36 -04:00
Mark Rousskov
f60e58e575 StableHasher does not need to be generic over the Result type 2019-09-28 11:47:15 -04:00
Shivani Bhardwaj
800bd3a11c data_structures: Add deterministic FxHashMap and FxHashSet wrappers
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-28 14:35:20 +05:30
bors
c7bc0bf82f Auto merge of #64627 - nnethercote:ObligForest-even-more, r=nikomatsakis
Even more `ObligationForest` improvements

Following on from #64545, more speed and readability improvements.

r? @nikomatsakis
2019-09-25 05:54:00 +00:00
Dylan MacKenzie
4fd9b9944f Add cycle detection for graphs 2019-09-23 15:26:41 -07:00
Nicholas Nethercote
aa10abb211 Rename a variable.
Because the meaning of this `index` variable is quite different to all
the other `index` variables in this file.
2019-09-20 12:53:22 +10:00
Nicholas Nethercote
27c7c23840 Rename waiting_cache.
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-20 11:31:50 +10:00
Nicholas Nethercote
75fd4f754e Rename a loop variable.
We normally use `index` for indices to `ObligationForest::nodes`, but
this is a `Nodes::dependents` index.
2019-09-20 11:26:07 +10:00
Nicholas Nethercote
8d73faf9ab Remove some unnecessary backtrace intermediate variables. 2019-09-20 11:25:16 +10:00
Nicholas Nethercote
3eae7f6291 Upgrade to ena-0.13.1 and use the new inlined_probe_value function.
This is a big speed win for `keccak` and `inflate`.
2019-09-20 11:24:30 +10:00
Nicholas Nethercote
aaff05bd1c Reorder the state handling in process_cycles().
This gives a slight speed-up.
2019-09-20 07:22:10 +10:00
Nicholas Nethercote
7f6e160875 Rename some index variables.
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-17 15:32:29 +10:00
Nicholas Nethercote
cf3a562c98 Remove NodeIndex.
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-17 15:32:29 +10:00
Nicholas Nethercote
476e75ded7 Move a Node's parent into the descendents list.
`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-17 15:32:29 +10:00