X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fgtn.lisp;h=4a3352f6ef173aba8ef0e8ceae2b16e8c7ec0e9b;hb=77c80b85dc9ae9bde0692d4193187bfca507b936;hp=b954bb77848c4b871d8670ddb6653d0cb4e64c0a;hpb=7fd2eb4b1bc68e8aaec233c4a39bdfc40225bda2;p=sbcl.git diff --git a/src/compiler/gtn.lisp b/src/compiler/gtn.lisp index b954bb7..4a3352f 100644 --- a/src/compiler/gtn.lisp +++ b/src/compiler/gtn.lisp @@ -73,9 +73,9 @@ reversed-ir2-physenv-alist))) (let ((res (make-ir2-physenv - :environment (nreverse reversed-ir2-physenv-alist) + :closure (nreverse reversed-ir2-physenv-alist) :return-pc-pass (make-return-pc-passing-location - (external-entry-point-p clambda))))) + (xep-p clambda))))) (setf (physenv-info lambda-physenv) res) (setf (ir2-physenv-old-fp res) (make-old-fp-save-location lambda-physenv)) @@ -110,8 +110,8 @@ ;;; a non-standard convention. (defun use-standard-returns (tails) (declare (type tail-set tails)) - (let ((funs (tail-set-functions tails))) - (or (and (find-if #'external-entry-point-p funs) + (let ((funs (tail-set-funs tails))) + (or (and (find-if #'xep-p funs) (find-if #'has-full-call-use funs)) (block punt (dolist (fun funs t) @@ -131,7 +131,7 @@ ;;; there is no such function, then be more vague. (defun return-value-efficiency-note (tails) (declare (type tail-set tails)) - (let ((funs (tail-set-functions tails))) + (let ((funs (tail-set-funs tails))) (when (policy (lambda-bind (first funs)) (> (max speed space) inhibit-warnings)) @@ -141,7 +141,8 @@ "Return value count mismatch prevents known return ~ from these functions:~ ~{~% ~A~}" - (remove nil (mapcar #'leaf-name funs))))) + (mapcar #'leaf-source-name + (remove-if-not #'leaf-has-source-name-p funs))))) (let ((ret (lambda-return fun))) (when ret (let ((rtype (return-result-type ret))) @@ -166,7 +167,8 @@ (multiple-value-bind (types count) (values-types (tail-set-type tails)) (let ((ptypes (mapcar #'primitive-type types)) (use-standard (use-standard-returns tails))) - (when (and (eq count :unknown) (not use-standard)) + (when (and (eq count :unknown) (not use-standard) + (not (eq (tail-set-type tails) *empty-type*))) (return-value-efficiency-note tails)) (if (or (eq count :unknown) use-standard) (make-return-info :kind :unknown @@ -191,7 +193,7 @@ (return (lambda-return fun))) (when (and return (not (eq (return-info-kind returns) :unknown)) - (external-entry-point-p fun)) + (xep-p fun)) (do-uses (use (return-result return)) (setf (node-tail-p use) nil)))) (values))