X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fassembly%2Fppc%2Farray.lisp;h=e59c3c08917adb8c2d5514da5755e2eb50152c2a;hb=2ad50715571eb8ccfb9ab55c13b8c038c89f2dfd;hp=4e0fb53d25b1c65d416cae8a9351be0e56307543;hpb=9b55754d5328a5f44ee224d32865fc8dadee123b;p=sbcl.git diff --git a/src/assembly/ppc/array.lisp b/src/assembly/ppc/array.lisp index 4e0fb53..e59c3c0 100644 --- a/src/assembly/ppc/array.lisp +++ b/src/assembly/ppc/array.lisp @@ -13,30 +13,39 @@ (in-package "SB!VM") (define-assembly-routine (allocate-vector - (:policy :fast-safe) - (:translate allocate-vector) - (:arg-types positive-fixnum - positive-fixnum - positive-fixnum)) + (:policy :fast-safe) + (:translate allocate-vector) + (: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)) + (:temp vector descriptor-reg a3-offset) + (:temp temp non-descriptor-reg nl2-offset)) (pseudo-atomic (pa-flag) - (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) + (allocation vector ndescr other-pointer-lowtag + :temp-tn temp + :flag-tn pa-flag) (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) + ;; + ;; rtoy says to turn this off as it causes problems with CMUCL. + ;; + ;; I don't think we need to do this anymore. It looks like this + ;; inherited from the SPARC port and does not seem to be + ;; necessary. Turning this on worked at some point, but I have not + ;; tested with the final GENGC-related changes. CLH 20060221 + ;; + ;; (storew zero-tn alloc-tn 0) (move result vector)) -