diff options
| author | Patrick Walton <pcwalton@mimiga.net> | 2013-12-27 16:38:25 -0800 |
|---|---|---|
| committer | Patrick Walton <pcwalton@mimiga.net> | 2014-01-03 14:01:59 -0800 |
| commit | 4d6dde7f49eea0031a7faa651edef0a231dcb081 (patch) | |
| tree | 6998100e374e6a60976665b0d05bf1eebf191e39 /src/libsyntax | |
| parent | be17a1b08c17b3381e86e3bea828a63ab69e67a9 (diff) | |
| download | rust-4d6dde7f49eea0031a7faa651edef0a231dcb081.tar.gz rust-4d6dde7f49eea0031a7faa651edef0a231dcb081.zip | |
libsyntax: De-`@mut` `SCTable::mark_memo`
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/ast.rs | 6 | ||||
| -rw-r--r-- | src/libsyntax/ast_util.rs | 9 |
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() } } |
