0.pre8.24:
authorChristophe Rhodes <csr21@cam.ac.uk>
Tue, 1 Apr 2003 13:18:18 +0000 (13:18 +0000)
committerChristophe Rhodes <csr21@cam.ac.uk>
Tue, 1 Apr 2003 13:18:18 +0000 (13:18 +0000)
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)

BUGS
src/code/defboot.lisp
src/code/early-extensions.lisp
src/code/primordial-extensions.lisp
src/code/target-type.lisp
version.lisp-expr

diff --git a/BUGS b/BUGS
index 93d9f25..ba66d02 100644 (file)
--- a/BUGS
+++ b/BUGS
@@ -101,20 +101,6 @@ WORKAROUND:
     (frob-stringwise-foo *stringwise-foo*)
   SEGV.
 
-6:
-  bogus warnings about undefined functions for magic functions like
-  SB!C::%%DEFUN and SB!C::%DEFCONSTANT when cross-compiling files
-  like src/code/float.lisp. Fixing this will probably require
-  straightening out enough bootstrap consistency issues that
-  the cross-compiler can run with *TYPE-SYSTEM-INITIALIZED*.
-  Instead, the cross-compiler runs in a slightly flaky state
-  which is sane enough to compile SBCL itself, but which is
-  also unstable in several ways, including its inability
-  to really grok function declarations.
-
-  As of sbcl-0.7.5, sbcl's cross-compiler does run with
-  *TYPE-SYSTEM-INITIALIZED*; however, this bug remains.
-
 7:
   The "compiling top-level form:" output ought to be condensed.
   Perhaps any number of such consecutive lines ought to turn into a
@@ -165,8 +151,8 @@ WORKAROUND:
        (defmethod zut ((c ccc1)) 123)
   In sbcl-0.7.1.13, this gives an error, 
        There is no class named CCC1.
-  DTC's recommended workaround from the mailing list 3 Mar 2000:
-       (setf (pcl::find-class 'ccc1) (pcl::find-class 'ccc))
+  In sbcl-0.pre8.20, this works, but prints style warnings about
+  undefined types.
 
 27:
   Sometimes (SB-EXT:QUIT) fails with 
@@ -252,8 +238,8 @@ WORKAROUND:
 45:
   a slew of floating-point-related errors reported by Peter Van Eynde
   on July 25, 2000:
-       b: SBCL's value for LEAST-POSITIVE-SHORT-FLOAT is bogus, and 
-          should probably be 1.4012985e-45. In SBCL,
+       b: SBCL's value for LEAST-POSITIVE-SHORT-FLOAT on the x86 is 
+          bogus, and should probably be 1.4012985e-45. In SBCL,
           (/ LEAST-POSITIVE-SHORT-FLOAT 2) returns a number smaller
           than LEAST-POSITIVE-SHORT-FLOAT. Similar problems 
           exist for LEAST-NEGATIVE-SHORT-FLOAT, LEAST-POSITIVE-LONG-FLOAT,
@@ -300,12 +286,6 @@ WORKAROUND:
              (ADD-METHOD (FUNCTION FOO03) M)))
           should give an error, but SBCL allows it.
 
-52:
-  It has been reported (e.g. by Peter Van Eynde) that there are 
-  several metaobject protocol "errors". (In order to fix them, we might
-  need to document exactly what metaobject protocol specification
-  we're following -- the current code is just inherited from PCL.)
-
 60:
   The debugger LIST-LOCATIONS command doesn't work properly.
 
@@ -370,18 +350,6 @@ WORKAROUND:
   (partially alleviated in sbcl-0.7.9.32 by a fix by Matthew Danish to
    make the temporary filename less easily guessable)
 
-82: 
-  Functions are assigned names based on the context in which they're
-  defined. This is less than ideal for the functions which are
-  used to implement CLOS methods. E.g. the output of 
-  (DESCRIBE 'PRINT-OBJECT) lists functions like 
-       #<FUNCTION "DEF!STRUCT (TRACE-INFO (:MAKE-LOAD-FORM-FUN SB-KERNEL:JUST-DUMP-IT-NORMALLY) (:PRINT-OBJECT #))" {1020E49}> 
-  and
-       #<FUNCTION "MACROLET ((FORCE-DELAYED-DEF!METHODS NIL #))" {1242871}>
-  It would be better if these functions' names always identified
-  them as methods, and identified their generic functions and
-  specializers.
-
 83:
   RANDOM-INTEGER-EXTRA-BITS=10 may not be large enough for the RANDOM
   RNG to be high quality near RANDOM-FIXNUM-MAX; it looks as though
@@ -716,6 +684,8 @@ WORKAROUND:
   expansion, leaving garbage consisting of infinished blocks of the
   partially converted function.)
 
+  (appears to be fixed in sbcl-0.pre8.21)
+
 162:
   (reported by Robert E. Brown 2002-04-16) 
   When a function is called with too few arguments, causing the
index 46ed79e..4f5ff75 100644 (file)
                                        &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 323982d..4522aa2 100644 (file)
 \f
 ;;;; 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 4a86b53..83a3e49 100644 (file)
@@ -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")
 \f
 ;;;; target constants which need to appear as early as possible
 
 ;;; 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
           (bummer "already bound as a different constant value"))
          (t
           (symbol-value symbol)))))
+\f
+;;; 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 fc5250b..b45d004 100644 (file)
 ;;; 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
index 9b78397..015f49a 100644 (file)
@@ -18,4 +18,4 @@
 ;;; versions, especially for internal versions off the main CVS
 ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
 
-"0.pre8.22"
+"0.pre8.24"