diff options
| author | Patrick Walton <pcwalton@mimiga.net> | 2013-12-20 20:18:52 -0800 |
|---|---|---|
| committer | Patrick Walton <pcwalton@mimiga.net> | 2013-12-26 15:54:29 -0800 |
| commit | 2ae76e120aff2fac9293c64004827bdc14b5c63c (patch) | |
| tree | 7f9bb8de329464f1fc7e6eea671bd10ef6331d0a /src | |
| parent | fbb70d916f08e880c7f0ca576f7f56ea7a40ddc1 (diff) | |
| download | rust-2ae76e120aff2fac9293c64004827bdc14b5c63c.tar.gz rust-2ae76e120aff2fac9293c64004827bdc14b5c63c.zip | |
librustc: De-`@mut` the `type_abbrevs` table
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc/metadata/encoder.rs | 4 | ||||
| -rw-r--r-- | src/librustc/metadata/tyencode.rs | 17 |
2 files changed, 14 insertions, 7 deletions
diff --git a/src/librustc/metadata/encoder.rs b/src/librustc/metadata/encoder.rs index 140a53880db..1e8acf53fac 100644 --- a/src/librustc/metadata/encoder.rs +++ b/src/librustc/metadata/encoder.rs @@ -49,7 +49,7 @@ use syntax; use writer = extra::ebml::writer; // used by astencode: -type abbrev_map = @mut HashMap<ty::t, tyencode::ty_abbrev>; +type abbrev_map = @RefCell<HashMap<ty::t, tyencode::ty_abbrev>>; pub type encode_inlined_item<'a> = 'a |ecx: &EncodeContext, ebml_w: &mut writer::Encoder, @@ -1774,7 +1774,7 @@ pub fn encode_metadata(parms: EncodeParams, crate: &Crate) -> ~[u8] { non_inlineable_statics, .. } = parms; - let type_abbrevs = @mut HashMap::new(); + let type_abbrevs = @RefCell::new(HashMap::new()); let stats = @mut stats; let ecx = EncodeContext { diag: diag, diff --git a/src/librustc/metadata/tyencode.rs b/src/librustc/metadata/tyencode.rs index 8ad9784df1b..06d74055af4 100644 --- a/src/librustc/metadata/tyencode.rs +++ b/src/librustc/metadata/tyencode.rs @@ -10,6 +10,7 @@ // Type encoding +use std::cell::RefCell; use std::hashmap::HashMap; use std::io; use std::io::{Decorator, Writer, Seek}; @@ -50,7 +51,7 @@ pub struct ty_abbrev { pub enum abbrev_ctxt { ac_no_abbrevs, - ac_use_abbrevs(@mut HashMap<ty::t, ty_abbrev>), + ac_use_abbrevs(@RefCell<HashMap<ty::t, ty_abbrev>>), } fn mywrite(w: &mut MemWriter, fmt: &fmt::Arguments) { @@ -83,9 +84,12 @@ pub fn enc_ty(w: &mut MemWriter, cx: @ctxt, t: ty::t) { w.write(result_str.as_bytes()); } ac_use_abbrevs(abbrevs) => { - match abbrevs.find(&t) { - Some(a) => { w.write(a.s.as_bytes()); return; } - None => {} + { + let mut abbrevs = abbrevs.borrow_mut(); + match abbrevs.get().find(&t) { + Some(a) => { w.write(a.s.as_bytes()); return; } + None => {} + } } let pos = w.tell(); enc_sty(w, cx, &ty::get(t).sty); @@ -104,7 +108,10 @@ pub fn enc_ty(w: &mut MemWriter, cx: @ctxt, t: ty::t) { let a = ty_abbrev { pos: pos as uint, len: len as uint, s: s }; - abbrevs.insert(t, a); + { + let mut abbrevs = abbrevs.borrow_mut(); + abbrevs.get().insert(t, a); + } } return; } |
