From 1c8789198373a52da9e80dc9b2b1ee2b67af61c4 Mon Sep 17 00:00:00 2001 From: Peter Mikkelsen Date: Fri, 16 Jul 2021 00:42:49 +0000 Subject: Make operators local to each module, and implement some more correct prettyprint code, used by write_term --- garbage.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'garbage.c') diff --git a/garbage.c b/garbage.c index d2138d9..212c171 100644 --- a/garbage.c +++ b/garbage.c @@ -27,6 +27,7 @@ static void markpredicates(Predicate *); static void markclauses(Clause *); static void markterm(Term *); static void markbindings(Binding *); +static void markoperators(Operator *); static Allocation *allocationtab[TableSize]; @@ -128,9 +129,12 @@ static void markmodules(void) { Module *m; + int i; for(m = modules; m != nil; m = m->next){ mark(m); markpredicates(m->predicates); + for(i = 0; i < PrecedenceLevels; i++) + markoperators(m->operators[i]); } } @@ -196,4 +200,12 @@ markbindings(Binding *bindings) mark(b); markterm(b->value); } +} + +static void +markoperators(Operator *ops) +{ + Operator *op; + for(op = ops; op != nil; op = op->next) + mark(op); } \ No newline at end of file -- cgit v1.2.3