X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fassembly%2Fmips%2Farray.lisp;h=3c53f1edede2ec0c123fc41d424ed0203b74fbba;hb=22a6702974b7d6ff4e8f2b3b7b5ff446fc632de0;hp=8399f2fc09d92de0f93a0d21af725b7db1d5e59c;hpb=4898ef32c639b1c7f4ee13a5ba566ce6debd03e6;p=sbcl.git diff --git a/src/assembly/mips/array.lisp b/src/assembly/mips/array.lisp index 8399f2f..3c53f1e 100644 --- a/src/assembly/mips/array.lisp +++ b/src/assembly/mips/array.lisp @@ -27,11 +27,11 @@ (:temp pa-flag non-descriptor-reg nl4-offset)) ;; This is kinda sleezy, changing words like this. But we can because ;; the vop thinks it is temporary. - (inst addu words (+ (1- (ash 1 n-lowtag-bits)) + (inst addu words (+ lowtag-mask (* vector-data-offset n-word-bytes))) - (inst li ndescr (lognot lowtag-mask)) - (inst and words ndescr) (inst srl ndescr type word-shift) + (inst srl words n-lowtag-bits) + (inst sll words n-lowtag-bits) (pseudo-atomic (pa-flag) (inst or result alloc-tn other-pointer-lowtag)