Annotation of embedaddon/nginx/src/core/ngx_murmurhash.c, revision 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>