From: Alastair Bridgewater Date: Tue, 9 Nov 2010 19:45:36 +0000 (+0000) Subject: 1.0.44.16: ir2tran: Don't try to stack-allocate VALUE-CELLs. X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=48646de2e4e6f4af41b0139419ec3cbb4ba76a4e;p=sbcl.git 1.0.44.16: 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. --- diff --git a/src/compiler/ir2tran.lisp b/src/compiler/ir2tran.lisp index d518f0c..bedbda8 100644 --- a/src/compiler/ir2tran.lisp +++ b/src/compiler/ir2tran.lisp @@ -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 diff --git a/version.lisp-expr b/version.lisp-expr index c73fcc4..2d86753 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -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".) -"1.0.44.15" +"1.0.44.16"