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>