Skip to content

Commit

Permalink
1.0.44.16: ir2tran: Don't try to stack-allocate VALUE-CELLs.
Browse files Browse the repository at this point in the history
  * 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
Alastair Bridgewater committed Nov 9, 2010
1 parent c097dfd commit 48646de
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 9 deletions.
9 changes: 1 addition & 8 deletions src/compiler/ir2tran.lisp
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
2 changes: 1 addition & 1 deletion version.lisp-expr
Original file line number Diff line number Diff line change
Expand Up @@ -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"

0 comments on commit 48646de

Please sign in to comment.