Update of /project/movitz/cvsroot/movitz/losp/muerte
In directory common-lisp.net:/tmp/cvs-serv11686
Modified Files:
basic-macros.lisp
Log Message:
Added a compiler-macro for defparameter. This should reduce the number
of file-toplevels that needs to be executed at boot-time just to
initialize some variables to constant values.
Date: Tue Apr 13 12:40:53 2004
Author: ffjeld
Index: movitz/losp/muerte/basic-macros.lisp
diff -u movitz/losp/muerte/basic-macros.lisp:1.6 movitz/losp/muerte/basic-macros.lisp:1.7
--- movitz/losp/muerte/basic-macros.lisp:1.6 Tue Apr 6 09:39:47 2004
+++ movitz/losp/muerte/basic-macros.lisp Tue Apr 13 12:40:53 2004
@@ -9,7 +9,7 @@
;;;; Created at: Wed Nov 8 18:44:57 2000
;;;; Distribution: See the accompanying file COPYING.
;;;;
-;;;; $Id: basic-macros.lisp,v 1.6 2004/04/06 13:39:47 ffjeld Exp $
+;;;; $Id: basic-macros.lisp,v 1.7 2004/04/13 16:40:53 ffjeld Exp $
;;;;
;;;;------------------------------------------------------------------
@@ -119,8 +119,20 @@
;; (muerte::compile-time-setq ,name ,initial-value)
(setq ,name ,initial-value)))
-(defmacro defvar (name &optional value documentation)
- `(defparameter ,name ,value ,documentation))
+(define-compiler-macro defparameter (&whole form name initial-value
+ &optional docstring &environment env)
+ (declare (ignore docstring))
+ (if (not (movitz:movitz-constantp initial-value env))
+ form
+ (let ((mname (translate-program name :cl :muerte.cl)))
+ (setf (movitz::movitz-symbol-value (movitz:movitz-read mname))
+ (movitz:movitz-eval initial-value env))
+ `(declaim (special ,name)))))
+
+(defmacro defvar (name &optional (value nil valuep) documentation)
+ (if (not valuep)
+ `(declaim (special ,name))
+ `(defparameter ,name ,value ,documentation)))
(defmacro define-compile-time-variable (name value)
`(progn