From: Alex Crichton Date: Tue, 29 Aug 2017 00:30:27 +0000 (-0700) Subject: rustc: Move crate_disambiguator to queries X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=ebc1fd321d46089249510f78880356af3e7b6961;p=rust.git rustc: Move crate_disambiguator to queries --- diff --git a/src/librustc/dep_graph/dep_node.rs b/src/librustc/dep_graph/dep_node.rs index 76f31eb5596..e397ecbed79 100644 --- a/src/librustc/dep_graph/dep_node.rs +++ b/src/librustc/dep_graph/dep_node.rs @@ -539,6 +539,7 @@ pub fn to_dep_node(self, tcx: TyCtxt, kind: DepKind) -> DepNode { [] NativeLibraries(CrateNum), [] PluginRegistrarFn(CrateNum), [] DeriveRegistrarFn(CrateNum), + [] CrateDisambiguator(CrateNum), ); trait DepNodeParams<'a, 'gcx: 'tcx + 'a, 'tcx: 'a> : fmt::Debug { diff --git a/src/librustc/middle/cstore.rs b/src/librustc/middle/cstore.rs index 9294530f515..1f05edb86dc 100644 --- a/src/librustc/middle/cstore.rs +++ b/src/librustc/middle/cstore.rs @@ -254,7 +254,6 @@ pub trait CrateStore { /// The name of the crate as it is stored in the crate's metadata. fn original_crate_name(&self, cnum: CrateNum) -> Symbol; fn crate_hash(&self, cnum: CrateNum) -> Svh; - fn crate_disambiguator(&self, cnum: CrateNum) -> Symbol; // resolve fn def_key(&self, def: DefId) -> DefKey; @@ -355,8 +354,6 @@ fn original_crate_name(&self, cnum: CrateNum) -> Symbol { bug!("original_crate_name") } fn crate_hash(&self, cnum: CrateNum) -> Svh { bug!("crate_hash") } - fn crate_disambiguator(&self, cnum: CrateNum) - -> Symbol { bug!("crate_disambiguator") } // resolve fn def_key(&self, def: DefId) -> DefKey { bug!("def_key") } diff --git a/src/librustc/ty/context.rs b/src/librustc/ty/context.rs index f475baf1994..d5274f47e4a 100644 --- a/src/librustc/ty/context.rs +++ b/src/librustc/ty/context.rs @@ -925,14 +925,6 @@ pub fn original_crate_name(self, cnum: CrateNum) -> Symbol { } } - pub fn crate_disambiguator(self, cnum: CrateNum) -> Symbol { - if cnum == LOCAL_CRATE { - self.sess.local_crate_disambiguator() - } else { - self.sess.cstore.crate_disambiguator(cnum) - } - } - pub fn alloc_generics(self, generics: ty::Generics) -> &'gcx ty::Generics { self.global_arenas.generics.alloc(generics) } diff --git a/src/librustc/ty/maps.rs b/src/librustc/ty/maps.rs index 31a1f9aee4e..edfe806e613 100644 --- a/src/librustc/ty/maps.rs +++ b/src/librustc/ty/maps.rs @@ -611,6 +611,12 @@ fn describe(_tcx: TyCtxt, _: CrateNum) -> String { } } +impl<'tcx> QueryDescription for queries::crate_disambiguator<'tcx> { + fn describe(_tcx: TyCtxt, _: CrateNum) -> String { + format!("looking up the disambiguator a crate") + } +} + // If enabled, send a message to the profile-queries thread macro_rules! profq_msg { ($tcx:expr, $msg:expr) => { @@ -1191,6 +1197,7 @@ fn default() -> Self { [] fn native_libraries: NativeLibraries(CrateNum) -> Rc>, [] fn plugin_registrar_fn: PluginRegistrarFn(CrateNum) -> Option, [] fn derive_registrar_fn: DeriveRegistrarFn(CrateNum) -> Option, + [] fn crate_disambiguator: CrateDisambiguator(CrateNum) -> Symbol, } fn type_param_predicates<'tcx>((item_id, param_id): (DefId, DefId)) -> DepConstructor<'tcx> { diff --git a/src/librustc/ty/mod.rs b/src/librustc/ty/mod.rs index 1851e1b8d34..cce07ffefe5 100644 --- a/src/librustc/ty/mod.rs +++ b/src/librustc/ty/mod.rs @@ -2510,6 +2510,12 @@ fn param_env<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, traits::normalize_param_env_or_error(tcx, def_id, unnormalized_env, cause) } +fn crate_disambiguator<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, + crate_num: CrateNum) -> Symbol { + assert_eq!(crate_num, LOCAL_CRATE); + tcx.sess.local_crate_disambiguator() +} + pub fn provide(providers: &mut ty::maps::Providers) { util::provide(providers); context::provide(providers); @@ -2521,6 +2527,7 @@ pub fn provide(providers: &mut ty::maps::Providers) { def_span, param_env, trait_of_item, + crate_disambiguator, trait_impls_of: trait_def::trait_impls_of_provider, ..*providers }; diff --git a/src/librustc_metadata/cstore_impl.rs b/src/librustc_metadata/cstore_impl.rs index 842335212ee..3917318f67c 100644 --- a/src/librustc_metadata/cstore_impl.rs +++ b/src/librustc_metadata/cstore_impl.rs @@ -175,6 +175,9 @@ fn into_def_id(self) -> DefId { self.as_def_id() } DefId { krate: def_id.krate, index } }) } + crate_disambiguator => { cdata.disambiguator() } + crate_hash => { cdata.hash() } + original_crate_name => { cdata.name() } } pub fn provide_local<'tcx>(providers: &mut Providers<'tcx>) { @@ -288,11 +291,6 @@ fn crate_hash(&self, cnum: CrateNum) -> Svh self.get_crate_hash(cnum) } - fn crate_disambiguator(&self, cnum: CrateNum) -> Symbol - { - self.get_crate_data(cnum).disambiguator() - } - /// Returns the `DefKey` for a given `DefId`. This indicates the /// parent `DefId` as well as some idea of what kind of data the /// `DefId` refers to.