;;;; and eliminates the need for any VM-dependent transforms to handle
;;;; these cases.
-(macrolet ((def-frob (fun)
+(macrolet ((def (fun)
`(progn
- (deftransform ,fun ((bit-array-1 bit-array-2 &optional result-bit-array)
+ (deftransform ,fun ((bit-array-1 bit-array-2
+ &optional result-bit-array)
(bit-vector bit-vector &optional null) *
:policy (>= speed space))
`(,',fun bit-array-1 bit-array-2
(deftransform ,fun ((bit-array-1 bit-array-2 result-bit-array)
(bit-vector bit-vector (member t)) *)
`(,',fun bit-array-1 bit-array-2 bit-array-1)))))
- (def-frob bit-and)
- (def-frob bit-ior)
- (def-frob bit-xor)
- (def-frob bit-eqv)
- (def-frob bit-nand)
- (def-frob bit-nor)
- (def-frob bit-andc1)
- (def-frob bit-andc2)
- (def-frob bit-orc1)
- (def-frob bit-orc2))
+ (def bit-and)
+ (def bit-ior)
+ (def bit-xor)
+ (def bit-eqv)
+ (def bit-nand)
+ (def bit-nor)
+ (def bit-andc1)
+ (def bit-andc2)
+ (def bit-orc1)
+ (def bit-orc2))
;;; Similar for BIT-NOT, but there is only one arg...
(deftransform bit-not ((bit-array-1 &optional result-bit-array)
;;; Pick off some constant cases.
(deftransform array-header-p ((array) (array))
(let ((type (continuation-type array)))
- (declare (optimize (safety 3)))
(unless (array-type-p type)
(give-up-ir1-transform))
(let ((dims (array-type-dimensions type)))
(cond ((csubtypep type (specifier-type '(simple-array * (*))))
- ;; No array header.
+ ;; no array header
nil)
((and (listp dims) (> (length dims) 1))
- ;; Multi-dimensional array, will have a header.
+ ;; multi-dimensional array, will have a header
t)
(t
(give-up-ir1-transform))))))