X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Falpha%2Farray.lisp;h=ed451bdf48f93058a4d737b6b62512587ac81a5a;hb=f8893c7c658bf9d9e0757c63e47af2fdea810f04;hp=a74b8982332639d9f1eaf351bafa8c5c2bafd76a;hpb=50305b602c3953440af716137a56f50cd204375d;p=sbcl.git diff --git a/src/compiler/alpha/array.lisp b/src/compiler/alpha/array.lisp index a74b898..ed451bd 100644 --- a/src/compiler/alpha/array.lisp +++ b/src/compiler/alpha/array.lisp @@ -52,7 +52,7 @@ (define-full-setter %set-array-dimension * array-dimensions-offset other-pointer-lowtag - (any-reg) positive-fixnum sb!impl::%set-array-dimension #+gengc nil) + (any-reg) positive-fixnum sb!impl::%set-array-dimension #!+gengc nil) (defknown sb!impl::%array-rank (t) index (flushable)) @@ -100,7 +100,7 @@ (define-full-reffer ,(symbolicate "DATA-VECTOR-REF/" type) ,type vector-data-offset other-pointer-lowtag - ,(remove-if #'(lambda (x) (member x '(null zero))) scs) + ,(remove-if (lambda (x) (member x '(null zero))) scs) ,element-type data-vector-ref) (define-full-setter ,(symbolicate "DATA-VECTOR-SET/" type) @@ -259,11 +259,11 @@ (:generator 20 (multiple-value-bind (word extra) (floor index ,elements-per-word) - (inst ldl object + (inst ldl old (- (* (+ word vector-data-offset) n-word-bytes) other-pointer-lowtag) - old) + object) (unless (and (sc-is value immediate) (= (tn-value value) ,(1- (ash 1 bits)))) @@ -311,15 +311,21 @@ (def-full-data-vector-frobs simple-vector * descriptor-reg any-reg null zero) - (def-partial-data-vector-frobs simple-string base-char :byte nil + (def-partial-data-vector-frobs simple-base-string base-char :byte nil base-char-reg) + (def-partial-data-vector-frobs simple-array-unsigned-byte-7 positive-fixnum + :byte nil unsigned-reg signed-reg) (def-partial-data-vector-frobs simple-array-unsigned-byte-8 positive-fixnum :byte nil unsigned-reg signed-reg) + (def-partial-data-vector-frobs simple-array-unsigned-byte-15 positive-fixnum + :short nil unsigned-reg signed-reg) (def-partial-data-vector-frobs simple-array-unsigned-byte-16 positive-fixnum :short nil unsigned-reg signed-reg) + (def-full-data-vector-frobs simple-array-unsigned-byte-31 unsigned-num + unsigned-reg) (def-full-data-vector-frobs simple-array-unsigned-byte-32 unsigned-num unsigned-reg) @@ -329,6 +335,7 @@ (def-partial-data-vector-frobs simple-array-signed-byte-16 tagged-num :short t signed-reg) + (def-full-data-vector-frobs simple-array-unsigned-byte-29 positive-fixnum any-reg) (def-full-data-vector-frobs simple-array-signed-byte-30 tagged-num any-reg) (def-full-data-vector-frobs simple-array-signed-byte-32 signed-num