diff options
| author | bors <bors@rust-lang.org> | 2022-02-27 14:04:07 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2022-02-27 14:04:07 +0000 |
| commit | 3b1fe7e7c95e14dd8a420edf2f8a160c70211e04 (patch) | |
| tree | 1104075d21653e369db1b908d13c1c0dc8343e2f /compiler/rustc_query_impl/src | |
| parent | bab4c13f64b4197abc1a361796be9940ed5b3904 (diff) | |
| parent | 594ea74bf0f735c7cd81a54409ab4d9005e07110 (diff) | |
| download | rust-3b1fe7e7c95e14dd8a420edf2f8a160c70211e04.tar.gz rust-3b1fe7e7c95e14dd8a420edf2f8a160c70211e04.zip | |
Auto merge of #94084 - Mark-Simulacrum:drop-sharded, r=cjgillot
Avoid query cache sharding code in single-threaded mode In non-parallel compilers, this is just adding needless overhead at compilation time (since there is only one shard statically anyway). This amounts to roughly ~10 seconds reduction in bootstrap time, with overall neutral (some wins, some losses) performance results. Parallel compiler performance should be largely unaffected by this PR; sharding is kept there.
Diffstat (limited to 'compiler/rustc_query_impl/src')
| -rw-r--r-- | compiler/rustc_query_impl/src/on_disk_cache.rs | 4 | ||||
| -rw-r--r-- | compiler/rustc_query_impl/src/plumbing.rs | 5 | ||||
| -rw-r--r-- | compiler/rustc_query_impl/src/profiling_support.rs | 8 |
3 files changed, 8 insertions, 9 deletions
diff --git a/compiler/rustc_query_impl/src/on_disk_cache.rs b/compiler/rustc_query_impl/src/on_disk_cache.rs index 06e276ab42b..f2f895367ff 100644 --- a/compiler/rustc_query_impl/src/on_disk_cache.rs +++ b/compiler/rustc_query_impl/src/on_disk_cache.rs @@ -13,7 +13,7 @@ use rustc_middle::thir; use rustc_middle::ty::codec::{RefDecodable, TyDecoder, TyEncoder}; use rustc_middle::ty::{self, Ty, TyCtxt}; use rustc_query_system::dep_graph::DepContext; -use rustc_query_system::query::{QueryContext, QuerySideEffects}; +use rustc_query_system::query::{QueryCache, QueryContext, QuerySideEffects}; use rustc_serialize::{ opaque::{self, FileEncodeResult, FileEncoder, IntEncodedWithFixedSize}, Decodable, Decoder, Encodable, Encoder, @@ -1034,7 +1034,7 @@ where assert!(Q::query_state(tcx).all_inactive()); let cache = Q::query_cache(tcx); let mut res = Ok(()); - cache.iter_results(&mut |key, value, dep_node| { + cache.iter(&mut |key, value, dep_node| { if res.is_err() { return; } diff --git a/compiler/rustc_query_impl/src/plumbing.rs b/compiler/rustc_query_impl/src/plumbing.rs index 073ddf01afb..bc82b0053b9 100644 --- a/compiler/rustc_query_impl/src/plumbing.rs +++ b/compiler/rustc_query_impl/src/plumbing.rs @@ -336,7 +336,7 @@ macro_rules! define_queries { } #[inline(always)] - fn query_cache<'a>(tcx: QueryCtxt<$tcx>) -> &'a QueryCacheStore<Self::Cache> + fn query_cache<'a>(tcx: QueryCtxt<$tcx>) -> &'a Self::Cache where 'tcx:'a { &tcx.query_caches.$name @@ -537,12 +537,11 @@ macro_rules! define_queries_struct { tcx: TyCtxt<$tcx>, span: Span, key: query_keys::$name<$tcx>, - lookup: QueryLookup, mode: QueryMode, ) -> Option<query_stored::$name<$tcx>> { opt_remap_env_constness!([$($modifiers)*][key]); let qcx = QueryCtxt { tcx, queries: self }; - get_query::<queries::$name<$tcx>, _>(qcx, span, key, lookup, mode) + get_query::<queries::$name<$tcx>, _>(qcx, span, key, mode) })* } }; diff --git a/compiler/rustc_query_impl/src/profiling_support.rs b/compiler/rustc_query_impl/src/profiling_support.rs index da318fc7622..acccf43f062 100644 --- a/compiler/rustc_query_impl/src/profiling_support.rs +++ b/compiler/rustc_query_impl/src/profiling_support.rs @@ -4,7 +4,7 @@ use rustc_data_structures::profiling::SelfProfiler; use rustc_hir::def_id::{CrateNum, DefId, DefIndex, LocalDefId, CRATE_DEF_INDEX, LOCAL_CRATE}; use rustc_hir::definitions::DefPathData; use rustc_middle::ty::{TyCtxt, WithOptConstParam}; -use rustc_query_system::query::{QueryCache, QueryCacheStore}; +use rustc_query_system::query::QueryCache; use std::fmt::Debug; use std::io::Write; @@ -229,7 +229,7 @@ where fn alloc_self_profile_query_strings_for_query_cache<'tcx, C>( tcx: TyCtxt<'tcx>, query_name: &'static str, - query_cache: &QueryCacheStore<C>, + query_cache: &C, string_cache: &mut QueryKeyStringCache, ) where C: QueryCache, @@ -251,7 +251,7 @@ fn alloc_self_profile_query_strings_for_query_cache<'tcx, C>( // locked while doing so. Instead we copy out the // `(query_key, dep_node_index)` pairs and release the lock again. let mut query_keys_and_indices = Vec::new(); - query_cache.iter_results(&mut |k, _, i| query_keys_and_indices.push((k.clone(), i))); + query_cache.iter(&mut |k, _, i| query_keys_and_indices.push((k.clone(), i))); // Now actually allocate the strings. If allocating the strings // generates new entries in the query cache, we'll miss them but @@ -276,7 +276,7 @@ fn alloc_self_profile_query_strings_for_query_cache<'tcx, C>( let event_id = event_id_builder.from_label(query_name).to_string_id(); let mut query_invocation_ids = Vec::new(); - query_cache.iter_results(&mut |_, _, i| { + query_cache.iter(&mut |_, _, i| { query_invocation_ids.push(i.into()); }); |
