X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fseqtran.lisp;h=28da4444f2e8ae243a78b073f999e5895baa30e1;hb=83ce01b419da19b549eb76b0c3451f2b32a266d5;hp=3d4dc91c68093ee3f145f0d687d75e73777a7247;hpb=9520c5d03ff1dbc861054183eef7ab5620d3e217;p=sbcl.git diff --git a/src/compiler/seqtran.lisp b/src/compiler/seqtran.lisp index 3d4dc91..28da444 100644 --- a/src/compiler/seqtran.lisp +++ b/src/compiler/seqtran.lisp @@ -364,7 +364,8 @@ `(%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)) @@ -381,6 +382,9 @@ (deftransform assoc ((item list &key key test test-not) * * :node node) (transform-list-item-seek 'assoc item list key test test-not node)) +(deftransform adjoin ((item list &key key test test-not) * * :node node) + (transform-list-item-seek 'adjoin item list key test test-not node)) + (deftransform memq ((item list) (t (constant-arg list))) (labels ((rec (tail) (if tail