cleanup and deinit printer

This commit is contained in:
FelixBrendel
2020-05-20 23:42:21 +02:00
parent 7d96b75e05
commit 5f078be0a0
5 changed files with 21 additions and 43 deletions
+1 -1
Submodule 3rd/ftb updated: dc98c61901...be5e48b137
-18
View File
@@ -565,15 +565,6 @@ plot(sin(t))
} }
proc interprete_file (char* file_name) -> Lisp_Object* { 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; Lisp_Object* result;
try result = built_in_load(Memory::create_string(file_name)); try result = built_in_load(Memory::create_string(file_name));
@@ -582,15 +573,6 @@ plot(sin(t))
} }
proc interprete_stdin() -> void { 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); printf("Welcome to the lispy interpreter.\n%s\n", version_string);
char* line; char* line;
+19 -16
View File
@@ -1,5 +1,7 @@
#include "libslime.cpp" #include "libslime.cpp"
using namespace Slime;
s32 main(s32 argc, char* argv[]) { s32 main(s32 argc, char* argv[]) {
#ifdef SLIME_WINDOWS #ifdef SLIME_WINDOWS
// enable colored terminal output for windows // enable colored terminal output for windows
@@ -10,28 +12,29 @@ s32 main(s32 argc, char* argv[]) {
SetConsoleMode(hOut, dwMode); SetConsoleMode(hOut, dwMode);
#endif #endif
Memory::init();
Memory::load_pre();
Memory::push_user_environment();
defer {
if_debug {
Memory::free_everything();
}
};
if (argc > 1) { if (argc > 1) {
if (Slime::string_equal(argv[1], "--run-tests")) { if (string_equal(argv[1], "--run-tests")) {
s32 res = Slime::run_all_tests(); s32 res = run_all_tests();
return res ? 0 : 1; return res ? 0 : 1;
} else if (Slime::string_equal(argv[1], "--generate-docs-file")) { } else if (string_equal(argv[1], "--generate-docs-file")) {
Slime::Memory::init(); if (Globals::error) return 1;
Slime::Memory::load_pre(); built_in_load(Memory::create_string("generate-docs-file.slime"));
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 { } else {
Slime::interprete_file(argv[1]); interprete_file(argv[1]);
} }
} else { } else {
Slime::interprete_stdin(); interprete_stdin();
return 0; return 0;
} }
if (Slime::Globals::error) return 1; if (Globals::error) return 1;
} }
+1
View File
@@ -106,6 +106,7 @@ namespace Slime::Memory {
} }
proc free_everything() -> void { proc free_everything() -> void {
deinit_printer();
object_memory.for_each([](Lisp_Object* lo){ object_memory.for_each([](Lisp_Object* lo){
switch (lo->type) { switch (lo->type) {
case Lisp_Object_Type::Continuation: { case Lisp_Object_Type::Continuation: {
-8
View File
@@ -551,14 +551,6 @@ namespace Slime {
profile_this(); profile_this();
bool result = true; 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( push_environment(Memory::create_child_environment(
get_current_environment())); get_current_environment()));
printf("-- Util --\n"); printf("-- Util --\n");