From 5f078be0a08c70519a96055e1fd9c972655e1f93 Mon Sep 17 00:00:00 2001 From: FelixBrendel Date: Wed, 20 May 2020 23:42:21 +0200 Subject: [PATCH] cleanup and deinit printer --- 3rd/ftb | 2 +- src/eval.cpp | 18 ------------------ src/main.cpp | 35 +++++++++++++++++++---------------- src/memory.cpp | 1 + src/testing.cpp | 8 -------- 5 files changed, 21 insertions(+), 43 deletions(-) diff --git a/3rd/ftb b/3rd/ftb index dc98c61..be5e48b 160000 --- a/3rd/ftb +++ b/3rd/ftb @@ -1 +1 @@ -Subproject commit dc98c61901fe01da4e3f1df4325d3f2d041f3700 +Subproject commit be5e48b137c1d684bcfdd7acd86ad5fe34c9a04c diff --git a/src/eval.cpp b/src/eval.cpp index e8adef7..7fe7edc 100644 --- a/src/eval.cpp +++ b/src/eval.cpp @@ -565,15 +565,6 @@ plot(sin(t)) } proc interprete_file (char* file_name) -> Lisp_Object* { - try Memory::init(); - try Memory::load_pre(); - try Memory::push_user_environment(); - defer { - if_debug { - Slime::Memory::free_everything(); - } - }; - Lisp_Object* result; try result = built_in_load(Memory::create_string(file_name)); @@ -582,15 +573,6 @@ plot(sin(t)) } proc interprete_stdin() -> void { - try_void Memory::init(); - try_void Memory::load_pre(); - try_void Memory::push_user_environment(); - defer { - if_debug { - Slime::Memory::free_everything(); - } - }; - printf("Welcome to the lispy interpreter.\n%s\n", version_string); char* line; diff --git a/src/main.cpp b/src/main.cpp index 4f9fc76..95d6ff4 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,5 +1,7 @@ #include "libslime.cpp" +using namespace Slime; + s32 main(s32 argc, char* argv[]) { #ifdef SLIME_WINDOWS // enable colored terminal output for windows @@ -10,28 +12,29 @@ s32 main(s32 argc, char* argv[]) { SetConsoleMode(hOut, dwMode); #endif + Memory::init(); + Memory::load_pre(); + Memory::push_user_environment(); + defer { + if_debug { + Memory::free_everything(); + } + }; + if (argc > 1) { - if (Slime::string_equal(argv[1], "--run-tests")) { - s32 res = Slime::run_all_tests(); + if (string_equal(argv[1], "--run-tests")) { + s32 res = run_all_tests(); return res ? 0 : 1; - } else if (Slime::string_equal(argv[1], "--generate-docs-file")) { - Slime::Memory::init(); - Slime::Memory::load_pre(); - Slime::Memory::push_user_environment(); - defer { - if_debug { - Slime::Memory::free_everything(); - } - }; - if (Slime::Globals::error) return 1; - Slime::built_in_load(Slime::Memory::create_string("generate-docs-file.slime")); + } else if (string_equal(argv[1], "--generate-docs-file")) { + if (Globals::error) return 1; + built_in_load(Memory::create_string("generate-docs-file.slime")); } else { - Slime::interprete_file(argv[1]); + interprete_file(argv[1]); } } else { - Slime::interprete_stdin(); + interprete_stdin(); return 0; } - if (Slime::Globals::error) return 1; + if (Globals::error) return 1; } diff --git a/src/memory.cpp b/src/memory.cpp index 1ed3a96..87287ba 100644 --- a/src/memory.cpp +++ b/src/memory.cpp @@ -106,6 +106,7 @@ namespace Slime::Memory { } proc free_everything() -> void { + deinit_printer(); object_memory.for_each([](Lisp_Object* lo){ switch (lo->type) { case Lisp_Object_Type::Continuation: { diff --git a/src/testing.cpp b/src/testing.cpp index 34cf7d4..9671206 100644 --- a/src/testing.cpp +++ b/src/testing.cpp @@ -551,14 +551,6 @@ namespace Slime { profile_this(); bool result = true; - try Memory::init(); - try Memory::load_pre(); - try Memory::push_user_environment(); - defer { - if_debug { - Slime::Memory::free_everything(); - } - }; push_environment(Memory::create_child_environment( get_current_environment())); printf("-- Util --\n");