Index: /trunk/source/lisp-kernel/ppc-gc.c
===================================================================
--- /trunk/source/lisp-kernel/ppc-gc.c	(revision 8247)
+++ /trunk/source/lisp-kernel/ppc-gc.c	(revision 8248)
@@ -303,8 +303,8 @@
           ((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;
-        return;
+	  deref(ptr_to_lispobj(base),1) = GCweakvll;
+	  GCweakvll = n;
+	  return;
+	}
       }
 
@@ -563,8 +563,8 @@
           ((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;
-        return;
+	  deref(ptr_to_lispobj(base),1) = GCweakvll;
+	  GCweakvll = n;
+	  return;
+	}
       }
 
@@ -732,9 +732,9 @@
           ((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;
+	  
+	  deref(ptr_to_lispobj(base),1) = GCweakvll;
+	  GCweakvll = this;
+	  goto Climb;
+	}
       }
 
@@ -990,29 +990,28 @@
           ((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);
-      } else {
-
-        if (subtag == subtag_pool) {
-          start[1] = lisp_nil;
-        }
-
-        if (subtag == subtag_weak) {
-          natural weak_type = (natural) start[2];
-          if (weak_type >> population_termination_bit)
-            element_count -= 2;
-          else
-            element_count -= 1; 
-          start[1] = GCweakvll;
-          GCweakvll = (LispObj) (((natural) start) + fulltag_misc);    
-        }
-
-        base = start + element_count + 1;
-        while(element_count--) {
-          mark_root(*--base);
-        }
-      }
+        
+	  start[1] = GCweakvll;
+	  GCweakvll = (LispObj) (((natural) start) + fulltag_misc);
+	  element_count = 0;
+	}
+      }
+      if (subtag == subtag_pool) {
+	start[1] = lisp_nil;
+      }
+
+      if (subtag == subtag_weak) {
+	natural weak_type = (natural) start[2];
+	if (weak_type >> population_termination_bit)
+	  element_count -= 2;
+	else
+	  element_count -= 1; 
+	start[1] = GCweakvll;
+	GCweakvll = (LispObj) (((natural) start) + fulltag_misc);    
+      }
+
+      base = start + element_count + 1;
+      while(element_count--) {
+	mark_root(*--base);
+      }   
       start += size;
     }
Index: /trunk/source/lisp-kernel/x86-gc.c
===================================================================
--- /trunk/source/lisp-kernel/x86-gc.c	(revision 8247)
+++ /trunk/source/lisp-kernel/x86-gc.c	(revision 8248)
@@ -998,31 +998,29 @@
           ((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);
-      } else {
-
-        if (subtag == subtag_pool) {
-          start[1] = lisp_nil;
-        }
-
-        if (subtag == subtag_weak) {
-          natural weak_type = (natural) start[2];
-          if (weak_type >> population_termination_bit)
-            element_count -= 2;
-          else
-            element_count -= 1; 
-          start[1] = GCweakvll;
-          GCweakvll = (LispObj) (((natural) start) + fulltag_misc);    
-        }
-
-        base = start + element_count + 1;
-	if (subtag == subtag_function) {
-	  element_count -= (int)start[1];
+	  start[1] = GCweakvll;
+	  GCweakvll = (LispObj) (((natural) start) + fulltag_misc);
+	  element_count = 0;
 	}
-        while(element_count--) {
-          mark_root(*--base);
-        }
+      } 
+      if (subtag == subtag_pool) {
+	start[1] = lisp_nil;
+      }
+
+      if (subtag == subtag_weak) {
+	natural weak_type = (natural) start[2];
+	if (weak_type >> population_termination_bit)
+	  element_count -= 2;
+	else
+	  element_count -= 1; 
+	start[1] = GCweakvll;
+	GCweakvll = (LispObj) (((natural) start) + fulltag_misc);    
+      }
+
+      base = start + element_count + 1;
+      if (subtag == subtag_function) {
+	element_count -= (int)start[1];
+      }
+      while(element_count--) {
+	mark_root(*--base);
       }
       start += size;
