Index: /trunk/source/lisp-kernel/ppc-gc.c
===================================================================
--- /trunk/source/lisp-kernel/ppc-gc.c	(revision 8400)
+++ /trunk/source/lisp-kernel/ppc-gc.c	(revision 8401)
@@ -303,6 +303,5 @@
           ((hash_table_vector_header *) base)->cache_key = undefined;
           ((hash_table_vector_header *) base)->cache_value = lisp_nil;
-	  deref(ptr_to_lispobj(base),1) = GCweakvll;
-	  GCweakvll = n;
+          mark_weak_htabv(n);
 	  return;
 	}
@@ -563,6 +562,5 @@
           ((hash_table_vector_header *) base)->cache_key = undefined;
           ((hash_table_vector_header *) base)->cache_value = lisp_nil;
-	  deref(ptr_to_lispobj(base),1) = GCweakvll;
-	  GCweakvll = n;
+	  mark_weak_htabv(n);
 	  return;
 	}
@@ -732,8 +730,6 @@
           ((hash_table_vector_header *) base)->cache_key = undefined;
           ((hash_table_vector_header *) base)->cache_value = lisp_nil;
-	  
-	  deref(ptr_to_lispobj(base),1) = GCweakvll;
-	  GCweakvll = this;
-	  goto Climb;
+	  dws_mark_weak_htabv(this);
+	  element_count = hash_table_vector_header_count;
 	}
       }
@@ -990,7 +986,5 @@
           ((hash_table_vector_header *) start)->cache_key = undefined;
           ((hash_table_vector_header *) start)->cache_value = lisp_nil;
-        
-	  start[1] = GCweakvll;
-	  GCweakvll = (LispObj) (((natural) start) + fulltag_misc);
+	  mark_weak_htabv((LispObj)start);
 	  element_count = 0;
 	}
