mirror of
https://github.com/golang/go
synced 2024-11-26 16:46:58 -07:00
runtime: use AES hash for compound objects.
R=golang-dev, rsc CC=golang-dev https://golang.org/cl/7716047
This commit is contained in:
parent
a5b2623dab
commit
6b57329268
@ -8,6 +8,8 @@
|
|||||||
#define M0 (sizeof(uintptr)==4 ? 2860486313UL : 33054211828000289ULL)
|
#define M0 (sizeof(uintptr)==4 ? 2860486313UL : 33054211828000289ULL)
|
||||||
#define M1 (sizeof(uintptr)==4 ? 3267000013UL : 23344194077549503ULL)
|
#define M1 (sizeof(uintptr)==4 ? 3267000013UL : 23344194077549503ULL)
|
||||||
|
|
||||||
|
static bool use_aeshash;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* map and chan helpers for
|
* map and chan helpers for
|
||||||
* dealing with unknown types
|
* dealing with unknown types
|
||||||
@ -17,6 +19,10 @@ runtime·memhash(uintptr *h, uintptr s, void *a)
|
|||||||
{
|
{
|
||||||
byte *b;
|
byte *b;
|
||||||
uintptr hash;
|
uintptr hash;
|
||||||
|
if(use_aeshash) {
|
||||||
|
runtime·aeshash(h, s, a);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
b = a;
|
b = a;
|
||||||
hash = M0 ^ *h;
|
hash = M0 ^ *h;
|
||||||
@ -479,6 +485,7 @@ runtime·hashinit(void)
|
|||||||
(runtime·cpuid_ecx & (1 << 19)) != 0) { // sse4.1 (pinsr{d,q})
|
(runtime·cpuid_ecx & (1 << 19)) != 0) { // sse4.1 (pinsr{d,q})
|
||||||
byte *rnd;
|
byte *rnd;
|
||||||
int32 n;
|
int32 n;
|
||||||
|
use_aeshash = true;
|
||||||
runtime·algarray[AMEM].hash = runtime·aeshash;
|
runtime·algarray[AMEM].hash = runtime·aeshash;
|
||||||
runtime·algarray[AMEM8].hash = runtime·aeshash;
|
runtime·algarray[AMEM8].hash = runtime·aeshash;
|
||||||
runtime·algarray[AMEM16].hash = runtime·aeshash;
|
runtime·algarray[AMEM16].hash = runtime·aeshash;
|
||||||
|
Loading…
Reference in New Issue
Block a user