Skip to content

Commit 25337a7

Browse files
committed
librustc: De-@mut CrateContext::type_hashcodes
1 parent a1747a6 commit 25337a7

File tree

2 files changed

+13
-9
lines changed

2 files changed

+13
-9
lines changed

src/librustc/back/link.rs

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -521,14 +521,18 @@ pub fn symbol_hash(tcx: ty::ctxt,
521521
}
522522

523523
pub fn get_symbol_hash(ccx: &mut CrateContext, t: ty::t) -> @str {
524-
match ccx.type_hashcodes.find(&t) {
525-
Some(&h) => h,
526-
None => {
527-
let hash = symbol_hash(ccx.tcx, &mut ccx.symbol_hasher, t, &ccx.link_meta);
528-
ccx.type_hashcodes.insert(t, hash);
529-
hash
530-
}
524+
{
525+
let type_hashcodes = ccx.type_hashcodes.borrow();
526+
match type_hashcodes.get().find(&t) {
527+
Some(&h) => return h,
528+
None => {}
529+
}
531530
}
531+
532+
let mut type_hashcodes = ccx.type_hashcodes.borrow_mut();
533+
let hash = symbol_hash(ccx.tcx, &mut ccx.symbol_hasher, t, &ccx.link_meta);
534+
type_hashcodes.get().insert(t, hash);
535+
hash
532536
}
533537

534538

src/librustc/middle/trans/context.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ pub struct CrateContext {
9696
llsizingtypes: RefCell<HashMap<ty::t, Type>>,
9797
adt_reprs: RefCell<HashMap<ty::t, @adt::Repr>>,
9898
symbol_hasher: Sha256,
99-
type_hashcodes: HashMap<ty::t, @str>,
99+
type_hashcodes: RefCell<HashMap<ty::t, @str>>,
100100
type_short_names: HashMap<ty::t, ~str>,
101101
all_llvm_symbols: HashSet<@str>,
102102
tcx: ty::ctxt,
@@ -207,7 +207,7 @@ impl CrateContext {
207207
llsizingtypes: RefCell::new(HashMap::new()),
208208
adt_reprs: RefCell::new(HashMap::new()),
209209
symbol_hasher: symbol_hasher,
210-
type_hashcodes: HashMap::new(),
210+
type_hashcodes: RefCell::new(HashMap::new()),
211211
type_short_names: HashMap::new(),
212212
all_llvm_symbols: HashSet::new(),
213213
tcx: tcx,

0 commit comments

Comments
 (0)