X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Flocall.lisp;h=14e699c9b01bb49d750e273416c04f02ce222131;hb=b8f63d9b4e978bec3bfc1f4fc471e5ed946781fd;hp=f474bc1abdea3a915684641079fbd2b8bbcf4bcc;hpb=06cb0db045562ab583358e2ee7090c606e1dfe42;p=sbcl.git diff --git a/src/compiler/locall.lisp b/src/compiler/locall.lisp index f474bc1..14e699c 100644 --- a/src/compiler/locall.lisp +++ b/src/compiler/locall.lisp @@ -21,9 +21,6 @@ (in-package "SB!C") -(file-comment - "$Header$") - ;;; This function propagates information from the variables in the function ;;; Fun to the actual arguments in Call. This is also called by the VALUES IR1 ;;; optimizer when it sleazily converts MV-BINDs to LETs. @@ -166,21 +163,21 @@ (t (%argument-count-error ,n-supplied))))))))) -;;; Make an external entry point (XEP) for Fun and return it. We -;;; convert the result of Make-XEP-Lambda in the correct environment, -;;; then associate this lambda with Fun as its XEP. After the +;;; Make an external entry point (XEP) for FUN and return it. We +;;; convert the result of MAKE-XEP-LAMBDA in the correct environment, +;;; then associate this lambda with FUN as its XEP. After the ;;; conversion, we iterate over the function's associated lambdas, ;;; redoing local call analysis so that the XEP calls will get ;;; converted. We also bind *LEXENV* to change the compilation policy ;;; over to the interface policy. ;;; -;;; We set Reanalyze and Reoptimize in the component, just in case we +;;; We set REANALYZE and REOPTIMIZE in the component, just in case we ;;; discover an XEP after the initial local call analyze pass. (defun make-external-entry-point (fun) (declare (type functional fun)) (assert (not (functional-entry-function fun))) (with-ir1-environment (lambda-bind (main-entry fun)) - (let* ((*lexenv* (make-lexenv :cookie (make-interface-cookie *lexenv*))) + (let* ((*lexenv* (make-lexenv :policy (make-interface-policy *lexenv*))) (res (ir1-convert-lambda (make-xep-lambda fun)))) (setf (functional-kind res) :external) (setf (leaf-ever-used res) t) @@ -283,12 +280,13 @@ (values)) -;;; If policy is auspicious, Call is not in an XEP, and we don't seem +;;; If policy is auspicious, CALL is not in an XEP, and we don't seem ;;; to be in an infinite recursive loop, then change the reference to ;;; reference a fresh copy. We return whichever function we decide to ;;; reference. (defun maybe-expand-local-inline (fun ref call) - (if (and (policy call (>= speed space) (>= speed cspeed)) + (if (and (policy call + (and (>= speed space) (>= speed compilation-speed))) (not (eq (functional-kind (node-home-lambda call)) :external)) (not *converting-for-interpreter*) (inline-expansion-ok call)) @@ -521,7 +519,8 @@ (arglist (optional-dispatch-arglist fun)) (args (combination-args call)) (more (nthcdr max args)) - (flame (policy call (or (> speed brevity) (> space brevity)))) + (flame (policy call (or (> speed inhibit-warnings) + (> space inhibit-warnings)))) (loser nil) (temps (make-gensym-list max)) (more-temps (make-gensym-list (length more))))