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>