Hash.cpp (Firebird-3.0.2.32703-0.tar.bz2) | : | Hash.cpp (Firebird-3.0.4.33054-0.tar.bz2) | ||
---|---|---|---|---|
skipping to change at line 46 | skipping to change at line 46 | |||
unsigned int CRC32C(unsigned int length, const unsigned char* value); | unsigned int CRC32C(unsigned int length, const unsigned char* value); | |||
namespace | namespace | |||
{ | { | |||
typedef unsigned int (*hash_func_t)(unsigned int length, const UCHAR* val ue); | typedef unsigned int (*hash_func_t)(unsigned int length, const UCHAR* val ue); | |||
unsigned int basicHash(unsigned int length, const UCHAR* value) | unsigned int basicHash(unsigned int length, const UCHAR* value) | |||
{ | { | |||
unsigned int hash_value = 0; | unsigned int hash_value = 0; | |||
UCHAR* p; | UCHAR* const p = (UCHAR*) &hash_value; | |||
const UCHAR* q = value; | const UCHAR* q = value; | |||
while (length >= 4) | while (length >= 4) | |||
{ | { | |||
p = (UCHAR*) &hash_value; | ||||
p[0] += q[0]; | p[0] += q[0]; | |||
p[1] += q[1]; | p[1] += q[1]; | |||
p[2] += q[2]; | p[2] += q[2]; | |||
p[3] += q[3]; | p[3] += q[3]; | |||
length -= 4; | length -= 4; | |||
q += 4; | q += 4; | |||
} | } | |||
p = (UCHAR*) &hash_value; | ||||
if (length >= 2) | if (length >= 2) | |||
{ | { | |||
p[0] += q[0]; | p[0] += q[0]; | |||
p[1] += q[1]; | p[1] += q[1]; | |||
length -= 2; | length -= 2; | |||
q += 2; | ||||
} | } | |||
if (length) | if (length) | |||
{ | { | |||
q += 2; | ||||
*p += *q; | *p += *q; | |||
} | } | |||
return hash_value; | return hash_value; | |||
} | } | |||
#if defined(_M_IX86) || defined(_M_X64) || defined(__x86_64__) || defined(__i386 __) | #if defined(_M_IX86) || defined(_M_X64) || defined(__x86_64__) || defined(__i386 __) | |||
bool SSE4_2Supported() | bool SSE4_2Supported() | |||
{ | { | |||
End of changes. 5 change blocks. | ||||
5 lines changed or deleted | 2 lines changed or added |