Require the metadata loader to be thread-safe

This commit is contained in:
John Kåre Alsaker 2018-03-03 06:26:48 +01:00
parent e5acb0c8f6
commit 37e897f4c4
4 changed files with 7 additions and 7 deletions

View 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()),

View file

@ -200,7 +200,7 @@ impl TransCrate for LlvmTransCrate {
target_features(sess)
}
fn metadata_loader(&self) -> Box<MetadataLoader> {
fn metadata_loader(&self) -> Box<MetadataLoader + Sync> {
box metadata::LlvmMetadataLoader
}

View file

@ -58,7 +58,7 @@ pub trait TransCrate {
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 @@ pub trait TransCrate {
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 @@ impl TransCrate for MetadataOnlyTransCrate {
}
}
fn metadata_loader(&self) -> Box<MetadataLoader> {
fn metadata_loader(&self) -> Box<MetadataLoader + Sync> {
box NoLlvmMetadataLoader
}

View file

@ -28,7 +28,7 @@ use rustc_trans_utils::trans_crate::{TransCrate, MetadataOnlyTransCrate};
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()
}