Changeset: 957c834b19e1 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=957c834b19e1
Modified Files:
gdk/gdk_hash.c
gdk/gdk_hash.h
Branch: leftmart
Log Message:
tidying up
diffs (102 lines):
diff --git a/gdk/gdk_hash.c b/gdk/gdk_hash.c
--- a/gdk/gdk_hash.c
+++ b/gdk/gdk_hash.c
@@ -267,8 +267,8 @@ BATcheckhash(BAT *b)
b->T->hash = h;
ALGODEBUG fprintf(stderr,
"#BATcheckhash: reusing persisted hash %s\n", BATgetId(b));
MT_lock_unset(&GDKhashLock(abs(b->batCacheid)));
- IDXACCESS fprintf(stderr,
"[%4d->%4d]:%s (" BUNFMT ") #BATcheckhash: load persistent hash index (ms="
LLFMT
- ")\n",
b->batCacheid,-VIEWtparent(b), "type", BATcount(b), GDKusec() - t);
+ IDXACCESS fprintf(stderr, "[%d,%d]:%c
(" BUNFMT ") #BATcheckhash: load persistent hash index (ms=" LLFMT
+ ")\n",
b->batCacheid,-VIEWtparent(b), b->T->type, BATcount(b), GDKusec() - t);
return 1;
}
GDKfree(h);
@@ -532,7 +532,7 @@ BAThash(BAT *b, BUN masksize)
ALGODEBUG HASHcollisions(b, b->T->hash);
}
MT_lock_unset(&GDKhashLock(abs(b->batCacheid)));
- IDXACCESS fprintf(stderr, "[%4d->%4d]:%s (" BUNFMT ") #BAThash: create
hash index (ms=" LLFMT ")\n", b->batCacheid,-VIEWtparent(b), "type",
BATcount(b), t1 - t0);
+ IDXACCESS fprintf(stderr, "[%d,%d]:%c (" BUNFMT ") #BAThash: create
hash index (ms=" LLFMT ")\n", b->batCacheid,-VIEWtparent(b), b->T->type,
BATcount(b), t1 - t0);
return GDK_SUCCEED;
}
diff --git a/gdk/gdk_hash.h b/gdk/gdk_hash.h
--- a/gdk/gdk_hash.h
+++ b/gdk/gdk_hash.h
@@ -129,7 +129,7 @@ gdk_export BUN HASHlist(Hash *h, BUN i);
#endif
-/* FNV hash */
+/* FNV1a hash */
#if SIZEOF_BUN == 8
#define FNV_PRIME 0x100000001b3ULL
@@ -142,16 +142,13 @@ gdk_export BUN HASHlist(Hash *h, BUN i);
#define NO_FNV_OPT
static inline BUN fnvhash_int(const void *v) {
- unsigned int v_int = *(unsigned int *) v;
+ unsigned int v_uint = *(unsigned int *) v;
BUN r = FNV_INIT;
-#if SIZEOF_INT == 8
- int octets = 8;
-#else
- int octets = 4;
-#endif
+ size_t octets = sizeof(unsigned int);
+
while (octets--) {
- r ^= (v_int & 0xff);
- v_int >>= 8;
+ r ^= (v_uint & 0xff);
+ v_uint >>= 8;
#ifdef NO_FNV_OPT
r *= FNV_PRIME;
#else
@@ -167,12 +164,13 @@ static inline BUN fnvhash_int(const void
}
static inline BUN fnvhash_lng(const void *v) {
- ulng v_int = *(ulng *) v;
+ ulng v_ulng = *(ulng *) v;
BUN r = FNV_INIT;
- int octets = 8;
+ size_t octets = sizeof(ulng);
+
while (octets--) {
- r ^= (v_int & 0xff);
- v_int >>= 8;
+ r ^= (v_ulng & 0xff);
+ v_ulng >>= 8;
#ifdef NO_FNV_OPT
r *= FNV_PRIME;
#else
@@ -187,9 +185,11 @@ static inline BUN fnvhash_lng(const void
return r;
}
-#define hash_int2(H,R) ((H)->n > 32 ? ((BUN) ((R) >> (H)->n) ^ ((R) &
(H)->mask)) : ((BUN) ((((R) >> (H)->n) ^ (R)) & (H)->mask)))
-#define hash_int(H,V) hash_int2(H, fnvhash_int(V))
-#define hash_lng(H,V) hash_int2(H, fnvhash_lng(V))
+#define fnv_mask(H,R) ((H)->n > 32 ? ((BUN) ((R) >> (H)->n) ^ ((R) &
(H)->mask)) : ((BUN) ((((R) >> (H)->n) ^ (R)) & (H)->mask)))
+#define fnv_int(H,V) fnv_mask(H, fnvhash_int(V))
+#define fnv_lng(H,V) fnv_mask(H, fnvhash_lng(V))
+
+/* end of FNV1a hash */
#define mix_bte(X) ((unsigned int) (unsigned char) (X))
#define mix_sht(X) ((unsigned int) (unsigned short) (X))
@@ -208,9 +208,9 @@ static inline BUN fnvhash_lng(const void
#define heap_hash_any(hp,H,V) ((hp) && (hp)->hashash ? ((BUN *) (V))[-1] &
(H)->mask : hash_any(H,V))
#define hash_bte(H,V) (assert(((H)->mask & 0xFF) == 0xFF), (BUN)
mix_bte(*(const unsigned char*) (V)))
#define hash_sht(H,V) (assert(((H)->mask & 0xFFFF) == 0xFFFF), (BUN)
mix_sht(*(const unsigned short*) (V)))
-/*#define hash_int(H,V) ((BUN) mix_int(*(const unsigned int *) (V)) &
(H)->mask)*/
+#define hash_int(H,V) ((BUN) mix_int(*(const unsigned int *) (V)) & (H)->mask)
/* XXX return size_t-sized value for 8-byte oid? */
-/*#define hash_lng(H,V) ((BUN) mix_lng(*(const ulng *) (V)) &
(H)->mask)*/
+#define hash_lng(H,V) ((BUN) mix_lng(*(const ulng *) (V)) & (H)->mask)
#ifdef HAVE_HGE
#define hash_hge(H,V) ((BUN) mix_hge(*(const uhge *) (V)) & (H)->mask)
#endif
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list