From 519db347229376dd4f7e08df38dd85ae3a43c9ed Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Wed, 18 Dec 2013 18:15:27 -0800 Subject: [PATCH] librustc: De-`@mut` `CrateContext::tydescs` --- src/librustc/middle/trans/base.rs | 13 ++++++++----- src/librustc/middle/trans/context.rs | 4 ++-- src/librustc/middle/trans/glue.rs | 4 ++-- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/librustc/middle/trans/base.rs b/src/librustc/middle/trans/base.rs index 7f40aa43d1a..6462612ced7 100644 --- a/src/librustc/middle/trans/base.rs +++ b/src/librustc/middle/trans/base.rs @@ -439,16 +439,19 @@ pub fn get_tydesc_simple(ccx: &mut CrateContext, t: ty::t) -> ValueRef { } pub fn get_tydesc(ccx: &mut CrateContext, t: ty::t) -> @mut tydesc_info { - match ccx.tydescs.find(&t) { - Some(&inf) => { - return inf; + { + let tydescs = ccx.tydescs.borrow(); + match tydescs.get().find(&t) { + Some(&inf) => return inf, + _ => { } } - _ => { } } ccx.stats.n_static_tydescs += 1u; let inf = glue::declare_tydesc(ccx, t); - ccx.tydescs.insert(t, inf); + + let mut tydescs = ccx.tydescs.borrow_mut(); + tydescs.get().insert(t, inf); return inf; } diff --git a/src/librustc/middle/trans/context.rs b/src/librustc/middle/trans/context.rs index b70dccb1f81..9d27ba9b297 100644 --- a/src/librustc/middle/trans/context.rs +++ b/src/librustc/middle/trans/context.rs @@ -52,7 +52,7 @@ pub struct CrateContext { reachable: @mut HashSet, item_symbols: RefCell>, link_meta: LinkMeta, - tydescs: HashMap, + tydescs: RefCell>, // Set when running emit_tydescs to enforce that no more tydescs are // created. finished_tydescs: bool, @@ -188,7 +188,7 @@ impl CrateContext { reachable: reachable, item_symbols: RefCell::new(HashMap::new()), link_meta: link_meta, - tydescs: HashMap::new(), + tydescs: RefCell::new(HashMap::new()), finished_tydescs: false, external: HashMap::new(), external_srcs: HashMap::new(), diff --git a/src/librustc/middle/trans/glue.rs b/src/librustc/middle/trans/glue.rs index 90dc74ef489..32b4bb489a1 100644 --- a/src/librustc/middle/trans/glue.rs +++ b/src/librustc/middle/trans/glue.rs @@ -696,8 +696,8 @@ pub fn emit_tydescs(ccx: &mut CrateContext) { // As of this point, allow no more tydescs to be created. ccx.finished_tydescs = true; let glue_fn_ty = Type::generic_glue_fn(ccx).ptr_to(); - let tyds = &mut ccx.tydescs; - for (_, &val) in tyds.iter() { + let mut tyds = ccx.tydescs.borrow_mut(); + for (_, &val) in tyds.get().iter() { let ti = val; // Each of the glue functions needs to be cast to a generic type