projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
0.9.15.22: check for error, do not aver, do not collect $200
[sbcl.git]
/
src
/
compiler
/
locall.lisp
diff --git
a/src/compiler/locall.lisp
b/src/compiler/locall.lisp
index
ceff522
..
f480fcf
100644
(file)
--- a/
src/compiler/locall.lisp
+++ b/
src/compiler/locall.lisp
@@
-274,7
+274,8
@@
;;; do LET conversion here.
(defun locall-analyze-fun-1 (fun)
(declare (type functional fun))
;;; do LET conversion here.
(defun locall-analyze-fun-1 (fun)
(declare (type functional fun))
- (let ((refs (leaf-refs fun)))
+ (let ((refs (leaf-refs fun))
+ (local-p t))
(dolist (ref refs)
(let* ((lvar (node-lvar ref))
(dest (when lvar (lvar-dest lvar))))
(dolist (ref refs)
(let* ((lvar (node-lvar ref))
(dest (when lvar (lvar-dest lvar))))
@@
-286,9
+287,12
@@
(convert-call-if-possible ref dest)
(unless (eq (basic-combination-kind dest) :local)
(convert-call-if-possible ref dest)
(unless (eq (basic-combination-kind dest) :local)
- (reference-entry-point ref)))
+ (reference-entry-point ref)
+ (setq local-p nil)))
(t
(t
- (reference-entry-point ref)))))))
+ (reference-entry-point ref)
+ (setq local-p nil))))))
+ (when local-p (note-local-functional fun)))
(values))
(values))
@@
-828,7
+832,8
@@
(depart-from-tail-set clambda)
(let* ((home (node-home-lambda call))
(depart-from-tail-set clambda)
(let* ((home (node-home-lambda call))
- (home-physenv (lambda-physenv home)))
+ (home-physenv (lambda-physenv home))
+ (physenv (lambda-physenv clambda)))
(aver (not (eq home clambda)))
(aver (not (eq home clambda)))
@@
-837,6
+842,11
@@
(setf (lambda-home clambda) home)
(setf (lambda-physenv clambda) home-physenv)
(setf (lambda-home clambda) home)
(setf (lambda-physenv clambda) home-physenv)
+ (when physenv
+ (setf (physenv-nlx-info home-physenv)
+ (nconc (physenv-nlx-info physenv)
+ (physenv-nlx-info home-physenv))))
+
;; All of CLAMBDA's LETs belong to HOME now.
(let ((lets (lambda-lets clambda)))
(dolist (let lets)
;; All of CLAMBDA's LETs belong to HOME now.
(let ((lets (lambda-lets clambda)))
(dolist (let lets)