[Openmcl-cvs-notifications] r10824 - /trunk/source/lisp-kernel/ppc-gc.c

gz at clozure.com gz at clozure.com
Mon Sep 22 11:11:25 EDT 2008


Author: gz
Date: Mon Sep 22 11:11:24 2008
New Revision: 10824

Log:
PPC part of r10813

Modified:
    trunk/source/lisp-kernel/ppc-gc.c

Modified: trunk/source/lisp-kernel/ppc-gc.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/lisp-kernel/ppc-gc.c (original)
+++ trunk/source/lisp-kernel/ppc-gc.c Mon Sep 22 11:11:24 2008
@@ -557,6 +557,25 @@
            weak in some sense.
         */
         LispObj flags =3D ((hash_table_vector_header *) base)->flags;
+
+        if ((flags & nhash_keys_frozen_mask) &&
+            (((hash_table_vector_header *) base)->deleted_count > 0)) {
+          /* We're responsible for clearing out any deleted keys, since
+             lisp side can't do it without breaking the state machine
+          */
+          LispObj *pairp =3D base + hash_table_vector_header_count;
+          natural
+            npairs =3D (element_count - (hash_table_vector_header_count - =
1)) >> 1;
+
+          while (npairs--) {
+            if ((pairp[1] =3D=3D unbound) && (pairp[0] !=3D unbound)) {
+              pairp[0] =3D slot_unbound;
+            }
+            pairp +=3D2;
+          }
+          ((hash_table_vector_header *) base)->deleted_count =3D 0;
+        }
+
 =

         if (flags & nhash_weak_mask) {
           ((hash_table_vector_header *) base)->cache_key =3D undefined;



More information about the Openmcl-cvs-notifications mailing list