1.0.16.15: fix TRANSFORM-LIST-ITEM-SEEK for ADJOIN with constant list arg
authorNikodemus Siivola <nikodemus@random-state.net>
Sun, 4 May 2008 15:06:37 +0000 (15:06 +0000)
committerNikodemus Siivola <nikodemus@random-state.net>
Sun, 4 May 2008 15:06:37 +0000 (15:06 +0000)
 * Urk, missed a spot. There is probably little sense to open code ADJOIN
   like ASSOC and MEMBER, so let's not.

 * Tests.

src/compiler/seqtran.lisp
tests/list.pure.lisp
version.lisp-expr

index 4c5e02d..28da444 100644 (file)
                      `(%coerce-callable-to-fun ,fun))))
         (let* ((cp (constant-lvar-p list))
                (c-list (when cp (lvar-value list))))
-          (cond ((and cp c-list (policy node (>= speed space)))
+          (cond ((and cp c-list (member name '(assoc member))
+                      (policy node (>= speed space)))
                  `(let ,(mapcar (lambda (fun) `(,fun ,(ensure-fun fun))) funs)
                     ,(open-code c-list)))
                 ((and cp (not c-list))
index 66882ea..921500d 100644 (file)
 (assert (equal '((:b))
                (let ((sb-ext:*evaluator-mode* :interpret))
                  (eval '(adjoin (list 'b) (list '(:b)) :key #'car :test #'string=)))))
+
+;;; constant list argument to ADJOIN
+(assert (equal '(:x :y) (funcall
+                         (compile nil '(lambda (elt)
+                                        (declare (optimize speed))
+                                        (adjoin elt '(:x :y))))
+                         ':x)))
+(assert (equal '(:x :y) (funcall
+                         (compile nil '(lambda (elt)
+                                        (declare (optimize speed))
+                                        (adjoin elt '(:y))))
+                         ':x)))
index 1803b76..0424d81 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.16.14"
+"1.0.16.15"