mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-29 02:03:53 +00:00
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`
This commit is contained in:
commit
b0455e9ab4
@ -48,7 +48,7 @@ cfg_if! {
|
||||
/// the native atomic types.
|
||||
/// You should use this type through the `AtomicU64`, `AtomicUsize`, etc, type aliases
|
||||
/// as it's not intended to be used separately.
|
||||
#[derive(Debug)]
|
||||
#[derive(Debug, Default)]
|
||||
pub struct Atomic<T: Copy>(Cell<T>);
|
||||
|
||||
impl<T: Copy> Atomic<T> {
|
||||
|
@ -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>,
|
||||
|
Loading…
Reference in New Issue
Block a user