Skip to content

Commit 10390d3

Browse files
committed
---
yaml --- r: 88971 b: refs/heads/snap-stage3 c: df373e6 h: refs/heads/master i: 88969: 30fae1e 88967: 84fe11e v: v3
1 parent f771904 commit 10390d3

File tree

2 files changed

+12
-7
lines changed

2 files changed

+12
-7
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
refs/heads/master: deeca5d586bfaa4aa60246f671a8d611d38f6248
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
4-
refs/heads/snap-stage3: ef32b129fa4a64b44c4a0c7ace932ae1724c9c62
4+
refs/heads/snap-stage3: df373e6fbeb8b64abf0619dcaad642c26f04b6aa
55
refs/heads/try: b160761e35efcd1207112b3b782c06633cf441a8
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b

branches/snap-stage3/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)