/[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.8 by ram, Thu Aug 16 16:25:20 1990 UTC revision 1.9 by ram, Fri Oct 5 15:12:44 1990 UTC
# Line 9  Line 9 
9  ;;;  ;;;
10  ;;;    This file implements local call analysis.  A local call is a function  ;;;    This file implements local call analysis.  A local call is a function
11  ;;; call between functions being compiled at the same time.  If we can tell at  ;;; call between functions being compiled at the same time.  If we can tell at
12  ;;; compile time that such a call is legal, then we modify the flow graph to  ;;; compile time that such a call is legal, then we change the combination
13  ;;; represent the control transfers previously implicit in the call.  This  ;;; to call the correct lambda, mark it as local, and add this link to our call
14  ;;; change allows us to do inter-routine flow analysis.  ;;; graph.  Once a call is local, it is then eligible for let conversion, which
15    ;;; places the body of the function inline.
16  ;;;  ;;;
17  ;;;    We cannot always do a local call even when we do have the function being  ;;;    We cannot always do a local call even when we do have the function being
18  ;;; called.  Local call can be explicitly disabled by a NOTINLINE declaration.  ;;; called.  Local call can be explicitly disabled by a NOTINLINE declaration.
# Line 342  Line 343 
343  ;;; we give a warning and mark the Ref as :Notinline to remove it from future  ;;; we give a warning and mark the Ref as :Notinline to remove it from future
344  ;;; consideration.  If the argcount is O.K. then we just convert it.  ;;; consideration.  If the argcount is O.K. then we just convert it.
345  ;;;  ;;;
 (proclaim '(function convert-lambda-call (ref combination lambda) void))  
346  (defun convert-lambda-call (ref call fun)  (defun convert-lambda-call (ref call fun)
347      (declare (type ref ref) (type combination call) (type clambda fun))
348    (let ((nargs (length (lambda-vars fun)))    (let ((nargs (length (lambda-vars fun)))
349          (call-args (length (combination-args call))))          (call-args (length (combination-args call))))
350      (cond ((= call-args nargs)      (cond ((= call-args nargs)
# Line 407  Line 408 
408  ;;; new function and the entry point immediately so that everything gets  ;;; new function and the entry point immediately so that everything gets
409  ;;; converted during the single pass.  ;;; converted during the single pass.
410  ;;;  ;;;
 (proclaim '(function convert-hairy-fun-entry  
                      (ref combination lambda list list list)))  
411  (defun convert-hairy-fun-entry (ref call entry vars ignores args)  (defun convert-hairy-fun-entry (ref call entry vars ignores args)
412      (declare (list vars ignores args) (type ref ref) (type combination call)
413               (type clambda entry))
414    (let ((new-fun    (let ((new-fun
415           (with-ir1-environment call           (with-ir1-environment call
416             (ir1-convert-lambda             (ir1-convert-lambda

Legend:
Removed from v.1.8  
changed lines
  Added in v.1.9

  ViewVC Help
Powered by ViewVC 1.1.5