X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fseqtran.lisp;h=a7a33b76fdfb63bc1a7706051e640e2a24fedf2a;hb=94ea2b2082deaa0331dfb66fa6af6ca12dd8dc83;hp=5c1874dcc594d21f0be329b13af43fc47d2eba33;hpb=380ea897e2c12a01547f918f73e8a1db0a3a0373;p=sbcl.git diff --git a/src/compiler/seqtran.lisp b/src/compiler/seqtran.lisp index 5c1874d..a7a33b7 100644 --- a/src/compiler/seqtran.lisp +++ b/src/compiler/seqtran.lisp @@ -349,7 +349,7 @@ (if (null splice) (setq list (cdr x)) (rplacd splice (cdr x)))) - (T (setq splice x))))) + (t (setq splice x))))) (deftransform fill ((seq item &key (start 0) (end (length seq))) (vector t &key (:start t) (:end index)) @@ -683,6 +683,10 @@ (defun valid-bit-bash-saetp-p (saetp) ;; BIT-BASHing isn't allowed on simple vectors that contain pointers (and (not (eq t (sb!vm:saetp-specifier saetp))) + ;; Disallowing (VECTOR NIL) also means that we won't transform + ;; sequence functions into bit-bashing code and we let the + ;; generic sequence functions signal errors if necessary. + (not (zerop (sb!vm:saetp-n-bits saetp))) ;; Due to limitations with the current BIT-BASHing code, we can't ;; BIT-BASH reliably on arrays whose element types are larger ;; than the word size. @@ -699,7 +703,7 @@ collect (let* ((sequence-type `(simple-array ,(sb!vm:saetp-specifier saetp) (*))) (n-element-bits (sb!vm:saetp-n-bits saetp)) - (bash-function (intern (format nil "UB~A-BASH-COPY" n-element-bits) + (bash-function (intern (format nil "UB~D-BASH-COPY" n-element-bits) (find-package "SB!KERNEL")))) `(deftransform replace ((seq1 seq2 &key (start1 0) (start2 0) end1 end2) (,sequence-type ,sequence-type &rest t) @@ -733,7 +737,7 @@ collect (let* ((sequence-type `(simple-array ,(sb!vm:saetp-specifier saetp) (*))) (n-element-bits (sb!vm:saetp-n-bits saetp)) - (bash-function (intern (format nil "UB~A-BASH-COPY" n-element-bits) + (bash-function (intern (format nil "UB~D-BASH-COPY" n-element-bits) (find-package "SB!KERNEL")))) `(deftransform subseq ((seq start &optional end) (,sequence-type t &optional t) @@ -760,7 +764,7 @@ collect (let* ((sequence-type `(simple-array ,(sb!vm:saetp-specifier saetp) (*))) (n-element-bits (sb!vm:saetp-n-bits saetp)) - (bash-function (intern (format nil "UB~A-BASH-COPY" n-element-bits) + (bash-function (intern (format nil "UB~D-BASH-COPY" n-element-bits) (find-package "SB!KERNEL")))) `(deftransform copy-seq ((seq) (,sequence-type) ,sequence-type)