[movitz-cvs] CVS update: movitz/compiler.lisp
Frode Vatvedt Fjeld
ffjeld at common-lisp.net
Wed Feb 4 16:14:42 UTC 2004
Update of /project/movitz/cvsroot/movitz
In directory common-lisp.net:/tmp/cvs-serv31935
Modified Files:
compiler.lisp
Log Message:
Factored out helper function ensure-pass1-funobj.
Date: Wed Feb 4 11:14:42 2004
Author: ffjeld
Index: movitz/compiler.lisp
diff -u movitz/compiler.lisp:1.13 movitz/compiler.lisp:1.14
--- movitz/compiler.lisp:1.13 Wed Feb 4 11:01:14 2004
+++ movitz/compiler.lisp Wed Feb 4 11:14:42 2004
@@ -8,7 +8,7 @@
;;;; Created at: Wed Oct 25 12:30:49 2000
;;;; Distribution: See the accompanying file COPYING.
;;;;
-;;;; $Id: compiler.lisp,v 1.13 2004/02/04 16:01:14 ffjeld Exp $
+;;;; $Id: compiler.lisp,v 1.14 2004/02/04 16:14:42 ffjeld Exp $
;;;;
;;;;------------------------------------------------------------------
@@ -182,8 +182,15 @@
(t 'make-compiled-function-pass1))
name lambda-list declarations form env top-level-p funobj))))
+(defun ensure-pass1-funobj (funobj class &rest init-args)
+ "If funobj is nil, return a fresh funobj of class.
+Otherwise coerce funobj to class."
+ (if funobj
+ (apply #'change-class funobj class init-args)
+ (apply #'make-instance class init-args)))
+
(defun make-compiled-function-pass1-numarg-case (name lambda-list declarations form env top-level-p funobj)
- (let* ((funobj (or funobj (make-instance 'movitz-funobj-pass1-numargs-case)))
+ (let* ((funobj (ensure-pass1-funobj funobj 'movitz-funobj-pass1-numargs-case))
(funobj-env (make-local-movitz-environment env funobj :type 'funobj-env)))
(setf (movitz-funobj-name funobj) name
(movitz-funobj-lambda-list funobj) (movitz-read (lambda-list-simplify lambda-list))
@@ -204,11 +211,11 @@
(append clause-declarations
declarations)))))
(make-compiled-function-body-pass1 funobj
- function-env
- (list* 'muerte.cl::block
- (compute-function-block-name name)
- clause-body)
- top-level-p)
+ function-env
+ (list* 'muerte.cl::block
+ (compute-function-block-name name)
+ clause-body)
+ top-level-p)
(push (cons numargs function-env)
(function-envs funobj)))))
funobj))
@@ -217,7 +224,7 @@
"Returns funobj."
(when (duplicatesp lambda-list)
(error "There are duplicates in lambda-list ~S." lambda-list))
- (let* ((funobj (or funobj (make-instance 'movitz-funobj-pass1)))
+ (let* ((funobj (ensure-pass1-funobj funobj 'movitz-funobj-pass1))
(funobj-env (make-local-movitz-environment env funobj :type 'funobj-env))
(function-env (add-bindings-from-lambda-list
lambda-list
More information about the Movitz-cvs
mailing list