0.8.10.69:
authorChristophe Rhodes <csr21@cam.ac.uk>
Mon, 31 May 2004 13:56:25 +0000 (13:56 +0000)
committerChristophe Rhodes <csr21@cam.ac.uk>
Mon, 31 May 2004 13:56:25 +0000 (13:56 +0000)
Fix BUG #327
... at fixup time, loop over subclassoids of STRUCTURE-OBJECT
and CONDITION and do FIND-CLASS on their names.  Hacky,
but there you go.
... this bloats the core quite significantly, but in addition
to fixing #327 it also seems to fix the instability in
stack exhaustion detection...

BUGS
NEWS
src/pcl/fixup.lisp
tests/mop.impure.lisp
version.lisp-expr

diff --git a/BUGS b/BUGS
index 19aeb2e..9b49d25 100644 (file)
--- a/BUGS
+++ b/BUGS
@@ -1417,17 +1417,4 @@ WORKAROUND:
   introduced. 
 
 327: "Lazy construction of CLOS classes from system classoids"
-  In a fresh SBCL,
-    (sb-mop:class-direct-subclasses (find-class 'pathname))
-  returns NIL, despite the LOGICAL-PATHNAME class existing.  However,
-  if we then do (find-class 'logical-pathname) and repeat the request
-  for direct subclasses, a list of the logical pathname class is
-  returned.  (Though this particular example revealed the problem to
-  CSR, others have found that this gave consistent results for
-  PATHNAME, but not for SIMPLE-CONDITION.)
-
-  Presumably the CLOS bootstrap process needs to iterate over
-  classoids (both structure- and condition-) to create CLOS classes
-  for them, so that this internal inconsistency does not arise?  How
-  does this interact with the classoid hierarchy not perfectly
-  mirroring the class hierarchy?  (e.g. INSTANCE?)
+  (fixed in sbcl-0.8.10.69)
diff --git a/NEWS b/NEWS
index 5bf1739..bc9379c 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -2476,6 +2476,9 @@ changes in sbcl-0.8.11 relative to sbcl-0.8.10:
   * fixed bug 321: define-method-combination argument lambda lists do
     not cause invalid code to be generated when &optional or &aux
     variables have default values.  (reported by Bruno Haible)
+  * fixed bug 327: system subclasses of STRUCTURE-OBJECT or CONDITION
+    have CLOS classes; this appears also to have fixed reported
+    instability in stack exhaustion detection.
   * optimization: rearranged the expansion of various defining macros
     so that each expands into only one top-level form in a
     :LOAD-TOPLEVEL context; this appears to decrease fasl sizes by
index e51da94..af0239f 100644 (file)
@@ -25,6 +25,9 @@
 
 (!fix-early-generic-functions)
 (compute-standard-slot-locations)
+(dolist (s '(condition structure-object))
+  (dohash (k v (classoid-subclasses (find-classoid s)))
+    (find-class (classoid-name k))))
 (setq *boot-state* 'complete)
 
 (defun print-std-instance (instance stream depth)
index d5116f9..e3c23f9 100644 (file)
 (assert (= (substandard-defgeneric 1 2) 3))
 (assert (string= (substandard-defgeneric "1" "2") "12"))
 \f
+(let* ((x (find-class 'pathname))
+       (xs (class-direct-subclasses x)))
+  (assert (>= (length xs) 1))
+  (assert (member (find-class 'logical-pathname) xs)))
+\f
 ;;;; success
 (sb-ext:quit :unix-status 104)
index 6989d69..c35ee82 100644 (file)
@@ -17,4 +17,4 @@
 ;;; checkins which aren't released. (And occasionally for internal
 ;;; versions, especially for internal versions off the main CVS
 ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.8.10.68"
+"0.8.10.69"