]> git.lizzy.rs Git - rust.git/commitdiff
Require the metadata loader to be thread-safe
authorJohn Kåre Alsaker <john.kare.alsaker@gmail.com>
Sat, 3 Mar 2018 05:26:48 +0000 (06:26 +0100)
committerJohn Kåre Alsaker <john.kare.alsaker@gmail.com>
Mon, 12 Mar 2018 08:35:41 +0000 (09:35 +0100)
src/librustc_metadata/cstore.rs
src/librustc_trans/lib.rs
src/librustc_trans_utils/trans_crate.rs
src/test/run-make/hotplug_codegen_backend/the_backend.rs

index 202efb9276a81e0f8071e1b9915cee8fcc30080c..22c80e8db3efa5e5ac65692b9f6a70f48cc269d4 100644 (file)
@@ -93,11 +93,11 @@ pub struct CStore {
     metas: RefCell<IndexVec<CrateNum, Option<Lrc<CrateMetadata>>>>,
     /// Map from NodeId's of local extern crate statements to crate numbers
     extern_mod_crate_map: RefCell<NodeMap<CrateNum>>,
-    pub metadata_loader: Box<MetadataLoader>,
+    pub metadata_loader: Box<MetadataLoader + Sync>,
 }
 
 impl CStore {
-    pub fn new(metadata_loader: Box<MetadataLoader>) -> CStore {
+    pub fn new(metadata_loader: Box<MetadataLoader + Sync>) -> CStore {
         CStore {
             metas: RefCell::new(IndexVec::new()),
             extern_mod_crate_map: RefCell::new(FxHashMap()),
index 39eb38658fee9349061d5a7adb136a7471d4674d..29187c6c0a5178920602c8a460a6396cbdd9abbe 100644 (file)
@@ -200,7 +200,7 @@ fn target_features(&self, sess: &Session) -> Vec<Symbol> {
         target_features(sess)
     }
 
-    fn metadata_loader(&self) -> Box<MetadataLoader> {
+    fn metadata_loader(&self) -> Box<MetadataLoader + Sync> {
         box metadata::LlvmMetadataLoader
     }
 
index 0d4811c4b025dfd05c14eeaf3a9b5ac93f6ed70f..5cf9819288b5ef7628c1a8b670c05f979aa37b10 100644 (file)
@@ -58,7 +58,7 @@ fn print_passes(&self) {}
     fn print_version(&self) {}
     fn diagnostics(&self) -> &[(&'static str, &'static str)] { &[] }
 
-    fn metadata_loader(&self) -> Box<MetadataLoader>;
+    fn metadata_loader(&self) -> Box<MetadataLoader + Sync>;
     fn provide(&self, _providers: &mut Providers);
     fn provide_extern(&self, _providers: &mut Providers);
     fn trans_crate<'a, 'tcx>(
@@ -84,7 +84,7 @@ fn join_trans_and_link(
 pub struct DummyTransCrate;
 
 impl TransCrate for DummyTransCrate {
-    fn metadata_loader(&self) -> Box<MetadataLoader> {
+    fn metadata_loader(&self) -> Box<MetadataLoader + Sync> {
         box DummyMetadataLoader(())
     }
 
@@ -195,7 +195,7 @@ fn init(&self, sess: &Session) {
         }
     }
 
-    fn metadata_loader(&self) -> Box<MetadataLoader> {
+    fn metadata_loader(&self) -> Box<MetadataLoader + Sync> {
         box NoLlvmMetadataLoader
     }
 
index 9e87268e6999da1ec81d5193fa093d19ab68776e..e266b0f5e834744e25371dd838a50844ccfd6147 100644 (file)
@@ -28,7 +28,7 @@
 struct TheBackend(Box<TransCrate>);
 
 impl TransCrate for TheBackend {
-    fn metadata_loader(&self) -> Box<MetadataLoader> {
+    fn metadata_loader(&self) -> Box<MetadataLoader + Sync> {
         self.0.metadata_loader()
     }