From 627993fc1a4e5a2f693ec8e111ad90f8cf031a0b Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Sun, 24 Nov 2013 09:58:02 -0800 Subject: [PATCH] checksums.superfast: reuse more code, slightly faster for non-byte-arrays. --- basis/checksums/superfast/superfast.factor | 26 +++++++++------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/basis/checksums/superfast/superfast.factor b/basis/checksums/superfast/superfast.factor index c883194e85..44244928a1 100644 --- a/basis/checksums/superfast/superfast.factor +++ b/basis/checksums/superfast/superfast.factor @@ -12,24 +12,23 @@ C: superfast ] dip [ - pick int deref - [ 16 on-bits mask ] [ -16 shift ] bi - (main-loop) - ] reduce + [ 0 over length 4 - 4 ] dip + [ pick int deref (main-loop) ] reduce ] [ - [ dup length 4 mod dupd head-slice* 4 ] dip [ - 2 cut-slice [ le> ] bi@ (main-loop) - ] reduce + [ dup length 4 mod dupd head-slice* 4 ] dip + [ le> (main-loop) ] reduce ] if ; inline : end-case ( seq hash -- hash' ) @@ -52,12 +51,9 @@ C: superfast } dispatch ; inline : avalanche ( hash -- hash' ) - [ 3 shift ] [ bitxor ] bi 32-bit - [ -5 shift ] [ + ] bi - [ 4 shift ] [ bitxor ] bi 32-bit - [ -17 shift ] [ + ] bi - [ 25 shift ] [ bitxor ] bi 32-bit - [ -6 shift ] [ + ] bi ; inline + [ 3 shift ] [ bitxor ] bi 32-bit [ -5 shift ] [ + ] bi + [ 4 shift ] [ bitxor ] bi 32-bit [ -17 shift ] [ + ] bi + [ 25 shift ] [ bitxor ] bi 32-bit [ -6 shift ] [ + ] bi ; inline PRIVATE>