/[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.36 by ram, Mon Sep 21 15:37:46 1992 UTC revision 1.37 by ram, Tue Sep 22 00:04:37 1992 UTC
# Line 292  Line 292 
292  ;;; triggered by reference deletion.  In particular, the Component-Lambdas are  ;;; triggered by reference deletion.  In particular, the Component-Lambdas are
293  ;;; being hacked to remove newly deleted and let converted lambdas, so it is  ;;; being hacked to remove newly deleted and let converted lambdas, so it is
294  ;;; important that the lambda is added to the Component-Lambdas when it is.  ;;; important that the lambda is added to the Component-Lambdas when it is.
295  ;;; Also, the COMPOENT-NEW-FUNCTIONS may contain all sorts of drivel, since it  ;;; Also, the COMPONENT-NEW-FUNCTIONS may contain all sorts of drivel, since it
296  ;;; is not updated when we delete functions, etc.  Only COMPONENT-LAMBDAS is  ;;; is not updated when we delete functions, etc.  Only COMPONENT-LAMBDAS is
297  ;;; updated.  ;;; updated.
298  ;;;  ;;;
299    ;;; COMPONENT-REANALYZE-FUNCTIONS is treated similarly to NEW-FUNCTIONS, but we
300    ;;; don't add lambdas to the LAMBDAS.
301    ;;;
302  (defun local-call-analyze (component)  (defun local-call-analyze (component)
303    (declare (type component component))    (declare (type component component))
304    (loop    (loop
305      (unless (component-new-functions component) (return))      (let* ((new (pop (component-new-functions component)))
306      (let* ((fun (pop (component-new-functions component)))             (fun (or new (pop (component-reanalyze-functions component)))))
307             (kind (functional-kind fun)))        (unless fun (return))
308        (cond ((member kind '(:deleted :let :mv-let :assignment)))        (let ((kind (functional-kind fun)))
309              ((and (null (leaf-refs fun)) (eq kind nil)          (cond ((member kind '(:deleted :let :mv-let :assignment)))
310                    (not (functional-entry-function fun)))                ((and (null (leaf-refs fun)) (eq kind nil)
311               (delete-functional fun))                      (not (functional-entry-function fun)))
312              (t                 (delete-functional fun))
313               (when (lambda-p fun)                (t
314                 (push fun (component-lambdas component)))                 (when (and new (lambda-p fun))
315               (local-call-analyze-1 fun)                   (push fun (component-lambdas component)))
316               (when (lambda-p fun)                 (local-call-analyze-1 fun)
317                 (maybe-let-convert fun))))))                 (when (lambda-p fun)
318                     (maybe-let-convert fun)))))))
319    
320    (undefined-value))    (undefined-value))
321    

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

  ViewVC Help
Powered by ViewVC 1.1.5