X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcompiler%2Fir1final.lisp;h=055322bc4dc4c38475399ae9f45e3c827f81ced9;hb=29a9ccc860532b32c566aec095f570e999a9c52c;hp=8f8cb1611eee5cb1cc3a943bc3088a4e70572620;hpb=a8fa26a6e9804d3548f5bca9361a91345a689099;p=sbcl.git diff --git a/src/compiler/ir1final.lisp b/src/compiler/ir1final.lisp index 8f8cb16..055322b 100644 --- a/src/compiler/ir1final.lisp +++ b/src/compiler/ir1final.lisp @@ -20,7 +20,7 @@ (defun note-failed-optimization (node failures) (declare (type combination node) (list failures)) (unless (or (node-deleted node) - (not (function-info-p (combination-kind node)))) + (not (fun-info-p (combination-kind node)))) (let ((*compiler-error-context* node)) (dolist (failure failures) (let ((what (cdr failure)) @@ -29,16 +29,16 @@ ((consp what) (compiler-note "~@" note (first what) (rest what))) - ((valid-function-use node what - :argument-test #'types-equal-or-intersect - :result-test #'values-types-equal-or-intersect) + ((valid-fun-use node what + :argument-test #'types-equal-or-intersect + :result-test #'values-types-equal-or-intersect) (collect ((messages)) - (flet ((frob (string &rest stuff) + (flet ((give-grief (string &rest stuff) (messages string) (messages stuff))) - (valid-function-use node what - :warning-function #'frob - :error-function #'frob)) + (valid-fun-use node what + :unwinnage-fun #'give-grief + :lossage-fun #'give-grief)) (compiler-note "~@" + (type-specifier declared-ftype) + (type-specifier defined-ftype))))) + (:defined + (when global-p + (setf (info :function :type source-name) defined-ftype)))))))) (values)) -;;; Find all calls in Component to assumed functions and update the assumed -;;; type information. This is delayed until now so that we have the best -;;; possible information about the actual argument types. +;;; Find all calls in COMPONENT to assumed functions and update the +;;; assumed type information. This is delayed until now so that we +;;; have the best possible information about the actual argument +;;; types. (defun note-assumed-types (component name var) (when (and (eq (leaf-where-from var) :assumed) - (not (and (defined-function-p var) - (eq (defined-function-inlinep var) :notinline))) + (not (and (defined-fun-p var) + (eq (defined-fun-inlinep var) :notinline))) (eq (info :function :where-from name) :assumed) (eq (info :function :kind name) :function)) (let ((atype (info :function :assumed-type name))) (dolist (ref (leaf-refs var)) (let ((dest (continuation-dest (node-cont ref)))) - (when (and (eq (block-component (node-block ref)) component) + (when (and (eq (node-component ref) component) (combination-p dest) (eq (continuation-use (basic-combination-fun dest)) ref)) - (setq atype (note-function-use dest atype))))) + (setq atype (note-fun-use dest atype))))) (setf (info :function :assumed-type name) atype)))) -;;; Do miscellaneous things that we want to do once all optimization has -;;; been done: +;;; Do miscellaneous things that we want to do once all optimization +;;; has been done: ;;; -- Record the derived result type before the back-end trashes the ;;; flow graph. ;;; -- Note definition of any entry points. @@ -133,7 +126,7 @@ (maphash #'note-failed-optimization (component-failed-optimizations component)) - (maphash #'(lambda (k v) - (note-assumed-types component k v)) - *free-functions*) + (maphash (lambda (k v) + (note-assumed-types component k v)) + *free-funs*) (values))