[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