diff options
| author | Igor Matuszewski <Xanewok@gmail.com> | 2017-10-23 18:44:58 +0200 |
|---|---|---|
| committer | Igor Matuszewski <Xanewok@gmail.com> | 2017-10-23 18:44:58 +0200 |
| commit | d017466d103d2b155d3ef645c538c03e3008ac95 (patch) | |
| tree | 0593f55be90731db47f5584eadf1d357c993d13d /src/librustc | |
| parent | 4c053db233d69519b548e5b8ed7192d0783e582a (diff) | |
| download | rust-d017466d103d2b155d3ef645c538c03e3008ac95.tar.gz rust-d017466d103d2b155d3ef645c538c03e3008ac95.zip | |
Use 128 bit instead of Symbol for crate disambiguator
Diffstat (limited to 'src/librustc')
| -rw-r--r-- | src/librustc/hir/map/collector.rs | 3 | ||||
| -rw-r--r-- | src/librustc/hir/map/mod.rs | 2 | ||||
| -rw-r--r-- | src/librustc/middle/cstore.rs | 4 | ||||
| -rw-r--r-- | src/librustc/session/mod.rs | 17 | ||||
| -rw-r--r-- | src/librustc/ty/context.rs | 2 | ||||
| -rw-r--r-- | src/librustc/ty/maps/mod.rs | 3 | ||||
| -rw-r--r-- | src/librustc/ty/mod.rs | 4 |
7 files changed, 20 insertions, 15 deletions
diff --git a/src/librustc/hir/map/collector.rs b/src/librustc/hir/map/collector.rs index 80fadcda277..10900624d92 100644 --- a/src/librustc/hir/map/collector.rs +++ b/src/librustc/hir/map/collector.rs @@ -11,6 +11,7 @@ use super::*; use dep_graph::{DepGraph, DepKind, DepNodeIndex}; +use ich::Fingerprint; use hir::intravisit::{Visitor, NestedVisitorMap}; use std::iter::repeat; use syntax::ast::{NodeId, CRATE_NODE_ID}; @@ -118,7 +119,7 @@ impl<'a, 'hir> NodeCollector<'a, 'hir> { } pub(super) fn finalize_and_compute_crate_hash(self, - crate_disambiguator: &str) + crate_disambiguator: &Fingerprint) -> Vec<MapEntry<'hir>> { let mut node_hashes: Vec<_> = self .hir_body_nodes diff --git a/src/librustc/hir/map/mod.rs b/src/librustc/hir/map/mod.rs index 8ce2feab06c..6da612fbaa6 100644 --- a/src/librustc/hir/map/mod.rs +++ b/src/librustc/hir/map/mod.rs @@ -1014,7 +1014,7 @@ pub fn map_crate<'hir>(sess: &::session::Session, hcx); intravisit::walk_crate(&mut collector, &forest.krate); - let crate_disambiguator = sess.local_crate_disambiguator().as_str(); + let crate_disambiguator = sess.local_crate_disambiguator(); collector.finalize_and_compute_crate_hash(&crate_disambiguator) }; diff --git a/src/librustc/middle/cstore.rs b/src/librustc/middle/cstore.rs index a97bfa05369..39b2162bd32 100644 --- a/src/librustc/middle/cstore.rs +++ b/src/librustc/middle/cstore.rs @@ -267,7 +267,7 @@ pub trait CrateStore { fn export_macros_untracked(&self, cnum: CrateNum); fn dep_kind_untracked(&self, cnum: CrateNum) -> DepKind; fn crate_name_untracked(&self, cnum: CrateNum) -> Symbol; - fn crate_disambiguator_untracked(&self, cnum: CrateNum) -> Symbol; + fn crate_disambiguator_untracked(&self, cnum: CrateNum) -> ich::Fingerprint; fn crate_hash_untracked(&self, cnum: CrateNum) -> Svh; fn struct_field_names_untracked(&self, def: DefId) -> Vec<ast::Name>; fn item_children_untracked(&self, did: DefId, sess: &Session) -> Vec<def::Export>; @@ -338,7 +338,7 @@ impl CrateStore for DummyCrateStore { fn dep_kind_untracked(&self, cnum: CrateNum) -> DepKind { bug!("is_explicitly_linked") } fn export_macros_untracked(&self, cnum: CrateNum) { bug!("export_macros") } fn crate_name_untracked(&self, cnum: CrateNum) -> Symbol { bug!("crate_name") } - fn crate_disambiguator_untracked(&self, cnum: CrateNum) -> Symbol { + fn crate_disambiguator_untracked(&self, cnum: CrateNum) -> ich::Fingerprint { bug!("crate_disambiguator") } fn crate_hash_untracked(&self, cnum: CrateNum) -> Svh { bug!("crate_hash") } diff --git a/src/librustc/session/mod.rs b/src/librustc/session/mod.rs index 2634ab10007..23fea747f76 100644 --- a/src/librustc/session/mod.rs +++ b/src/librustc/session/mod.rs @@ -12,6 +12,7 @@ pub use self::code_stats::{CodeStats, DataTypeKind, FieldInfo}; pub use self::code_stats::{SizeKind, TypeSizeInfo, VariantInfo}; use hir::def_id::{CrateNum, DefIndex}; +use ich::Fingerprint; use lint; use middle::allocator::AllocatorKind; @@ -29,7 +30,6 @@ use syntax::json::JsonEmitter; use syntax::feature_gate; use syntax::parse; use syntax::parse::ParseSess; -use syntax::symbol::Symbol; use syntax::{ast, codemap}; use syntax::feature_gate::AttributeType; use syntax_pos::{Span, MultiSpan}; @@ -88,7 +88,7 @@ pub struct Session { /// forms a unique global identifier for the crate. It is used to allow /// multiple crates with the same name to coexist. See the /// trans::back::symbol_names module for more information. - pub crate_disambiguator: RefCell<Option<Symbol>>, + pub crate_disambiguator: RefCell<Option<Fingerprint>>, pub features: RefCell<feature_gate::Features>, /// The maximum recursion limit for potentially infinitely recursive @@ -165,7 +165,7 @@ enum DiagnosticBuilderMethod { } impl Session { - pub fn local_crate_disambiguator(&self) -> Symbol { + pub fn local_crate_disambiguator(&self) -> Fingerprint { match *self.crate_disambiguator.borrow() { Some(sym) => sym, None => bug!("accessing disambiguator before initialization"), @@ -471,14 +471,17 @@ impl Session { /// Returns the symbol name for the registrar function, /// given the crate Svh and the function DefIndex. - pub fn generate_plugin_registrar_symbol(&self, disambiguator: Symbol, index: DefIndex) + pub fn generate_plugin_registrar_symbol(&self, disambiguator: Fingerprint, + index: DefIndex) -> String { - format!("__rustc_plugin_registrar__{}_{}", disambiguator, index.as_usize()) + format!("__rustc_plugin_registrar__{}_{}", disambiguator.to_hex(), + index.as_usize()) } - pub fn generate_derive_registrar_symbol(&self, disambiguator: Symbol, index: DefIndex) + pub fn generate_derive_registrar_symbol(&self, disambiguator: Fingerprint, index: DefIndex) -> String { - format!("__rustc_derive_registrar__{}_{}", disambiguator, index.as_usize()) + format!("__rustc_derive_registrar__{}_{}", disambiguator.to_hex(), + index.as_usize()) } pub fn sysroot<'a>(&'a self) -> &'a Path { diff --git a/src/librustc/ty/context.rs b/src/librustc/ty/context.rs index 3d5e8ea583c..51e924bd08b 100644 --- a/src/librustc/ty/context.rs +++ b/src/librustc/ty/context.rs @@ -1251,7 +1251,7 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> { crate_name, // Don't print the whole crate disambiguator. That's just // annoying in debug output. - &(crate_disambiguator.as_str())[..4], + &(crate_disambiguator.to_hex())[..4], self.def_path(def_id).to_string_no_crate()) } diff --git a/src/librustc/ty/maps/mod.rs b/src/librustc/ty/maps/mod.rs index 839042bf229..3c2630bb33a 100644 --- a/src/librustc/ty/maps/mod.rs +++ b/src/librustc/ty/maps/mod.rs @@ -10,6 +10,7 @@ use dep_graph::{DepConstructor, DepNode}; use errors::DiagnosticBuilder; +use ich::Fingerprint; use hir::def_id::{CrateNum, DefId, DefIndex}; use hir::def::{Def, Export}; use hir::{self, TraitCandidate, ItemLocalId}; @@ -283,7 +284,7 @@ define_maps! { <'tcx> [] fn native_libraries: NativeLibraries(CrateNum) -> Rc<Vec<NativeLibrary>>, [] fn plugin_registrar_fn: PluginRegistrarFn(CrateNum) -> Option<DefId>, [] fn derive_registrar_fn: DeriveRegistrarFn(CrateNum) -> Option<DefId>, - [] fn crate_disambiguator: CrateDisambiguator(CrateNum) -> Symbol, + [] fn crate_disambiguator: CrateDisambiguator(CrateNum) -> Fingerprint, [] fn crate_hash: CrateHash(CrateNum) -> Svh, [] fn original_crate_name: OriginalCrateName(CrateNum) -> Symbol, diff --git a/src/librustc/ty/mod.rs b/src/librustc/ty/mod.rs index 129c81c5cd6..3b49cceee90 100644 --- a/src/librustc/ty/mod.rs +++ b/src/librustc/ty/mod.rs @@ -19,7 +19,7 @@ use hir::{map as hir_map, FreevarMap, TraitMap}; use hir::def::{Def, CtorKind, ExportMap}; use hir::def_id::{CrateNum, DefId, DefIndex, CRATE_DEF_INDEX, LOCAL_CRATE}; use hir::map::DefPathData; -use ich::StableHashingContext; +use ich::{Fingerprint, StableHashingContext}; use middle::const_val::ConstVal; use middle::lang_items::{FnTraitLangItem, FnMutTraitLangItem, FnOnceTraitLangItem}; use middle::privacy::AccessLevels; @@ -2562,7 +2562,7 @@ fn param_env<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, } fn crate_disambiguator<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, - crate_num: CrateNum) -> Symbol { + crate_num: CrateNum) -> Fingerprint { assert_eq!(crate_num, LOCAL_CRATE); tcx.sess.local_crate_disambiguator() } |
