diff -ruN klic-3.003-2002-02-19e/compiler/obj.kl1 klic-3.003-2002-02-20/compiler/obj.kl1
--- klic-3.003-2002-02-19e/compiler/obj.kl1	Wed Jan 23 16:42:17 2002
+++ klic-3.003-2002-02-20/compiler/obj.kl1	Wed Feb 20 10:16:11 2002
@@ -191,9 +191,13 @@
 write_one( throw_goal( Node, Q0, Q ), _ )-H-Out :-
   klicformat( "  throw_goal( ~r, ~r, ~r );\n", [Node, Q0, Q] )-Out.
 write_one( enq_at_prio( P, Q0, Q ), _ )-H-Out :-
-  klicformat( "  enqueue_at_priority( ~k, ~r, ~r );\n", [P, Q0, Q] )-Out.
+  klicformat(
+    "  set_heapp(allocp);\n"
+    "  enqueue_at_priority( ~k, ~r, ~r );\n", [P, Q0, Q] )-Out.
 write_one( enq_at_lower_prio( P, Q0, Q ), _ )-H-Out :-
-  klicformat( "  enqueue_at_lower_priority( ~k, ~r, ~r );\n", [P, Q0, Q] )-Out.
+  klicformat(
+    "  set_heapp(allocp);\n"
+    "  enqueue_at_lower_priority( ~k, ~r, ~r );\n", [P, Q0, Q] )-Out.
 write_one( enq_at_prio_no_check( P, Q0, Q ), _ )-H-Out :-
   klicformat( "  enqueue_at_priority_no_check( ~k, ~r, ~r );\n",
     [P, Q0, Q] )-Out.
diff -ruN klic-3.003-2002-02-19e/runtime/gc.c klic-3.003-2002-02-20/runtime/gc.c
--- klic-3.003-2002-02-19e/runtime/gc.c	Tue Feb 19 17:06:27 2002
+++ klic-3.003-2002-02-20/runtime/gc.c	Wed Feb 20 10:20:16 2002
@@ -500,7 +500,6 @@
 {
   declare_globals;
   int k;
-  q *allocp, *ntop, *otop;
   unsigned long nsize, osize;
   struct prioqrec* pq = prioq.next;
 
@@ -565,15 +564,12 @@
   }
 #endif /* SHM */
 
-  allocp = ntop = heaptop = new_space_top();
-  otop = old_space_top();
-  real_heapbytesize = nsize = new_space_size();
-  osize = old_space_size();
-  real_heaplimit = allocp+heapsize;
+  set_heapp(heaptop = new_space_top());
+  real_heapbytesize = new_space_size();
+  real_heaplimit = heapp() + heapsize;
   heaplimit = (interrupt_off ? real_heaplimit : 0);
   heapbottom = real_heaplimit + incrementsize;
 
-  set_heapp(allocp);
   for( k=0; k<num_gc_hooks(); k++ ){
     ((gc_t) gc_hook_table(k))();
   }
