Fix the compiler note emission from COUNT and EQUAL on bit-vectors.
(reported by Lutz Euler sbcl-devel 2005-02-16)
... rewrite (1- (ash 1 <integer 1 n-word-bits>)) as
(ash #xff...ff (- n-word-bits <integer 1 n-word-bits>))
are now more amenable to inspection by INSPECT.
* workaround for bug 354: XEPs no longer appear in backtraces unless
explicitly requested.
are now more amenable to inspection by INSPECT.
* workaround for bug 354: XEPs no longer appear in backtraces unless
explicitly requested.
+ * fixed bug: COUNT and EQUAL no longer issue compiler efficiency
+ notes when operating on objects known to be SIMPLE-BIT-VECTORs.
+ (reported by Lutz Euler)
changes in sbcl-0.8.20 (0.9alpha.0?) relative to sbcl-0.8.19:
* fixed inspection of specialized arrays. (thanks to Simon Alexander)
changes in sbcl-0.8.20 (0.9alpha.0?) relative to sbcl-0.8.19:
* fixed inspection of specialized arrays. (thanks to Simon Alexander)
(floor (1- length) sb!vm:n-word-bits))))
((= i end-1)
(let* ((extra (1+ (mod (1- length) sb!vm:n-word-bits)))
(floor (1- length) sb!vm:n-word-bits))))
((= i end-1)
(let* ((extra (1+ (mod (1- length) sb!vm:n-word-bits)))
- (mask (1- (ash 1 extra)))
+ (mask (ash #.(1- (ash 1 sb!vm:n-word-bits))
+ (- extra sb!vm:n-word-bits)))
sb!vm:n-word-bits))))
((= index end-1)
(let* ((extra (1+ (mod (1- length) sb!vm:n-word-bits)))
sb!vm:n-word-bits))))
((= index end-1)
(let* ((extra (1+ (mod (1- length) sb!vm:n-word-bits)))
- (mask (1- (ash 1 extra)))
+ (mask (ash #.(1- (ash 1 sb!vm:n-word-bits))
+ (- extra sb!vm:n-word-bits)))
(bits (logand (ash mask
,(ecase sb!c:*backend-byte-order*
(:little-endian 0)
(bits (logand (ash mask
,(ecase sb!c:*backend-byte-order*
(:little-endian 0)
;; (no -C variant as x86 MUL instruction doesn't take an immediate)
(def * nil))
;; (no -C variant as x86 MUL instruction doesn't take an immediate)
(def * nil))
-;;; (no -C variant as x86 MUL instruction doesn't take an immediate)
-
(define-vop (fast-ash-left-mod64-c/unsigned=>unsigned
fast-ash-c/unsigned=>unsigned)
(:translate ash-left-mod64))
(define-vop (fast-ash-left-mod64-c/unsigned=>unsigned
fast-ash-c/unsigned=>unsigned)
(:translate ash-left-mod64))
(type number p2))
(eql (the (complex double-float) p1) p2)))
c0 #c(12 612/979)))))
(type number p2))
(eql (the (complex double-float) p1) p2)))
c0 #c(12 612/979)))))
+
+;;; reported by Lutz Euler: we shouldn't signal a compiler note for
+;;; simple-bit-vector functions.
+(handler-bind ((sb-ext:compiler-note #'error))
+ (compile nil '(lambda (x)
+ (declare (type simple-bit-vector x))
+ (count 1 x))))
+(handler-bind ((sb-ext:compiler-note #'error))
+ (compile nil '(lambda (x y)
+ (declare (type simple-bit-vector x y))
+ (equal x y))))
;;; 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".)
;;; 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".)