(original) (raw)
# Author: Alecsandru Patrascu alecsandru.patrascu@intel.com diff -r da483bda6efc Objects/bufferobject.c --- a/Objects/bufferobject.c Mon Aug 24 16:17:13 2015 -0400 +++ b/Objects/bufferobject.c Wed Sep 02 10:02:49 2015 +0300 @@ -344,8 +344,61 @@ } x = _Py_HashSecret.prefix; x ^= *p << 7; - while (--len >= 0) + while (len > 7) { x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + len -= 8; + } + switch (len) { + case 7: + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p; + break; + case 6: + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p; + break; + case 5: + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p; + break; + case 4: + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p; + break; + case 3: + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p; + break; + case 2: + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p; + break; + case 1: + x = (1000003*x) ^ *p; + break; + } x ^= size; x ^= _Py_HashSecret.suffix; if (x == -1) diff -r da483bda6efc Objects/stringobject.c --- a/Objects/stringobject.c Mon Aug 24 16:17:13 2015 -0400 +++ b/Objects/stringobject.c Wed Sep 02 10:02:49 2015 +0300 @@ -1283,8 +1283,61 @@ p = (unsigned char *) a->ob_sval; x = _Py_HashSecret.prefix; x ^= *p << 7; - while (--len >= 0) + while (len > 7) { x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + len -= 8; + } + switch (len) { + case 7: + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p; + break; + case 6: + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p; + break; + case 5: + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p; + break; + case 4: + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p; + break; + case 3: + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p; + break; + case 2: + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p; + break; + case 1: + x = (1000003*x) ^ *p; + break; + } x ^= Py_SIZE(a); x ^= _Py_HashSecret.suffix; if (x == -1) diff -r da483bda6efc Objects/unicodeobject.c --- a/Objects/unicodeobject.c Mon Aug 24 16:17:13 2015 -0400 +++ b/Objects/unicodeobject.c Wed Sep 02 10:02:49 2015 +0300 @@ -6655,8 +6655,61 @@ p = PyUnicode_AS_UNICODE(self); x = _Py_HashSecret.prefix; x ^= *p << 7; - while (--len >= 0) + while (len > 7) { x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + len -= 8; + } + switch (len) { + case 7: + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p; + break; + case 6: + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p; + break; + case 5: + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p; + break; + case 4: + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p; + break; + case 3: + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p; + break; + case 2: + x = (1000003*x) ^ *p++; + x = (1000003*x) ^ *p; + break; + case 1: + x = (1000003*x) ^ *p; + break; + } x ^= PyUnicode_GET_SIZE(self); x ^= _Py_HashSecret.suffix; if (x == -1) /alecsandru.patrascu@intel.com