sbcl-0.8.14.11:
[sbcl.git] / src / compiler / x86 / alloc.lisp
index a0ec28b..1278d10 100644 (file)
 (in-package "SB!VM")
 \f
 ;;;; LIST and LIST*
+(defoptimizer (list stack-allocate-result) ((&rest args))
+  (not (null args)))
+(defoptimizer (list* stack-allocate-result) ((&rest args))
+  (not (null (rest args))))
 
 (define-vop (list-or-list*)
   (:args (things :more t))
@@ -40,7 +44,8 @@
                     (storew reg ,list ,slot list-pointer-lowtag))))
             (let ((cons-cells (if star (1- num) num)))
               (pseudo-atomic
-               (allocation res (* (pad-data-block cons-size) cons-cells) node)
+               (allocation res (* (pad-data-block cons-size) cons-cells) node
+                            (awhen (sb!c::node-lvar node) (sb!c::lvar-dynamic-extent it)))
                (inst lea res
                      (make-ea :byte :base res :disp list-pointer-lowtag))
                (move ptr res)