From d13269fc5239b0cd475047cffcb9735baa549bca Mon Sep 17 00:00:00 2001 From: David Schmenk Date: Fri, 2 Aug 2024 10:03:28 -0700 Subject: [PATCH] Dump symbols --- images/apple/DRAWL.po | Bin 143360 -> 143360 bytes src/lisp/s-expr.pla | 40 ++++++++++++++++++++++++++++++++++++++-- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/images/apple/DRAWL.po b/images/apple/DRAWL.po index ae06e4b598c461731af491b99299b9be7b6c0a71..668f8e295d534343ea6a5e04473a817ec6b0d85f 100644 GIT binary patch delta 7197 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 TQ?xanF&d>h^lYFti6#9XXn!R= delta 7139 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 diff --git a/src/lisp/s-expr.pla b/src/lisp/s-expr.pla index 4f5a1db..5046a0a 100644 --- a/src/lisp/s-expr.pla +++ b/src/lisp/s-expr.pla @@ -119,7 +119,7 @@ predef eval_expr(expr)#1 // Use the sweep_stack to temporarily keep a reference to these elements. // -const SWEEPSTACK_MAX = 64 +const SWEEPSTACK_MAX = 16 byte sweep_stack_top = 0 var sweep_stack[SWEEPSTACK_MAX] // In-flight expressions @@ -429,7 +429,7 @@ end export def new_sym(symstr)#1 var symptr, index - index = (^symstr ^ ((^(symstr+1) << 1) ^ ^(symstr+1 + ^symstr / 2) << 2)) & HASH_MASK + index = (^symstr ^ ^(symstr + 1 + ^symstr/2) << 2) & HASH_MASK symptr = match_sym(symstr, hashtbl[index]) if symptr; return symptr; fin // Return already existing symbol symptr = new(t_sym + ^symstr) @@ -1280,6 +1280,41 @@ def natv_print(symptr, expr) return expr end +def natv_syms(symptr, expr) + var count + byte h + + count = 0 + for h = 0 to HASH_SIZE-1 + symptr = hashtbl[h] + puti(h); puts(" -----\n") + while symptr + // + // Sweep symbol properties + // + print_atom(symptr); putc(':') + if symptr=>natv + puts("NATIVE") + elsif symptr=>lambda + print_expr(symptr=>lambda) + elsif symptr=>apval + print_expr(symptr=>apval ^ NULL_HACK) + elsif symptr=>array + print_expr(symptr) + elsif symptr=>array + print_expr(assoc(symptr)) + fin + putln + count++ + if !(count & 15) + getc() + fin + symptr = symptr=>link + loop + next + return new_int(count, 0) // Total symbols +end + def natv_eval(symptr, expr) return eval_expr(eval_expr(expr=>car)) end @@ -1670,6 +1705,7 @@ new_sym(":=")=>natv = @natv_csetq new_sym("PRHEX")=>natv = @natv_prhex new_sym("PRIN")=>natv = @natv_prin new_sym("PRINT")=>natv = @natv_print +new_sym("SYMS")=>natv = @natv_syms new_sym("EVAL")=>natv = @natv_eval new_sym("TRACE")=>natv = @natv_trace new_sym("FOR")=>natv = @natv_for