Unified · Split
| @@ -5,26 +5,10 @@ · 4 unmodified lines | |||
| 5 | 5 | ||
| 6 | #include "slpriv.h" | 6 | #include "slpriv.h" |
| 7 | 7 | ||
| 8 | static sl_v | 8 | static inline sl_v |
| 9 | ptrhash(sl_v a) | 9 | ptrhash(sl_v a) |
| 10 | { | 10 | { |
| 11 | #if defined(BITS64) | 11 | return (a >> 4) ^ (a >> 9); |
| 12 | a = (~a) + (a << 21); // a = (a << 21) - a - 1; | ||
| 13 | a = a ^ (a >> 24); | ||
| 14 | a = (a + (a << 3)) + (a << 8); // a * 265 | ||
| 15 | a = a ^ (a >> 14); | ||
| 16 | a = (a + (a << 2)) + (a << 4); // a * 21 | ||
| 17 | a = a ^ (a >> 28); | ||
| 18 | a = a + (a << 31); | ||
| 19 | #else | ||
| 20 | a = (a+0x7ed55d16) + (a<<12); | ||
| 21 | a = (a^0xc761c23c) ^ (a>>19); | ||
| 22 | a = (a+0x165667b1) + (a<<5); | ||
| 23 | a = (a+0xd3a2646c) ^ (a<<9); | ||
| 24 | a = (a+0xfd7046c5) + (a<<3); | ||
| 25 | a = (a^0xb55a4f09) ^ (a>>16); | ||
| 26 | #endif | ||
| 27 | return a; | ||
| 28 | } | 12 | } |
| 29 | 13 | ||
| 30 | #define HTNAME(suffix) ptrhash##suffix | 14 | #define HTNAME(suffix) ptrhash##suffix |