diff options
| author | John Kåre Alsaker <john.kare.alsaker@gmail.com> | 2018-04-01 08:23:38 +0200 |
|---|---|---|
| committer | John Kåre Alsaker <john.kare.alsaker@gmail.com> | 2018-04-10 14:40:25 +0200 |
| commit | 271c8d362a0df52d66ec666a27398ef3211e4c57 (patch) | |
| tree | 7328a0cab6b0239beb016e202eb33faac8ed2161 | |
| parent | 8380539ecb88fba56a8fc0812df6fa52acab4123 (diff) | |
| download | rust-271c8d362a0df52d66ec666a27398ef3211e4c57.tar.gz rust-271c8d362a0df52d66ec666a27398ef3211e4c57.zip | |
Make Session.crate_disambiguator thread-safe
| -rw-r--r-- | src/librustc/session/mod.rs | 9 | ||||
| -rw-r--r-- | src/librustc_driver/driver.rs | 2 |
2 files changed, 4 insertions, 7 deletions
diff --git a/src/librustc/session/mod.rs b/src/librustc/session/mod.rs index 81012754a77..9ab9635c9ed 100644 --- a/src/librustc/session/mod.rs +++ b/src/librustc/session/mod.rs @@ -99,7 +99,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<CrateDisambiguator>>, + pub crate_disambiguator: Once<CrateDisambiguator>, features: Once<feature_gate::Features>, @@ -202,10 +202,7 @@ impl From<&'static lint::Lint> for DiagnosticMessageId { impl Session { pub fn local_crate_disambiguator(&self) -> CrateDisambiguator { - match *self.crate_disambiguator.borrow() { - Some(value) => value, - None => bug!("accessing disambiguator before initialization"), - } + *self.crate_disambiguator.get() } pub fn struct_span_warn<'a, S: Into<MultiSpan>>( @@ -1101,7 +1098,7 @@ pub fn build_session_( plugin_attributes: RefCell::new(Vec::new()), crate_types: RefCell::new(Vec::new()), dependency_formats: RefCell::new(FxHashMap()), - crate_disambiguator: RefCell::new(None), + crate_disambiguator: Once::new(), features: Once::new(), recursion_limit: Once::new(), type_length_limit: Once::new(), diff --git a/src/librustc_driver/driver.rs b/src/librustc_driver/driver.rs index 8372cbdd5df..4776f516eac 100644 --- a/src/librustc_driver/driver.rs +++ b/src/librustc_driver/driver.rs @@ -655,7 +655,7 @@ pub fn phase_2_configure_and_expand_inner<'a, F>(sess: &'a Session, *sess.crate_types.borrow_mut() = collect_crate_types(sess, &krate.attrs); let disambiguator = compute_crate_disambiguator(sess); - *sess.crate_disambiguator.borrow_mut() = Some(disambiguator); + sess.crate_disambiguator.set(disambiguator); rustc_incremental::prepare_session_directory( sess, &crate_name, |
