do (etypecase what
(cons
(let ((lvar (cdr what)))
- (if (lvar-good-for-dx-p lvar (car what) component)
- (let ((real (principal-lvar lvar)))
- (setf (lvar-dynamic-extent real) cleanup)
- (real-dx-lvars real))
- (setf (lvar-dynamic-extent lvar) nil))))
+ (cond ((lvar-good-for-dx-p lvar (car what) component)
+ (let ((real (principal-lvar lvar)))
+ (setf (lvar-dynamic-extent real) cleanup)
+ (real-dx-lvars real)))
+ (t
+ (note-no-stack-allocation lvar)
+ (setf (lvar-dynamic-extent lvar) nil)))))
(node ; DX closure
(let* ((call what)
(arg (first (basic-combination-args call)))