From: Christophe R. <cr...@us...> - 2003-04-01 13:18:22
|
Update of /cvsroot/sbcl/sbcl/src/code In directory sc8-pr-cvs1:/tmp/cvs-serv31109/src/code Modified Files: defboot.lisp early-extensions.lisp primordial-extensions.lisp target-type.lisp Log Message: 0.pre8.24: Quieten the cross-compiler a little ... SB!XC:PROCLAIM the forthcoming existence of a bunch of internal defining functions; ... move PROPER-LIST-OF-LENGTH-P earlier, both for quietness reasons and for use within early-extensions; ... delete some outdated commentary; ... declare *TYPE-SYSTEM-INITIALIZED* special in target-type, since that's its first use. Bye bye BUG 6 (and a little more tidying up of BUGS) Index: defboot.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/code/defboot.lisp,v retrieving revision 1.31 retrieving revision 1.32 diff -u -d -r1.31 -r1.32 --- defboot.lisp 12 Mar 2003 12:44:03 -0000 1.31 +++ defboot.lisp 1 Apr 2003 13:18:19 -0000 1.32 @@ -353,3 +353,30 @@ &body body) (declare (ignore declarations macros symbol-macros body)) `#',whole) + +;;; this eliminates a whole bundle of unknown function STYLE-WARNINGs +;;; when cross-compiling. It's not critical for behaviour, but is +;;; aesthetically pleasing, except inasmuch as there's this list of +;;; magic functions here. -- CSR, 2003-04-01 +#+sb-xc-host +(sb!xc:proclaim '(ftype (function * *) + ;; functions appearing in fundamental defining + ;; macro expansions: + %compiler-deftype + %defun + %defsetf + sb!c:%compiler-defun + sb!c::%define-symbol-macro + sb!c::%defconstant + sb!c::%define-compiler-macro + sb!c::%defmacro + sb!kernel::%compiler-defstruct + sb!kernel::%compiler-define-condition + sb!kernel::%defstruct + sb!kernel::%define-condition + ;; miscellaneous functions commonly appearing + ;; as a result of macro expansions or compiler + ;; transformations: + sb!int:find-undeleted-package-or-lose ; IN-PACKAGE + sb!kernel::arg-count-error ; PARSE-DEFMACRO + )) Index: early-extensions.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/code/early-extensions.lisp,v retrieving revision 1.53 retrieving revision 1.54 diff -u -d -r1.53 -r1.54 --- early-extensions.lisp 15 Feb 2003 11:16:33 -0000 1.53 +++ early-extensions.lisp 1 Apr 2003 13:18:19 -0000 1.54 @@ -105,29 +105,6 @@ ;;;; type-ish predicates -;;; a helper function for various macros which expect clauses of a -;;; given length, etc. -(eval-when (:compile-toplevel :load-toplevel :execute) - ;; Return true if X is a proper list whose length is between MIN and - ;; MAX (inclusive). - (defun proper-list-of-length-p (x min &optional (max min)) - ;; FIXME: This implementation will hang on circular list - ;; structure. Since this is an error-checking utility, i.e. its - ;; job is to deal with screwed-up input, it'd be good style to fix - ;; it so that it can deal with circular list structure. - (cond ((minusp max) - nil) - ((null x) - (zerop min)) - ((consp x) - (and (plusp max) - (proper-list-of-length-p (cdr x) - (if (plusp (1- min)) - (1- min) - 0) - (1- max)))) - (t nil)))) - ;;; Is X a list containing a cycle? (defun cyclic-list-p (x) (and (listp x) Index: primordial-extensions.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/code/primordial-extensions.lisp,v retrieving revision 1.24 retrieving revision 1.25 diff -u -d -r1.24 -r1.25 --- primordial-extensions.lisp 14 Dec 2002 22:10:08 -0000 1.24 +++ primordial-extensions.lisp 1 Apr 2003 13:18:19 -0000 1.25 @@ -10,7 +10,7 @@ ;;;; provided with absolutely no warranty. See the COPYING and CREDITS ;;;; files for more information. -(in-package "SB!INT") +(in-package "SB!IMPL") ;;;; target constants which need to appear as early as possible @@ -35,20 +35,10 @@ ;;; gencgc.c code on this value being a symbol. (This is only one of ;;; several nasty dependencies between that code and this, alas.) ;;; -- WHN 2001-08-17 -;;; -;;; FIXME: We end up doing two DEFCONSTANT forms because (1) LispWorks -;;; needs EVAL-WHEN wrapped around DEFCONSTANT, and (2) SBCL's -;;; DEFCONSTANT expansion doesn't seem to behave properly inside -;;; EVAL-WHEN, so that without this, the +EMPTY-HT-SLOT+ references in -;;; e.g. DOHASH macroexpansions don't end up being replaced by -;;; constant values, so that the system dies at cold init because -;;; '+EMPTY-HT-SLOT+ isn't bound yet. It's hard to fix this properly -;;; 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) (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 ;;; getting nonconforming behavior by messing around with ;;; DO-ALL-SYMBOLS. That seems like a fairly obscure problem, so for @@ -287,3 +277,24 @@ (bummer "already bound as a different constant value")) (t (symbol-value symbol))))) + +;;; a helper function for various macros which expect clauses of a +;;; given length, etc. +;;; +;;; Return true if X is a proper list whose length is between MIN and +;;; MAX (inclusive). +(defun proper-list-of-length-p (x min &optional (max min)) + ;; FIXME: This implementation will hang on circular list + ;; structure. Since this is an error-checking utility, i.e. its + ;; job is to deal with screwed-up input, it'd be good style to fix + ;; it so that it can deal with circular list structure. + (cond ((minusp max) nil) + ((null x) (zerop min)) + ((consp x) + (and (plusp max) + (proper-list-of-length-p (cdr x) + (if (plusp (1- min)) + (1- min) + 0) + (1- max)))) + (t nil))) Index: target-type.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/code/target-type.lisp,v retrieving revision 1.22 retrieving revision 1.23 diff -u -d -r1.22 -r1.23 --- target-type.lisp 24 Mar 2003 18:39:02 -0000 1.22 +++ target-type.lisp 1 Apr 2003 13:18:19 -0000 1.23 @@ -149,6 +149,7 @@ ;;; Clear memoization of all type system operations that can be ;;; altered by type definition/redefinition. (defun clear-type-caches () + (declare (special *type-system-initialized*)) (when *type-system-initialized* (dolist (sym '(values-specifier-type-cache-clear values-type-union-cache-clear |