1
0
mirror of https://github.com/golang/go synced 2024-09-29 10:24:34 -06:00

hash/maphash: use fastrand64 in MakeSeed

Change-Id: I5ccbcea4c53658136b25ca608faec19eeec2e908
Reviewed-on: https://go-review.googlesource.com/c/go/+/400915
Reviewed-by: Keith Randall <khr@golang.org>
Reviewed-by: Keith Randall <khr@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Run-TryBot: Wayne Zuo <wdvxdr@golangcn.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
This commit is contained in:
zhangyunhao 2022-04-19 14:44:03 +08:00 committed by Keith Randall
parent b34838913d
commit c2d436dcfa

View File

@ -252,21 +252,20 @@ func (h *Hash) Sum64() uint64 {
// MakeSeed returns a new random seed.
func MakeSeed() Seed {
var s1, s2 uint64
var s uint64
for {
s1 = uint64(runtime_fastrand())
s2 = uint64(runtime_fastrand())
s = runtime_fastrand64()
// We use seed 0 to indicate an uninitialized seed/hash,
// so keep trying until we get a non-zero seed.
if s1|s2 != 0 {
if s != 0 {
break
}
}
return Seed{s: s1<<32 + s2}
return Seed{s: s}
}
//go:linkname runtime_fastrand runtime.fastrand
func runtime_fastrand() uint32
//go:linkname runtime_fastrand64 runtime.fastrand64
func runtime_fastrand64() uint64
func rthash(ptr *byte, len int, seed uint64) uint64 {
if len == 0 {