* Explicit VALUE-CELLs are only used if a closure that refers
to a mutable LAMBDA-VAR has indefinite extent, implying that the
reference itself has indefinite extent. In such cases, dynamic
extent allocation of the VALUE-CELL is contraindicated.
* Remove most of the logic from EMIT-MAKE-VALUE-CELL, leaving
only the statistics-tracking (EVENT) and the VOP emission,
forcing the new VALUE-CELL to be heap-allocated.
(defevent make-value-cell-event "Allocate heap value cell for lexical var.")
(defun emit-make-value-cell (node block value res)
(event make-value-cell-event node)
- (let* ((leaf (tn-leaf res))
- (dx (when leaf (leaf-dynamic-extent leaf))))
- (when (and dx (neq :truly dx) (leaf-has-source-name-p leaf))
- (compiler-notify "cannot stack allocate value cell for ~S" (leaf-source-name leaf)))
- (vop make-value-cell node block value
- ;; FIXME: See bug 419
- (eq :truly dx)
- res)))
+ (vop make-value-cell node block value nil res))
\f
;;;; leaf reference
;;; 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.44.15"
+"1.0.44.16"