0.9.10.8:
authorChristophe Rhodes <csr21@cam.ac.uk>
Tue, 28 Feb 2006 14:22:54 +0000 (14:22 +0000)
committerChristophe Rhodes <csr21@cam.ac.uk>
Tue, 28 Feb 2006 14:22:54 +0000 (14:22 +0000)
Maybe fix some gc problems on ppc/gencgc?
... there's a workaround for non-descriptors in descriptor
registers which was previously !GENCGC but in fact should
have been !CONSERVATIVE or possibly !PARTITIONED_REGISTERS.
... whitespace in target-char.lisp

src/code/target-char.lisp
src/runtime/gc-common.c
version.lisp-expr

index 3b7eea7..680afcc 100644 (file)
@@ -68,9 +68,9 @@
                           while code-point
                           do (setf (gethash code-point names) char-name))
                        (let ((tree
                           while code-point
                           do (setf (gethash code-point names) char-name))
                        (let ((tree
-                             #!+sb-unicode
-                              (make-huffman-tree
-                               (let (list)
+                              #!+sb-unicode
+                               (make-huffman-tree
+                                (let (list)
                                       (maphash (lambda (code name)
                                                  (declare (ignore code))
                                                  (push name list))
                                       (maphash (lambda (code name)
                                                  (declare (ignore code))
                                                  (push name list))
index 992e365..37555f9 100644 (file)
@@ -156,25 +156,28 @@ scavenge(lispobj *start, long n_words)
                 n_words_scavenged = 1;
             }
         }
                 n_words_scavenged = 1;
             }
         }
-#ifndef LISP_FEATURE_GENCGC
-        /* this workaround is probably not necessary for gencgc; at least, the
-         * behaviour it describes has never been reported */
-        else if (n_words==1) {
-            /* there are some situations where an
-               other-immediate may end up in a descriptor
-               register.  I'm not sure whether this is
-               supposed to happen, but if it does then we
+#if !defined(LISP_FEATURE_X86) && !defined(LISP_FEATURE_X86_64)
+       /* This workaround is probably not needed for those ports
+          which don't have a partitioned register set (and therefore
+          scan the stack conservatively for roots). */
+        else if (n_words == 1) {
+            /* there are some situations where an other-immediate may
+               end up in a descriptor register.  I'm not sure whether
+               this is supposed to happen, but if it does then we
                don't want to (a) barf or (b) scavenge over the
                don't want to (a) barf or (b) scavenge over the
-               data-block, because there isn't one.  So, if
-               we're checking a single word and it's anything
-               other than a pointer, just hush it up */
-            int type=widetag_of(object);
-            n_words_scavenged=1;
-
-            if ((scavtab[type]==scav_lose) ||
-                (((scavtab[type])(start,object))>1)) {
-                fprintf(stderr,"warning: attempted to scavenge non-descriptor value %x at %p.  If you can\nreproduce this warning, send a bug report (see manual page for details)\n",
-                        object,start);
+               data-block, because there isn't one.  So, if we're
+               checking a single word and it's anything other than a
+               pointer, just hush it up */
+            int widetag = widetag_of(object);
+            n_words_scavenged = 1;
+
+            if ((scavtab[widetag] == scav_lose) ||
+                (((sizetab[widetag])(object_ptr)) > 1)) {
+                fprintf(stderr,"warning: \
+attempted to scavenge non-descriptor value %x at %p.\n\n\
+If you can reproduce this warning, please send a bug report\n\
+(see manual page for details).\n",
+                        object, object_ptr);
             }
         }
 #endif
             }
         }
 #endif
index b1e6d9c..87a3031 100644 (file)
@@ -17,4 +17,4 @@
 ;;; checkins which aren't released. (And occasionally for internal
 ;;; versions, especially for internal versions off the main CVS
 ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
 ;;; checkins which aren't released. (And occasionally for internal
 ;;; versions, especially for internal versions off the main CVS
 ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.9.10.7"
+"0.9.10.8"