summaryrefslogtreecommitdiff
path: root/garbage.c
diff options
context:
space:
mode:
authorPeter Mikkelsen <peter@pmikkelsen.com>2021-07-16 00:42:49 +0000
committerPeter Mikkelsen <peter@pmikkelsen.com>2021-07-16 00:42:49 +0000
commit1c8789198373a52da9e80dc9b2b1ee2b67af61c4 (patch)
tree980040a8d1828a85428b175eef9f6a4106248309 /garbage.c
parent2a77288e28f2725b5621c239d2393d49f61993e8 (diff)
Make operators local to each module, and implement some more correct prettyprint code, used by write_term
Diffstat (limited to 'garbage.c')
-rw-r--r--garbage.c12
1 files changed, 12 insertions, 0 deletions
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