summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/library.c7
-rw-r--r--src/runtime.c4
2 files changed, 9 insertions, 2 deletions
diff --git a/src/library.c b/src/library.c
index 7c63066..5176874 100644
--- a/src/library.c
+++ b/src/library.c
@@ -805,6 +805,11 @@ void pit_install_library_essential(pit_runtime *rt) {
pit_fset(rt, pit_intern_cstr(rt, "bitwise/rshift"), pit_nativefunc_new(rt, impl_bitwise_rshift));
}
+static pit_value impl_diagnostics(pit_runtime *rt, pit_value args) {
+ (void) args;
+ fprintf(stderr, "value allocs: %ld\n", rt->values->next);
+ return PIT_NIL;
+}
static pit_value impl_print(pit_runtime *rt, pit_value args) {
pit_value x = pit_car(rt, args);
char buf[1024] = {0};
@@ -844,6 +849,8 @@ static pit_value impl_load(pit_runtime *rt, pit_value args) {
return ret;
}
void pit_install_library_io(pit_runtime *rt) {
+ /* diagnostics */
+ pit_fset(rt, pit_intern_cstr(rt, "diagnostics!"), pit_nativefunc_new(rt, impl_diagnostics));
/* stream IO */
pit_fset(rt, pit_intern_cstr(rt, "print!"), pit_nativefunc_new(rt, impl_print));
pit_fset(rt, pit_intern_cstr(rt, "princ!"), pit_nativefunc_new(rt, impl_princ));
diff --git a/src/runtime.c b/src/runtime.c
index 1c0e6e1..fea53dd 100644
--- a/src/runtime.c
+++ b/src/runtime.c
@@ -1310,11 +1310,11 @@ void pit_run_file(pit_runtime *rt, char *path) {
if (pit_runtime_print_error(rt)) exit(1);
pit_eval(rt, p);
if (pit_runtime_print_error(rt)) exit(1);
- // pit_collect_garbage(rt);
+ pit_collect_garbage(rt);
if (pit_runtime_print_error(rt)) exit(1);
}
if (pit_runtime_print_error(rt)) exit(1);
- fprintf(stderr, "value allocations: %ld\n", rt->values->next);
+ fprintf(stderr, "value allocs at exit: %ld\n", rt->values->next);
}
void pit_repl(pit_runtime *rt) {