1.0.23.67: Fix MIPS FIXED-ALLOC VOP.
authorThiemo Seufer <ths@networkno.de>
Thu, 25 Dec 2008 20:36:19 +0000 (20:36 +0000)
committerThiemo Seufer <ths@networkno.de>
Thu, 25 Dec 2008 20:36:19 +0000 (20:36 +0000)
  * No observable change in behaviour. Apparently nothing ever allocates
    a non-pointer referenced object via this code path.

src/compiler/mips/alloc.lisp
version.lisp-expr

index 9d1461b..4c37b2c 100644 (file)
              (inst or result csp-tn lowtag)
              (inst addu csp-tn (pad-data-block words)))
             (t
-             (inst or result alloc-tn lowtag)))
+             ;; The pseudo-atomic bit in alloc-tn is set.  If the
+             ;; lowtag also has a 1 bit in the same position, we're all
+             ;; set.  Otherwise, we need to subtract the pseudo-atomic
+             ;; bit.
+             (inst or result alloc-tn (if (logbitp 0 lowtag) lowtag
+                                                             (1- lowtag)))))
       (when type
         (inst li temp (logior (ash (1- words) n-widetag-bits) type))
         (storew temp result 0 lowtag)))))
index 3711650..b8c9908 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".)
-"1.0.23.66"
+"1.0.23.67"