Index: /trunk/source/level-0/l0-hash.lisp
===================================================================
--- /trunk/source/level-0/l0-hash.lisp	(revision 15268)
+++ /trunk/source/level-0/l0-hash.lisp	(revision 15269)
@@ -145,27 +145,24 @@
       (setf (nhash.vector.flags vector) (logior (ash 1 $nhash_key_moved_bit) flags)))))
 
-#+32-bit-target
+;;;
+;;; This is a fairly straightforward translation of the "one-at-a-time"
+;;; hash function described at:
+;;; http://www.burtleburtle.net/bob/hash/doobs.html
+;;;
 (defun mixup-hash-code (fixnum)
-  (declare (fixnum fixnum))
-  #+mixup-hash-code-nop
-  fixnum
-  #-mixup-hash-code-nop
-  (the fixnum
-    (+ fixnum
-       (the fixnum (%ilsl (- 32 8)
-                          (logand (1- (ash 1 (- 8 3))) fixnum))))))
-
-#+64-bit-target
-(defun mixup-hash-code (fixnum)
-  (declare (fixnum fixnum))
-  #+mixup-hash-code-nop
-  fixnum
-  #-mixup-hash-code-nop
-  (the fixnum
-    (+ fixnum
-       (the fixnum (%ilsl 50
-                          (logand (1- (ash 1 (- 8 3))) fixnum))))))
-
-
+  (declare (fixnum fixnum)
+           (optimize (speed 3) (safety 0)))
+  (setq fixnum (logand fixnum target::most-positive-fixnum))
+  (do* ((hash 0))
+       ((zerop fixnum)
+        (setq hash (+ hash (the fixnum (ash hash 3)))
+              hash (logxor hash (the fixnum (ash hash -11))))
+        (the fixnum (+ hash (the fixnum (ash hash 15)))))
+    (declare (fixnum hash))
+    (setq hash (+ hash (the fixnum (logand fixnum #xff)))
+          fixnum (ash fixnum -8)
+          hash (+ hash (the fixnum (ash hash 10)))
+          hash (logxor hash (the fixnum (ash hash -6))))))
+          
 (defun rotate-hash-code (fixnum)
   (declare (fixnum fixnum))
Index: /trunk/source/lib/compile-ccl.lisp
===================================================================
--- /trunk/source/lib/compile-ccl.lisp	(revision 15268)
+++ /trunk/source/lib/compile-ccl.lisp	(revision 15269)
@@ -576,5 +576,5 @@
         (format nil "Error executing ~a: ~a~&~a" procname string reminder)))))
 
-(defparameter *known-optional-features* '(:count-gf-calls :monitor-futex-wait :unique-dcode :qres-ccl :eq-hash-monitor :mixup-hash-code-nop))
+(defparameter *known-optional-features* '(:count-gf-calls :monitor-futex-wait :unique-dcode :qres-ccl :eq-hash-monitor))
 (defvar *build-time-optional-features* nil)
 (defvar *ccl-save-source-locations* :no-text)
