From 38be67a1b996f577f0334dc1f71c176adef54ff9 Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Wed, 18 Dec 2013 18:49:02 -0800 Subject: [PATCH] librustc: De-`@mut` `CrateDebugContext::created_types`. --- src/librustc/middle/trans/debuginfo.rs | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/librustc/middle/trans/debuginfo.rs b/src/librustc/middle/trans/debuginfo.rs index e06980cbc389..270c52212d56 100644 --- a/src/librustc/middle/trans/debuginfo.rs +++ b/src/librustc/middle/trans/debuginfo.rs @@ -177,7 +177,7 @@ pub struct CrateDebugContext { priv builder: DIBuilderRef, priv current_debug_location: DebugLocation, priv created_files: RefCell>, - priv created_types: HashMap, + priv created_types: RefCell>, priv namespace_map: HashMap<~[ast::Ident], @NamespaceTreeNode>, // This collection is used to assert that composite types (structs, enums, ...) have their // members only set once: @@ -196,7 +196,7 @@ impl CrateDebugContext { builder: builder, current_debug_location: UnknownLocation, created_files: RefCell::new(HashMap::new()), - created_types: HashMap::new(), + created_types: RefCell::new(HashMap::new()), namespace_map: HashMap::new(), composite_types_completed: HashSet::new(), }; @@ -1238,7 +1238,11 @@ impl RecursiveTypeDescription { member_description_factory } => { // Insert the stub into the cache in order to allow recursive references ... - debug_context(cx).created_types.insert(cache_id, metadata_stub); + { + let mut created_types = debug_context(cx).created_types + .borrow_mut(); + created_types.get().insert(cache_id, metadata_stub); + } // ... then create the member descriptions ... let member_descriptions = member_description_factory. @@ -2042,9 +2046,13 @@ fn type_metadata(cx: &mut CrateContext, usage_site_span: Span) -> DIType { let cache_id = cache_id_for_type(t); - match debug_context(cx).created_types.find(&cache_id) { - Some(type_metadata) => return *type_metadata, - None => () + + { + let created_types = debug_context(cx).created_types.borrow(); + match created_types.get().find(&cache_id) { + Some(type_metadata) => return *type_metadata, + None => () + } } fn create_pointer_to_box_metadata(cx: &mut CrateContext, @@ -2158,7 +2166,8 @@ fn type_metadata(cx: &mut CrateContext, _ => cx.sess.bug(format!("debuginfo: unexpected type in type_metadata: {:?}", sty)) }; - debug_context(cx).created_types.insert(cache_id, type_metadata); + let mut created_types = debug_context(cx).created_types.borrow_mut(); + created_types.get().insert(cache_id, type_metadata); return type_metadata; }