Require the metadata loader to be thread-safe
This commit is contained in:
parent
e5acb0c8f6
commit
37e897f4c4
4 changed files with 7 additions and 7 deletions
|
|
@ -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()),
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue