Skip to content

Commit ed819c9

Browse files
committed
librustc: De-@mut the crate cache in the crate reader
1 parent 1f76a9b commit ed819c9

File tree

1 file changed

+16
-11
lines changed

1 file changed

+16
-11
lines changed

src/librustc/metadata/creader.rs

+16-11
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ pub fn read_crates(sess: Session,
3737
let mut e = Env {
3838
sess: sess,
3939
os: os,
40-
crate_cache: @mut ~[],
40+
crate_cache: @RefCell::new(~[]),
4141
next_crate_num: 1,
4242
intr: intr
4343
};
@@ -48,8 +48,9 @@ pub fn read_crates(sess: Session,
4848
};
4949
visit::walk_crate(&mut v, crate, ());
5050
}
51-
dump_crates(*e.crate_cache);
52-
warn_if_multiple_versions(&mut e, sess.diagnostic(), *e.crate_cache);
51+
let crate_cache = e.crate_cache.borrow();
52+
dump_crates(*crate_cache.get());
53+
warn_if_multiple_versions(&mut e, sess.diagnostic(), *crate_cache.get());
5354
}
5455

5556
struct ReadCrateVisitor<'a> {
@@ -111,7 +112,7 @@ fn warn_if_multiple_versions(e: &mut Env,
111112
struct Env {
112113
sess: Session,
113114
os: loader::Os,
114-
crate_cache: @mut ~[cache_entry],
115+
crate_cache: @RefCell<~[cache_entry]>,
115116
next_crate_num: ast::CrateNum,
116117
intr: @ident_interner
117118
}
@@ -242,7 +243,8 @@ fn visit_item(e: &Env, i: @ast::item) {
242243
}
243244

244245
fn existing_match(e: &Env, name: @str, version: @str, hash: &str) -> Option<ast::CrateNum> {
245-
for c in e.crate_cache.iter() {
246+
let crate_cache = e.crate_cache.borrow();
247+
for c in crate_cache.get().iter() {
246248
let pkgid_version = match c.pkgid.version {
247249
None => @"0.0",
248250
Some(ref ver) => ver.to_managed(),
@@ -285,12 +287,15 @@ fn resolve_crate(e: &mut Env,
285287

286288
// Claim this crate number and cache it
287289
let cnum = e.next_crate_num;
288-
e.crate_cache.push(cache_entry {
289-
cnum: cnum,
290-
span: span,
291-
hash: hash,
292-
pkgid: pkgid,
293-
});
290+
{
291+
let mut crate_cache = e.crate_cache.borrow_mut();
292+
crate_cache.get().push(cache_entry {
293+
cnum: cnum,
294+
span: span,
295+
hash: hash,
296+
pkgid: pkgid,
297+
});
298+
}
294299
e.next_crate_num += 1;
295300

296301
// Now resolve the crates referenced by this crate

0 commit comments

Comments
 (0)