about summary refs log tree commit diff
path: root/src/rustllvm/CoverageMappingWrapper.cpp
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2020-08-06 03:23:57 +0000
committerbors <bors@rust-lang.org>2020-08-06 03:23:57 +0000
commit3cfc7fe78eccc754b16981704a098d7bd520e2fd (patch)
tree2ab7b56870ca63b234328003c8d0726e66fae241 /src/rustllvm/CoverageMappingWrapper.cpp
parent22ee68dc586440f96b76b32fbd6087507c6afdb9 (diff)
parent6bf3a4bcd836e4b29108bfb6d8d7b00d405fd03e (diff)
downloadrust-3cfc7fe78eccc754b16981704a098d7bd520e2fd.tar.gz
rust-3cfc7fe78eccc754b16981704a098d7bd520e2fd.zip
Auto merge of #75008 - eddyb:rmeta-indexed-trait-impls, r=nikomatsakis
rustc_metadata: track the simplified Self type for every trait impl.

For the `traits_impls_of` query, we index the impls by `fast_reject::SimplifiedType` (a "shallow type"), which allows some simple cases like `impl Trait<..> for Foo<..>` to be efficiently iterated over, by e.g. `for_each_relevant_impl`.

This PR encodes the `fast_reject::SimplifiedType` cross-crate to avoid needing to deserialize the `Self` type of every `impl` in order to simplify it - the simplification itself should be cheap, but the deserialization is less so.

We could go further from here and make loading the list of impls lazy, for a given simplified `Self` type, but that would have more complicated implications for performance, and this PR doesn't do anything in that regard.

r? @nikomatsakis cc @Mark-Simulacrum
Diffstat (limited to 'src/rustllvm/CoverageMappingWrapper.cpp')
0 files changed, 0 insertions, 0 deletions