projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
1.0.32.12: Fix slot-value on specialized parameters in SVUC methods
[sbcl.git]
/
src
/
compiler
/
ir2tran.lisp
diff --git
a/src/compiler/ir2tran.lisp
b/src/compiler/ir2tran.lisp
index
cc74cca
..
4796850
100644
(file)
--- a/
src/compiler/ir2tran.lisp
+++ b/
src/compiler/ir2tran.lisp
@@
-56,10
+56,13
@@
(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)
(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)))
+ (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
(vop make-value-cell node block value
;; FIXME: See bug 419
- (and leaf (eq :truly (leaf-dynamic-extent leaf)))
+ (eq :truly dx)
res)))
\f
;;;; leaf reference
res)))
\f
;;;; leaf reference
@@
-252,7
+255,11
@@
(vop current-stack-pointer call 2block
(ir2-lvar-stack-pointer (lvar-info leaves))))
(dolist (leaf (lvar-value leaves))
(vop current-stack-pointer call 2block
(ir2-lvar-stack-pointer (lvar-info leaves))))
(dolist (leaf (lvar-value leaves))
- (binding* ((xep (functional-entry-fun leaf) :exit-if-null)
+ (binding* ((xep (awhen (functional-entry-fun leaf)
+ ;; if the xep's been deleted then we can skip it
+ (if (eq (functional-kind it) :deleted)
+ nil it))
+ :exit-if-null)
(nil (aver (xep-p xep)))
(entry-info (lambda-info xep) :exit-if-null)
(tn (entry-info-closure-tn entry-info) :exit-if-null)
(nil (aver (xep-p xep)))
(entry-info (lambda-info xep) :exit-if-null)
(tn (entry-info-closure-tn entry-info) :exit-if-null)