1.0.23.21: Stack allocated conses for MIPS.
authorThiemo Seufer <ths@networkno.de>
Fri, 5 Dec 2008 07:01:39 +0000 (07:01 +0000)
committerThiemo Seufer <ths@networkno.de>
Fri, 5 Dec 2008 07:01:39 +0000 (07:01 +0000)
src/compiler/generic/vm-ir2tran.lisp
src/compiler/mips/alloc.lisp
version.lisp-expr

index de0299a..40eb40c 100644 (file)
     t))
 
 ;;; ...conses
-#!+(or x86 x86-64)
+#!+(or mips x86 x86-64)
 (defoptimizer (cons stack-allocate-result) ((&rest args) node dx)
   (declare (ignore node dx))
   t)
index fdca339..dd9b304 100644 (file)
 (define-vop (fixed-alloc)
   (:args)
   (:info name words type lowtag stack-allocate-p)
-  (:ignore name stack-allocate-p)
+  (:ignore name)
   (:results (result :scs (descriptor-reg)))
   (:temporary (:scs (non-descriptor-reg)) temp)
   (:temporary (:sc non-descriptor-reg :offset nl4-offset) pa-flag)
   (:generator 4
-    (pseudo-atomic (pa-flag :extra (pad-data-block words))
-      (inst or result alloc-tn lowtag)
+    (pseudo-atomic (pa-flag :extra (if stack-allocate-p
+                                       0
+                                       (pad-data-block words)))
+      (cond (stack-allocate-p
+             (align-csp result)
+             (inst or result csp-tn lowtag)
+             (inst addu csp-tn (pad-data-block words)))
+            (t
+             (inst or result alloc-tn lowtag)))
       (when type
         (inst li temp (logior (ash (1- words) n-widetag-bits) type))
         (storew temp result 0 lowtag)))))
index 9e69c58..2f722e4 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.20"
+"1.0.23.21"