/[cmucl]/src/compiler/locall.lisp
ViewVC logotype

Diff of /src/compiler/locall.lisp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.35 by ram, Mon Sep 7 16:01:25 1992 UTC revision 1.36 by ram, Mon Sep 21 15:37:46 1992 UTC
# Line 328  Line 328 
328             (inline-expansion-ok call))             (inline-expansion-ok call))
329        (with-ir1-environment call        (with-ir1-environment call
330          (let* ((*lexical-environment* (functional-lexenv fun))          (let* ((*lexical-environment* (functional-lexenv fun))
331                 (res (ir1-convert-lambda (functional-inline-expansion fun))))                 (won nil)
332            (change-ref-leaf ref res)                 (res (catch 'local-call-lossage
333            res))                        (prog1
334                              (ir1-convert-lambda (functional-inline-expansion fun))
335                            (setq won t)))))
336              (cond (won
337                     (change-ref-leaf ref res)
338                     res)
339                    (t
340                     (let ((*compiler-error-context* call))
341                       (compiler-note "Couldn't inline expand because expansion ~
342                                       calls this let-converted local function:~
343                                       ~%  ~S"
344                                      (leaf-name res)))
345                     fun))))
346        fun))        fun))
347    
348    
# Line 893  Line 905 
905  ;;;  ;;;
906  ;;;    We don't attempt to convert calls to functions that have an XEP, since  ;;;    We don't attempt to convert calls to functions that have an XEP, since
907  ;;; we might be embarrassed later when we want to convert a newly discovered  ;;; we might be embarrassed later when we want to convert a newly discovered
908  ;;; local call.  ;;; local call.  We also don't convert calls to named functions which appear in
909    ;;; the initial component, delaying this until optimization.  This minimizes
910    ;;; the likelyhood that we well let-convert a function which may have
911    ;;; references added due to later local inline expansion.
912  ;;;  ;;;
913  (defun maybe-let-convert (fun)  (defun maybe-let-convert (fun)
914    (declare (type clambda fun))    (declare (type clambda fun))
# Line 906  Line 921 
921          (when (and (basic-combination-p dest)          (when (and (basic-combination-p dest)
922                     (eq (basic-combination-fun dest) ref-cont)                     (eq (basic-combination-fun dest) ref-cont)
923                     (eq (basic-combination-kind dest) :local)                     (eq (basic-combination-kind dest) :local)
924                     (not (block-delete-p (node-block dest))))                     (not (block-delete-p (node-block dest)))
925                       (cond ((and (leaf-name fun)
926                                   (eq (component-kind
927                                        (block-component
928                                         (continuation-block ref-cont)))
929                                       :initial))
930                              (reoptimize-continuation ref-cont)
931                              nil)
932                             (t t)))
933            (let-convert fun dest)            (let-convert fun dest)
934            (setf (functional-kind fun)            (setf (functional-kind fun)
935                  (if (mv-combination-p dest) :mv-let :let))))                  (if (mv-combination-p dest) :mv-let :let))))

Legend:
Removed from v.1.35  
changed lines
  Added in v.1.36

  ViewVC Help
Powered by ViewVC 1.1.5