From c01f847b68a7fcd48eb0f3d456aa993a6f69ea8d Mon Sep 17 00:00:00 2001 From: LLLL Colonq Date: Wed, 2 Sep 2026 21:13:24 -0400 Subject: pit: Debug x86.pit --- pit/src/runtime/symtab.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'pit/src/runtime/symtab.c') 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 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; } -- cgit v1.3.1