Annotation of embedaddon/nginx/src/core/ngx_murmurhash.c, revision 1.1.1.1
1.1 misho 1:
2: /*
3: * Copyright (C) Austin Appleby
4: */
5:
6:
7: #include <ngx_config.h>
8: #include <ngx_core.h>
9:
10:
11: uint32_t
12: ngx_murmur_hash2(u_char *data, size_t len)
13: {
14: uint32_t h, k;
15:
16: h = 0 ^ len;
17:
18: while (len >= 4) {
19: k = data[0];
20: k |= data[1] << 8;
21: k |= data[2] << 16;
22: k |= data[3] << 24;
23:
24: k *= 0x5bd1e995;
25: k ^= k >> 24;
26: k *= 0x5bd1e995;
27:
28: h *= 0x5bd1e995;
29: h ^= k;
30:
31: data += 4;
32: len -= 4;
33: }
34:
35: switch (len) {
36: case 3:
37: h ^= data[2] << 16;
38: case 2:
39: h ^= data[1] << 8;
40: case 1:
41: h ^= data[0];
42: h *= 0x5bd1e995;
43: }
44:
45: h ^= h >> 13;
46: h *= 0x5bd1e995;
47: h ^= h >> 15;
48:
49: return h;
50: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>