From c04d4846f2a7a49e592f4e98f3e604851d600d4e Mon Sep 17 00:00:00 2001 From: Eduard Burtescu Date: Sun, 9 Mar 2014 00:18:58 +0200 Subject: Discard MTWT & interner tables from TLD after they stop being useful. --- src/libsyntax/ext/mtwt.rs | 9 +++++++++ src/libsyntax/util/interner.rs | 10 ++++++++++ 2 files changed, 19 insertions(+) (limited to 'src/libsyntax') diff --git a/src/libsyntax/ext/mtwt.rs b/src/libsyntax/ext/mtwt.rs index 909f3eaf361..1a5587433ac 100644 --- a/src/libsyntax/ext/mtwt.rs +++ b/src/libsyntax/ext/mtwt.rs @@ -126,6 +126,15 @@ pub fn display_sctable(table: &SCTable) { } } +/// Clear the tables from TLD to reclaim memory. +pub fn clear_tables() { + with_sctable(|table| { + *table.table.borrow_mut().get() = Vec::new(); + *table.mark_memo.borrow_mut().get() = HashMap::new(); + *table.rename_memo.borrow_mut().get() = HashMap::new(); + }); + with_resolve_table_mut(|table| *table = HashMap::new()); +} // Add a value to the end of a vec, return its index fn idx_push(vec: &mut Vec , val: T) -> u32 { diff --git a/src/libsyntax/util/interner.rs b/src/libsyntax/util/interner.rs index 969c7cec87c..c1ed96fe4de 100644 --- a/src/libsyntax/util/interner.rs +++ b/src/libsyntax/util/interner.rs @@ -84,6 +84,11 @@ impl Interner { None => None, } } + + pub fn clear(&self) { + *self.map.borrow_mut().get() = HashMap::new(); + *self.vect.borrow_mut().get() = Vec::new(); + } } #[deriving(Clone, Eq, Hash, Ord)] @@ -222,6 +227,11 @@ impl StrInterner { None => None, } } + + pub fn clear(&self) { + *self.map.borrow_mut().get() = HashMap::new(); + *self.vect.borrow_mut().get() = Vec::new(); + } } #[cfg(test)] -- cgit 1.4.1-3-g733a5