From: Nikodemus S. <de...@us...> - 2008-02-14 16:40:54
|
Update of /cvsroot/sbcl/sbcl/src/compiler/ppc In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv1264/src/compiler/ppc Modified Files: system.lisp Log Message: 1.0.14.27: rename MAKE-FIXNUM to POINTER-HASH * Use VOP translation instead of %PRIMITIVE. * On x86 and x86-64 improve the pointer-hash slightly: use the whole address, but none of the tag bits in the hash. * Fix type in INDEX-FOR-HASHING: the first argument is a HASH, not an INDEX. Given the better quality of low bits on x86oids (and hopefully soon on others as well), adjust the mixing a bit. Index: system.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/compiler/ppc/system.lisp,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- system.lisp 26 Jul 2005 18:51:44 -0000 1.8 +++ system.lisp 14 Feb 2008 16:40:47 -0000 1.9 @@ -121,13 +121,14 @@ (move res x))) -(define-vop (make-fixnum) +(define-vop (pointer-hash) + (:translate pointer-hash) (:args (ptr :scs (any-reg descriptor-reg))) (:results (res :scs (any-reg descriptor-reg))) + (:policy :fast-safe) (:generator 1 - ;; - ;; Some code (the hash table code) depends on this returning a - ;; positive number so make sure it does. + ;; FIXME: It would be better if this would mask the lowtag, + ;; and shift the result into a positive fixnum like on x86. (inst rlwinm res ptr n-fixnum-tag-bits 1 n-positive-fixnum-bits))) (define-vop (make-other-immediate-type) |