Perform compiler state reset in phase_1

This commit is contained in:
Murarth 2014-12-02 14:55:07 -07:00
parent 2c028452b5
commit 04b4b500b9

View File

@ -46,12 +46,6 @@ pub fn compile_input(sess: Session,
outdir: &Option<Path>,
output: &Option<Path>,
addl_plugins: Option<Plugins>) {
// These may be left in an incoherent state after a previous compile.
// `clear_tables` and `get_ident_interner().clear()` can be used to free
// memory, but they do not restore the initial state.
syntax::ext::mtwt::reset_tables();
token::reset_ident_interner();
// We need nested scopes here, because the intermediate results can keep
// large chunks of memory alive and we want to free them as soon as
// possible to keep the peak memory usage low
@ -115,6 +109,12 @@ pub fn source_name(input: &Input) -> String {
pub fn phase_1_parse_input(sess: &Session, cfg: ast::CrateConfig, input: &Input)
-> ast::Crate {
// These may be left in an incoherent state after a previous compile.
// `clear_tables` and `get_ident_interner().clear()` can be used to free
// memory, but they do not restore the initial state.
syntax::ext::mtwt::reset_tables();
token::reset_ident_interner();
let krate = time(sess.time_passes(), "parsing", (), |_| {
match *input {
Input::File(ref file) => {