Browse files ir2tran: Don't try to stack-allocate VALUE-CELLs.

  * 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.
  • Loading branch information...
1 parent c097dfd commit 48646de2e4e6f4af41b0139419ec3cbb4ba76a4e Alastair Bridgewater committed Nov 9, 2010
Showing with 2 additions and 9 deletions.
  1. +1 −8 src/compiler/ir2tran.lisp
  2. +1 −1 version.lisp-expr
@@ -56,14 +56,7 @@
(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))
;;;; leaf reference
@@ -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".)

0 comments on commit 48646de

Please sign in to comment.