clear memory footprint when codegen complete

This commit is contained in:
Valk Richard Li 2021-02-23 22:53:28 +08:00
parent 64961877de
commit b1a5a5f6c0
1 changed files with 14 additions and 0 deletions

View File

@ -37,6 +37,16 @@ void die(std::string stage,std::string filename)
return; return;
} }
void clear()
{
// this will clear the data in lexer/parser/import modules
// to reduce memory footprint
lexer.get_token_list().clear();
parse.get_root().clear();
import.get_root().clear();
return;
}
void lex_func() void lex_func()
{ {
lexer.openfile(inputfile); lexer.openfile(inputfile);
@ -47,6 +57,7 @@ void lex_func()
return; return;
} }
lexer.print_token(); lexer.print_token();
clear();
return; return;
} }
@ -67,6 +78,7 @@ void ast_print()
return; return;
} }
parse.get_root().print_ast(0); parse.get_root().print_ast(0);
clear();
return; return;
} }
@ -93,6 +105,7 @@ void show_bytecode()
return; return;
} }
code_generator.main_progress(import.get_root()); code_generator.main_progress(import.get_root());
clear();
code_generator.print_byte_code(); code_generator.print_byte_code();
return; return;
} }
@ -120,6 +133,7 @@ void execute()
return; return;
} }
code_generator.main_progress(import.get_root()); code_generator.main_progress(import.get_root());
clear();
vm.run( vm.run(
code_generator.get_string_table(), code_generator.get_string_table(),
code_generator.get_number_table(), code_generator.get_number_table(),