Skip to content

Commit df373e6

Browse files
committed
librustc: De-@mut CStore::metas
1 parent ef32b12 commit df373e6

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

src/librustc/metadata/cstore.rs

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use metadata::decoder;
1616
use metadata::loader;
1717

18+
use std::cell::RefCell;
1819
use std::hashmap::HashMap;
1920
use syntax::ast;
2021
use syntax::parse::token::ident_interner;
@@ -60,7 +61,7 @@ pub struct CrateSource {
6061
}
6162

6263
pub struct CStore {
63-
priv metas: HashMap <ast::CrateNum, @crate_metadata>,
64+
priv metas: RefCell<HashMap<ast::CrateNum, @crate_metadata>>,
6465
priv extern_mod_crate_map: extern_mod_crate_map,
6566
priv used_crate_sources: ~[CrateSource],
6667
priv used_libraries: ~[(~str, NativeLibaryKind)],
@@ -74,7 +75,7 @@ type extern_mod_crate_map = HashMap<ast::NodeId, ast::CrateNum>;
7475
impl CStore {
7576
pub fn new(intr: @ident_interner) -> CStore {
7677
CStore {
77-
metas: HashMap::new(),
78+
metas: RefCell::new(HashMap::new()),
7879
extern_mod_crate_map: HashMap::new(),
7980
used_crate_sources: ~[],
8081
used_libraries: ~[],
@@ -84,7 +85,8 @@ impl CStore {
8485
}
8586

8687
pub fn get_crate_data(&self, cnum: ast::CrateNum) -> @crate_metadata {
87-
*self.metas.get(&cnum)
88+
let metas = self.metas.borrow();
89+
*metas.get().get(&cnum)
8890
}
8991

9092
pub fn get_crate_hash(&self, cnum: ast::CrateNum) -> @str {
@@ -98,15 +100,18 @@ impl CStore {
98100
}
99101

100102
pub fn set_crate_data(&mut self, cnum: ast::CrateNum, data: @crate_metadata) {
101-
self.metas.insert(cnum, data);
103+
let mut metas = self.metas.borrow_mut();
104+
metas.get().insert(cnum, data);
102105
}
103106

104107
pub fn have_crate_data(&self, cnum: ast::CrateNum) -> bool {
105-
self.metas.contains_key(&cnum)
108+
let metas = self.metas.borrow();
109+
metas.get().contains_key(&cnum)
106110
}
107111

108112
pub fn iter_crate_data(&self, i: |ast::CrateNum, @crate_metadata|) {
109-
for (&k, &v) in self.metas.iter() {
113+
let metas = self.metas.borrow();
114+
for (&k, &v) in metas.get().iter() {
110115
i(k, v);
111116
}
112117
}

0 commit comments

Comments
 (0)