Commit before branching to new XPath compilation
[SXSI/xpathcomp.git] / utils.ml
index e6cbff0..cfa6c8e 100644 (file)
--- a/utils.ml
+++ b/utils.ml
@@ -9,16 +9,41 @@ THEN
     DEFINE HALFWORDSIZE = 32
     DEFINE INTSIZE = 63
     DEFINE HALFINTSIZE = 31
+    DEFINE HALF_MAX_INT = 2305843009213693951
+    DEFINE HPARAM = 65599
+    DEFINE HPARAM2 = 4303228801
+    DEFINE HPARAM3 = 282287506116799
+
 ELSE
     DEFINE WORDSIZE = 32
     DEFINE HALFWORDSIZE = 16
     DEFINE INTSIZE = 31
     DEFINE HALFINTSIZE = 15
+    DEFINE HALF_MAX_INT = 536870911
+    DEFINE HPARAM = 65599
+    DEFINE HPARAM2 = 8261505
+    DEFINE HPARAM3 = 780587199
+
 END
 
-DEFINE ROTATEHALF (x) = (((x) lsl HALFINTSIZE) lor ((x) lsr HALFINTSIZE))
-DEFINE HASHINT2 (x,y) = ((((x) lsl 16)+((x) lsl 8)-(x))+(y))
-DEFINE HASHINT3 (x,y,z) =  (((((x) lsl 16)+((x) lsl 8)-(x))+(y))*65599+(z))
+
+DEFINE HASHINT2 (x,y) = ((x)+HPARAM*(y))
+DEFINE HASHINT3 (x,y,z) = ((x)  + (y) * HPARAM + (z) * HPARAM2)
+DEFINE HASHINT4 (x,y,z,t) =  ((x)  + (y) * HPARAM + (z)*HPARAM2 + (t)* HPARAM3)
+
+DEFINE PRIME1 = 7
+DEFINE PRIME2 = 19
+DEFINE PRIME3 = 83
+DEFINE PRIME4 = 223
+DEFINE PRIME5 = 491
+DEFINE PRIME6 = 733
+DEFINE PRIME7 = 1009
+DEFINE PRIME8 = 4093
+DEFINE PRIME9 = 65599 (* Magic Constant used for hashing *)
+
+DEFINE SMALL_H_SIZE  = PRIME2
+DEFINE MED_H_SIZE    = PRIME5
+DEFINE BIG_H_SIZE    = PRIME8
 
 
 END (* IFNDEF UTILS__ML__ *)