diff --git a/src/librustc/middle/trans/base.rs b/src/librustc/middle/trans/base.rs index 11782e7ba395..77eea3ef3642 100644 --- a/src/librustc/middle/trans/base.rs +++ b/src/librustc/middle/trans/base.rs @@ -3268,7 +3268,8 @@ pub fn trans_crate(sess: session::Session, } } if ccx.sess.count_llvm_insns() { - for (k, v) in ccx.stats.llvm_insns.iter() { + let llvm_insns = ccx.stats.llvm_insns.borrow(); + for (k, v) in llvm_insns.get().iter() { println!("{:7u} {}", *v, *k); } } diff --git a/src/librustc/middle/trans/builder.rs b/src/librustc/middle/trans/builder.rs index 49a3ff1c7481..eacc6f84db11 100644 --- a/src/librustc/middle/trans/builder.rs +++ b/src/librustc/middle/trans/builder.rs @@ -54,7 +54,7 @@ pub fn count_insn(&self, category: &str) { } if self.ccx.sess.count_llvm_insns() { base::with_insn_ctxt(|v| { - let h = &mut self.ccx.stats.llvm_insns; + let mut h = self.ccx.stats.llvm_insns.borrow_mut(); // Build version of path with cycles removed. @@ -82,11 +82,11 @@ pub fn count_insn(&self, category: &str) { s.push_char('/'); s.push_str(category); - let n = match h.find(&s) { + let n = match h.get().find(&s) { Some(&n) => n, _ => 0u }; - h.insert(s, n+1u); + h.get().insert(s, n+1u); }) } } diff --git a/src/librustc/middle/trans/common.rs b/src/librustc/middle/trans/common.rs index 9e4005147c46..edde0e6e7083 100644 --- a/src/librustc/middle/trans/common.rs +++ b/src/librustc/middle/trans/common.rs @@ -135,7 +135,7 @@ pub struct Stats { n_inlines: Cell, n_closures: Cell, n_llvm_insns: Cell, - llvm_insns: HashMap<~str, uint>, + llvm_insns: RefCell>, fn_stats: ~[(~str, uint, uint)] // (ident, time-in-ms, llvm-instructions) } diff --git a/src/librustc/middle/trans/context.rs b/src/librustc/middle/trans/context.rs index cf0822a98e37..410f0e27b327 100644 --- a/src/librustc/middle/trans/context.rs +++ b/src/librustc/middle/trans/context.rs @@ -220,7 +220,7 @@ pub fn new(sess: session::Session, n_inlines: Cell::new(0u), n_closures: Cell::new(0u), n_llvm_insns: Cell::new(0u), - llvm_insns: HashMap::new(), + llvm_insns: RefCell::new(HashMap::new()), fn_stats: ~[] }, tydesc_type: tydesc_type,