summaryrefslogtreecommitdiff
path: root/pit/src/runtime/symtab.c
diff options
context:
space:
mode:
authorLLLL Colonq <llll@colonq>2026-09-02 21:13:24 -0400
committerLLLL Colonq <llll@colonq>2026-09-02 21:13:24 -0400
commitc01f847b68a7fcd48eb0f3d456aa993a6f69ea8d (patch)
tree9da9636f6f390950f052c14b64f833ac1819d5cc /pit/src/runtime/symtab.c
parenta107593b6b362fb68e409c9d7b79427776d137d7 (diff)
pit: Debug x86.pitHEADmaster
Diffstat (limited to 'pit/src/runtime/symtab.c')
-rw-r--r--pit/src/runtime/symtab.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/pit/src/runtime/symtab.c b/pit/src/runtime/symtab.c
index ca4ecf2..5684074 100644
--- a/pit/src/runtime/symtab.c
+++ b/pit/src/runtime/symtab.c
@@ -104,8 +104,12 @@ void pit_symtab_symbol_mark_special_form(pit_runtime *rt, pit_value sym) {
if (!ent) { pit_error(rt, "bad symbol"); return; }
ent->is_special_form = true;
}
+#include <stdio.h>
void pit_symtab_bind(pit_runtime *rt, pit_value sym, pit_value cell) {
/* although we cannot set frozen symbols, we can still bind them temporarily - no need to check */
+ fprintf(stderr, "binding "); pit_dump_to_file(rt, stderr, sym, false);
+ fprintf(stderr, " to "); pit_dump_to_file(rt, stderr, cell, false);
+ fprintf(stderr, "\n");
pit_symtab_entry *ent = pit_symtab_lookup(rt, sym);
if (!ent) { pit_error(rt, "bad symbol"); return; }
if (pit_vec_push(pit_value)(rt->saved_bindings, ent->value) < 0) pit_error(rt, "binding stack overflow");
@@ -115,6 +119,9 @@ pit_value pit_symtab_unbind(pit_runtime *rt, pit_value sym) {
pit_symtab_entry *ent = pit_symtab_lookup(rt, sym);
if (!ent) { pit_error(rt, "bad symbol"); return PIT_NIL; }
pit_value old = ent->value;
+ fprintf(stderr, "unbinding "); pit_dump_to_file(rt, stderr, sym, false);
+ fprintf(stderr, " (was "); pit_dump_to_file(rt, stderr, old, false);
+ fprintf(stderr, ")\n");
if (pit_vec_pop(pit_value)(rt->saved_bindings, &ent->value) < 0) pit_error(rt, "binding stack underflow");
return old;
}