From 13f85cb097725a13ae24a6564c71597243b91c3d Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Wed, 18 Dec 2013 17:00:56 -0800 Subject: [PATCH] librustc: De-`@mut` `CrateContext::vtables`. --- src/librustc/middle/trans/context.rs | 4 ++-- src/librustc/middle/trans/meth.rs | 13 +++++++++---- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/librustc/middle/trans/context.rs b/src/librustc/middle/trans/context.rs index 3c3e92d00ad..c5253ab8d8d 100644 --- a/src/librustc/middle/trans/context.rs +++ b/src/librustc/middle/trans/context.rs @@ -69,7 +69,7 @@ pub struct CrateContext { monomorphized: RefCell>, monomorphizing: RefCell>, // Cache generated vtables - vtables: HashMap<(ty::t, mono_id), ValueRef>, + vtables: RefCell>, // Cache of constant strings, const_cstr_cache: HashMap<@str, ValueRef>, @@ -196,7 +196,7 @@ impl CrateContext { non_inlineable_statics: HashSet::new(), monomorphized: RefCell::new(HashMap::new()), monomorphizing: RefCell::new(HashMap::new()), - vtables: HashMap::new(), + vtables: RefCell::new(HashMap::new()), const_cstr_cache: HashMap::new(), const_globals: HashMap::new(), const_values: HashMap::new(), diff --git a/src/librustc/middle/trans/meth.rs b/src/librustc/middle/trans/meth.rs index 8117d8e0bd5..a430c0b1a0b 100644 --- a/src/librustc/middle/trans/meth.rs +++ b/src/librustc/middle/trans/meth.rs @@ -539,9 +539,12 @@ pub fn get_vtable(bcx: @Block, // Check the cache. let hash_id = (self_ty, vtable_id(ccx, &origins[0])); - match ccx.vtables.find(&hash_id) { - Some(&val) => { return val } - None => { } + { + let vtables = ccx.vtables.borrow(); + match vtables.get().find(&hash_id) { + Some(&val) => { return val } + None => { } + } } // Not in the cache. Actually build it. @@ -559,7 +562,9 @@ pub fn get_vtable(bcx: @Block, glue::lazily_emit_all_tydesc_glue(ccx, tydesc); let vtable = make_vtable(ccx, tydesc, methods); - ccx.vtables.insert(hash_id, vtable); + + let mut vtables = ccx.vtables.borrow_mut(); + vtables.get().insert(hash_id, vtable); return vtable; }