about summary refs log tree commit diff
path: root/src/libsyntax
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2013-12-27 16:38:25 -0800
committerPatrick Walton <pcwalton@mimiga.net>2014-01-03 14:01:59 -0800
commit4d6dde7f49eea0031a7faa651edef0a231dcb081 (patch)
tree6998100e374e6a60976665b0d05bf1eebf191e39 /src/libsyntax
parentbe17a1b08c17b3381e86e3bea828a63ab69e67a9 (diff)
downloadrust-4d6dde7f49eea0031a7faa651edef0a231dcb081.tar.gz
rust-4d6dde7f49eea0031a7faa651edef0a231dcb081.zip
libsyntax: De-`@mut` `SCTable::mark_memo`
Diffstat (limited to 'src/libsyntax')
-rw-r--r--src/libsyntax/ast.rs6
-rw-r--r--src/libsyntax/ast_util.rs9
2 files changed, 8 insertions, 7 deletions
diff --git a/src/libsyntax/ast.rs b/src/libsyntax/ast.rs
index 977a250be84..fac86ae08d4 100644
--- a/src/libsyntax/ast.rs
+++ b/src/libsyntax/ast.rs
@@ -89,9 +89,9 @@ pub type SyntaxContext = u32;
 // it should cut down on memory use *a lot*; applying a mark
 // to a tree containing 50 identifiers would otherwise generate
 pub struct SCTable {
-    table : RefCell<~[SyntaxContext_]>,
-    mark_memo : HashMap<(SyntaxContext,Mrk),SyntaxContext>,
-    rename_memo : HashMap<(SyntaxContext,Ident,Name),SyntaxContext>
+    table: RefCell<~[SyntaxContext_]>,
+    mark_memo: RefCell<HashMap<(SyntaxContext,Mrk),SyntaxContext>>,
+    rename_memo: HashMap<(SyntaxContext,Ident,Name),SyntaxContext>
 }
 
 // NB: these must be placed in any SCTable...
diff --git a/src/libsyntax/ast_util.rs b/src/libsyntax/ast_util.rs
index 3e34c44fdcb..796d4ebf365 100644
--- a/src/libsyntax/ast_util.rs
+++ b/src/libsyntax/ast_util.rs
@@ -717,17 +717,18 @@ pub fn new_mark_internal(m:Mrk, tail:SyntaxContext,table:&mut SCTable)
     // flow-sensitivity. Results in two lookups on a hash table hit.
     // also applies to new_rename_internal, below.
     // let try_lookup = table.mark_memo.find(&key);
-    match table.mark_memo.contains_key(&key) {
+    let mut mark_memo = table.mark_memo.borrow_mut();
+    match mark_memo.get().contains_key(&key) {
         false => {
             let new_idx = {
                 let mut table = table.table.borrow_mut();
                 idx_push(table.get(), Mark(m,tail))
             };
-            table.mark_memo.insert(key,new_idx);
+            mark_memo.get().insert(key,new_idx);
             new_idx
         }
         true => {
-            match table.mark_memo.find(&key) {
+            match mark_memo.get().find(&key) {
                 None => fail!("internal error: key disappeared 2013042901"),
                 Some(idxptr) => {*idxptr}
             }
@@ -771,7 +772,7 @@ pub fn new_rename_internal(id:Ident, to:Name, tail:SyntaxContext, table: &mut SC
 pub fn new_sctable_internal() -> SCTable {
     SCTable {
         table: RefCell::new(~[EmptyCtxt,IllegalCtxt]),
-        mark_memo: HashMap::new(),
+        mark_memo: RefCell::new(HashMap::new()),
         rename_memo: HashMap::new()
     }
 }