X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcompiler%2Fsparc%2Farray.lisp;h=eac0f62b0664180f84ade56481a3742d0c8cba43;hb=acce826c593a188b231b7b7918c752bda21d0201;hp=8bbceaa8ceb7154dca99c7e71e9d35e0e83ecbd7;hpb=68fd2d2dd6f265669a8957accd8a33e62786a97e;p=sbcl.git diff --git a/src/compiler/sparc/array.lisp b/src/compiler/sparc/array.lisp index 8bbceaa..eac0f62 100644 --- a/src/compiler/sparc/array.lisp +++ b/src/compiler/sparc/array.lisp @@ -33,7 +33,7 @@ (inst or ndescr ndescr type) ;; Remove the extraneous fixnum tag bits because TYPE and RANK ;; were fixnums - (inst srl ndescr ndescr fixnum-tag-bits) + (inst srl ndescr ndescr n-fixnum-tag-bits) (storew ndescr header 0 other-pointer-lowtag)) (move result header))) @@ -69,7 +69,7 @@ (loadw temp x 0 other-pointer-lowtag) (inst sra temp n-widetag-bits) (inst sub temp (1- array-dimensions-offset)) - (inst sll res temp fixnum-tag-bits))) + (inst sll res temp n-fixnum-tag-bits))) @@ -168,7 +168,7 @@ (:temporary (:scs (non-descriptor-reg) :to (:result 0)) temp result) (:generator 20 (inst srl temp index ,bit-shift) - (inst sll temp fixnum-tag-bits) + (inst sll temp n-fixnum-tag-bits) (inst add temp (- (* vector-data-offset n-word-bytes) other-pointer-lowtag)) (inst ld result object temp) @@ -189,7 +189,8 @@ (:result-types positive-fixnum) (:temporary (:scs (non-descriptor-reg)) temp) (:generator 15 - (multiple-value-bind (word extra) (floor index ,elements-per-word) + (multiple-value-bind (word extra) + (floor index ,elements-per-word) (setf extra (logxor extra (1- ,elements-per-word))) (let ((offset (- (* (+ word vector-data-offset) n-word-bytes) other-pointer-lowtag))) @@ -199,8 +200,7 @@ (inst li temp offset) (inst ld result object temp)))) (unless (zerop extra) - (inst srl result - (logxor (* extra ,bits) ,(1- elements-per-word)))) + (inst srl result (* extra ,bits))) (unless (= extra ,(1- elements-per-word)) (inst and result ,(1- (ash 1 bits))))))) (define-vop (,(symbolicate 'data-vector-set/ type)) @@ -217,7 +217,7 @@ (:temporary (:scs (non-descriptor-reg) :from (:argument 1)) shift) (:generator 25 (inst srl offset index ,bit-shift) - (inst sll offset fixnum-tag-bits) + (inst sll offset n-fixnum-tag-bits) (inst add offset (- (* vector-data-offset n-word-bytes) other-pointer-lowtag)) (inst ld old object offset)