X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fprimordial-extensions.lisp;h=92995217e27cc9aa1557428c632baefcbf1978d7;hb=422b88abf96f4842a3d0999cd3b80d96f5a153d6;hp=b496278615e2d58fb0452838e863153716fac460;hpb=08307967c71c580058a503d46aa087cfefcf8c69;p=sbcl.git diff --git a/src/code/primordial-extensions.lisp b/src/code/primordial-extensions.lisp index b496278..9299521 100644 --- a/src/code/primordial-extensions.lisp +++ b/src/code/primordial-extensions.lisp @@ -46,7 +46,7 @@ ;;; until SBCL's EVAL-WHEN is fixed, which is waiting for the IR1 ;;; interpreter to go away, which is waiting for sbcl-0.7.x.. (eval-when (:compile-toplevel :load-toplevel :execute) - (defconstant +empty-ht-slot+ '%empty-ht-slot%)) + (def!constant +empty-ht-slot+ '%empty-ht-slot%)) ;;; We shouldn't need this mess now that EVAL-WHEN works. #+nil (defconstant +empty-ht-slot+ '#.+empty-ht-slot+) ; egads.. See FIXME above. ;;; KLUDGE: Using a private symbol still leaves us vulnerable to users @@ -133,6 +133,18 @@ ;;;; miscellany +;;; Lots of code wants to get to the KEYWORD package or the +;;; COMMON-LISP package without a lot of fuss, so we cache them in +;;; variables. TO DO: How much does this actually buy us? It sounds +;;; sensible, but I don't know for sure that it saves space or time.. +;;; -- WHN 19990521 +;;; +;;; (The initialization forms here only matter on the cross-compilation +;;; host; In the target SBCL, these variables are set in cold init.) +(declaim (type package *cl-package* *keyword-package*)) +(defvar *cl-package* (find-package "COMMON-LISP")) +(defvar *keyword-package* (find-package "KEYWORD")) + ;;; Concatenate together the names of some strings and symbols, ;;; producing a symbol in the current package. (eval-when (:compile-toplevel :load-toplevel :execute) @@ -212,7 +224,7 @@ (if (consp id) (values (car id) (cdr id)) (values id nil)) - (push `(defconstant ,(symbolicate prefix root suffix) + (push `(def!constant ,(symbolicate prefix root suffix) ,(+ start (* step index)) ,@docs) results))) @@ -242,7 +254,7 @@ ;;; need to avoid runtime indirection through a symbol, you might be ;;; able to do something with LOAD-TIME-VALUE or MAKE-LOAD-FORM. (defmacro defconstant-eqx (symbol expr eqx &optional doc) - `(defconstant ,symbol + `(def!constant ,symbol (%defconstant-eqx-value ',symbol ,expr ,eqx) ,@(when doc (list doc)))) (defun %defconstant-eqx-value (symbol expr eqx)