Forráskód Böngészése

- attempt to unroll one of the hash loops

Andrei Pelinescu-Onciul 18 éve
szülő
commit
e16f999c03
1 módosított fájl, 10 hozzáadás és 2 törlés
  1. 10 2
      hashes.h

+ 10 - 2
hashes.h

@@ -44,8 +44,16 @@
 			(v)=(*(p)<<24)+((p)[1]<<16)+((p)[2]<<8)+(p)[3]; \
 			(v)=(*(p)<<24)+((p)[1]<<16)+((p)[2]<<8)+(p)[3]; \
 			(h)+=(v)^((v)>>3); \
 			(h)+=(v)^((v)>>3); \
 		} \
 		} \
-		(v)=0; \
-		for (;(p)<(end); (p)++){ (v)<<=8; (v)+=*(p);} \
+		switch((end)-(p)){\
+			case 3: \
+				(v)=(*(p)<<16)+((p)[1]<<8)+(p)[2]; break; \
+			case 2: \
+				(v)=(*(p)<<8)+p[1]; break; \
+			case 1: \
+				(v)=*p; break; \
+			default: \
+				(v)=0; break; \
+		} \
 		(h)+=(v)^((v)>>3); \
 		(h)+=(v)^((v)>>3); \
 	}while(0)
 	}while(0)