diff options
| author | Dylan DPC <99973273+Dylan-DPC@users.noreply.github.com> | 2022-09-10 18:56:10 +0530 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-09-10 18:56:10 +0530 |
| commit | b0455e9ab470ef49ee3e23b4bc8a15c55aad1742 (patch) | |
| tree | 636c8176cca8d9714824ce26c882bf89e2aa8cbb /compiler/rustc_query_impl/src | |
| parent | 6afbe3eca92da175a197cdd3d75cf9c623bf53eb (diff) | |
| parent | d2c53caee218296482c11a56354688a9a7e9636f (diff) | |
| download | rust-b0455e9ab470ef49ee3e23b4bc8a15c55aad1742.tar.gz rust-b0455e9ab470ef49ee3e23b4bc8a15c55aad1742.zip | |
Rollup merge of #101635 - jyn514:queries-new-derived, r=cjgillot
Move `Queries::new` out of the macro Split out from https://github.com/rust-lang/rust/pull/101178 to make sure it's not contributing to the perf impact. r? `@cjgillot`
Diffstat (limited to 'compiler/rustc_query_impl/src')
| -rw-r--r-- | compiler/rustc_query_impl/src/plumbing.rs | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/compiler/rustc_query_impl/src/plumbing.rs b/compiler/rustc_query_impl/src/plumbing.rs index 1e375deb20d..96679281f07 100644 --- a/compiler/rustc_query_impl/src/plumbing.rs +++ b/compiler/rustc_query_impl/src/plumbing.rs @@ -5,7 +5,7 @@ use crate::keys::Key; use crate::{on_disk_cache, Queries}; use rustc_data_structures::stable_hasher::{HashStable, StableHasher}; -use rustc_data_structures::sync::Lock; +use rustc_data_structures::sync::{AtomicU64, Lock}; use rustc_errors::{Diagnostic, Handler}; use rustc_middle::dep_graph::{ self, DepKind, DepKindStruct, DepNode, DepNodeIndex, SerializedDepNodeIndex, @@ -499,9 +499,28 @@ macro_rules! define_queries { } } +use crate::{ExternProviders, OnDiskCache, Providers}; + +impl<'tcx> Queries<'tcx> { + pub fn new( + local_providers: Providers, + extern_providers: ExternProviders, + on_disk_cache: Option<OnDiskCache<'tcx>>, + ) -> Self { + Queries { + local_providers: Box::new(local_providers), + extern_providers: Box::new(extern_providers), + on_disk_cache, + jobs: AtomicU64::new(1), + ..Queries::default() + } + } +} + macro_rules! define_queries_struct { ( input: ($(([$($modifiers:tt)*] [$($attr:tt)*] [$name:ident]))*)) => { + #[derive(Default)] pub struct Queries<'tcx> { local_providers: Box<Providers>, extern_providers: Box<ExternProviders>, @@ -514,20 +533,6 @@ macro_rules! define_queries_struct { } impl<'tcx> Queries<'tcx> { - pub fn new( - local_providers: Providers, - extern_providers: ExternProviders, - on_disk_cache: Option<OnDiskCache<'tcx>>, - ) -> Self { - Queries { - local_providers: Box::new(local_providers), - extern_providers: Box::new(extern_providers), - on_disk_cache, - jobs: AtomicU64::new(1), - $($name: Default::default()),* - } - } - pub(crate) fn try_collect_active_jobs( &'tcx self, tcx: TyCtxt<'tcx>, |
