From: Christophe Rhodes Date: Sun, 1 Jun 2003 15:44:54 +0000 (+0000) Subject: 0.8.0.24: X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=860543cc7ba0266e41e1d41ac9b6a208f3795f1a;p=sbcl.git 0.8.0.24: A couple of small fixes: ... make the raw-slot reffer/setters in the case of UNSIGNED-BYTE raw type (when the accessor is just AREF) know that they're dealing with a (SIMPLE-ARRAY (UNSIGNED-BYTE 32) (*)), quietening the compiler a little. ... make a fallback constructor, not an optimized constructor, for condition classes. (reported by eightjean on #lisp IRC) --- diff --git a/src/code/defstruct.lisp b/src/code/defstruct.lisp index e523eed..e4f0119 100644 --- a/src/code/defstruct.lisp +++ b/src/code/defstruct.lisp @@ -685,12 +685,7 @@ ;;; ;;; FIXME: This should use the data in *RAW-SLOT-DATA-LIST*. (defun structure-raw-slot-type-and-size (type) - (cond #+nil - (;; FIXME: For now we suppress raw slots, since there are various - ;; issues about the way that the cross-compiler handles them. - (not (boundp '*dummy-placeholder-to-stop-compiler-warnings*)) - (values nil nil nil)) - ((and (sb!xc:subtypep type '(unsigned-byte 32)) + (cond ((and (sb!xc:subtypep type '(unsigned-byte 32)) (multiple-value-bind (fixnum? fixnum-certain?) (sb!xc:subtypep type 'fixnum) ;; (The extra test for FIXNUM-CERTAIN? here is @@ -889,8 +884,20 @@ (multiple-value-bind (scaled-dsd-index misalignment) (floor (dsd-index dsd) raw-n-words) (aver (zerop misalignment)) - `(,raw-slot-accessor (,ref ,instance-name ,(dd-raw-index dd)) - ,scaled-dsd-index)))))) + (let* ((raw-vector-bare-form + `(,ref ,instance-name ,(dd-raw-index dd))) + (raw-vector-form + (if (eq raw-type 'unsigned-byte) + (progn + (aver (= raw-n-words 1)) + (aver (eq raw-slot-accessor 'aref)) + ;; FIXME: when the 64-bit world rolls + ;; around, this will need to be reviewed, + ;; along with the whole RAW-SLOT thing. + `(truly-the (simple-array (unsigned-byte 32) (*)) + ,raw-vector-bare-form)) + raw-vector-bare-form))) + `(,raw-slot-accessor ,raw-vector-form ,scaled-dsd-index))))))) ;;; Return source transforms for the reader and writer functions of ;;; the slot described by DSD. They should be inline expanded, but diff --git a/src/pcl/ctor.lisp b/src/pcl/ctor.lisp index 0e094b5..0ef967b 100644 --- a/src/pcl/ctor.lisp +++ b/src/pcl/ctor.lisp @@ -285,6 +285,7 @@ ;; together with the system-defined ones in what ;; COMPUTE-APPLICABLE-METHODS returns. (or (and (not (structure-class-p class)) + (not (condition-class-p class)) (null (cdr make-instance-methods)) (null (cdr allocate-instance-methods)) (null (check-initargs-1 class (plist-keys (ctor-initargs ctor)) diff --git a/version.lisp-expr b/version.lisp-expr index 88827d4..762b862 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -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.0.23" +"0.8.0.24"