diff --git a/racket/src/cs/rumble/hash-code.ss b/racket/src/cs/rumble/hash-code.ss index 6e9a8fa09e..c6be084773 100644 --- a/racket/src/cs/rumble/hash-code.ss +++ b/racket/src/cs/rumble/hash-code.ss @@ -81,7 +81,7 @@ (let* ([+/fx (lambda (hc k) (#3%fx+ hc k))] - [sll/fs + [sll/fx (lambda (hc i) (#3%fxsll hc i))] [->fx @@ -91,10 +91,11 @@ (modulo v (greatest-fixnum))))] [mix1 (lambda (hc) - (+/fx hc (sll/fs hc 3)))] + (let ([hc2 (+/fx hc (sll/fx hc 10))]) + (fxlogxor hc2 (fxsrl hc2 6))))] [mix2 (lambda (hc) - (+/fx hc (sll/fs hc 5)))]) + (mix1 hc))]) (cond [(fx> burn MAX-HASH-BURN) (values hc burn)] [(boolean? x) (values (+/fx hc (if x #x0ace0120 #x0cafe121)) burn)]