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