X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fassembly%2Fppc%2Farray.lisp;h=4e0fb53d25b1c65d416cae8a9351be0e56307543;hb=5da5805594423a2d2a841b88617fd2c87fc05750;hp=bfb29587ea36a137a747dd7bb02554a2895afaf5;hpb=125b7b337701dbac929da65013865a642652f21c;p=sbcl.git diff --git a/src/assembly/ppc/array.lisp b/src/assembly/ppc/array.lisp index bfb2958..4e0fb53 100644 --- a/src/assembly/ppc/array.lisp +++ b/src/assembly/ppc/array.lisp @@ -18,23 +18,25 @@ (:arg-types positive-fixnum positive-fixnum positive-fixnum)) - ((:arg type any-reg a0-offset) - (:arg length any-reg a1-offset) - (:arg words any-reg a2-offset) - (:res result descriptor-reg a0-offset) - - (:temp ndescr non-descriptor-reg nl0-offset) - (:temp pa-flag non-descriptor-reg nl3-offset) - (:temp vector descriptor-reg a3-offset)) + ((:arg type any-reg a0-offset) + (:arg length any-reg a1-offset) + (:arg words any-reg a2-offset) + (:res result descriptor-reg a0-offset) + + (:temp ndescr non-descriptor-reg nl0-offset) + (:temp pa-flag non-descriptor-reg nl3-offset) + (:temp vector descriptor-reg a3-offset)) (pseudo-atomic (pa-flag) - (inst ori vector alloc-tn sb!vm:other-pointer-lowtag) - (inst addi ndescr words (* (1+ sb!vm:vector-data-offset) sb!vm:n-word-bytes)) + (inst ori vector alloc-tn other-pointer-lowtag) + ;; boxed words == unboxed bytes + (inst addi ndescr words (* (1+ vector-data-offset) n-word-bytes)) (inst clrrwi ndescr ndescr n-lowtag-bits) (inst add alloc-tn alloc-tn ndescr) - (inst srwi ndescr type sb!vm:word-shift) - (storew ndescr vector 0 sb!vm:other-pointer-lowtag) - (storew length vector sb!vm:vector-length-slot sb!vm:other-pointer-lowtag)) + (inst srwi ndescr type word-shift) + (storew ndescr vector 0 other-pointer-lowtag) + (storew length vector vector-length-slot other-pointer-lowtag)) ;; This makes sure the zero byte at the end of a string is paged in so ;; the kernel doesn't bitch if we pass it the string. (storew zero-tn alloc-tn 0) (move result vector)) +