user-defined methods on SLOT-BOUNDP-USING-CLASS and (SETF
SLOT-VALUE-USING-CLASS), and no longer causes errors with
non-standard SLOT-DEFINITION-ALLOCATION values.
+ * optimization: improved performance of BIT and SBIT on bit-vectors.
changes in sbcl-0.8.12 relative to sbcl-0.8.11:
* minor incompatible change: the system no longer provides
It is commonly expected for Python to derive (FIXNUMP I). (If ``='' is
replaced with ``>='', Python will do.)
--------------------------------------------------------------------------------
+#17
+Type tests for (ARRAY BIT), (ARRAY T) and similar go through full
+%TYPEP, even though it is relatively simple to establish the arrayness
+of an object and also to obtain the element type of an array. As of
+sbcl-0.8.12.30, this affects at least DUMP-OBJECT through
+COMPOUND-OBJECT-P, and (LABELS MAYBE-EMIT-MAKE-LOAD-FORMS GROVEL)
+through TYPEP UNBOXED-ARRAY, within the compiler itself.
+--------------------------------------------------------------------------------
;;; We convert all typed array accessors into AREF and %ASET with type
;;; assertions on the array.
-(macrolet ((define-frob (reffer setter type)
+(macrolet ((define-bit-frob (reffer setter simplep)
`(progn
(define-source-transform ,reffer (a &rest i)
- `(aref (the ,',type ,a) ,@i))
+ `(aref (the (,',(if simplep 'simple-array 'array)
+ bit
+ ,(mapcar (constantly '*) i))
+ ,a) ,@i))
(define-source-transform ,setter (a &rest i)
- `(%aset (the ,',type ,a) ,@i)))))
- (define-frob sbit %sbitset (simple-array bit))
- (define-frob bit %bitset (array bit)))
+ `(%aset (the (,',(if simplep 'simple-array 'array)
+ bit
+ ,(cdr (mapcar (constantly '*) i)))
+ ,a) ,@i)))))
+ (define-bit-frob sbit %sbitset t)
+ (define-bit-frob bit %bitset nil))
(macrolet ((define-frob (reffer setter type)
`(progn
(define-source-transform ,reffer (a i)
;;; 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.12.32"
+"0.8.12.33"