From 35cfe059a1c1bbad29e2209bc432a3b01369b25d Mon Sep 17 00:00:00 2001 From: Keith Randall Date: Sat, 2 Nov 2019 10:22:18 -0700 Subject: [PATCH] hash/maphash: move bytes/hash to hash/maphash Fixes #34778 Change-Id: If8225a7c41cb2af3f67157fb9670eef86272e85e Reviewed-on: https://go-review.googlesource.com/c/go/+/204997 Run-TryBot: Keith Randall TryBot-Result: Gobot Gobot Reviewed-by: Brad Fitzpatrick --- src/go/build/deps_test.go | 103 +++++++++--------- .../hash/hash.go => hash/maphash/maphash.go} | 6 +- .../maphash/maphash_test.go} | 26 ++--- .../hash => hash/maphash}/smhasher_test.go | 12 +- 4 files changed, 73 insertions(+), 74 deletions(-) rename src/{bytes/hash/hash.go => hash/maphash/maphash.go} (97%) rename src/{bytes/hash/hash_test.go => hash/maphash/maphash_test.go} (83%) rename src/{bytes/hash => hash/maphash}/smhasher_test.go (98%) diff --git a/src/go/build/deps_test.go b/src/go/build/deps_test.go index 6443094515..2ef90a977e 100644 --- a/src/go/build/deps_test.go +++ b/src/go/build/deps_test.go @@ -84,18 +84,16 @@ var pkgDeps = map[string][]string{ }, // L2 adds Unicode and strings processing. - "bufio": {"L0", "unicode/utf8", "bytes"}, - "bytes": {"L0", "unicode", "unicode/utf8"}, - "bytes/hash": {"L0"}, - "path": {"L0", "unicode/utf8", "strings"}, - "strings": {"L0", "unicode", "unicode/utf8"}, - "unicode": {}, + "bufio": {"L0", "unicode/utf8", "bytes"}, + "bytes": {"L0", "unicode", "unicode/utf8"}, + "path": {"L0", "unicode/utf8", "strings"}, + "strings": {"L0", "unicode", "unicode/utf8"}, + "unicode": {}, "L2": { "L1", "bufio", "bytes", - "bytes/hash", "path", "strings", "unicode", @@ -116,6 +114,7 @@ var pkgDeps = map[string][]string{ "hash/crc32": {"L2", "hash"}, "hash/crc64": {"L2", "hash"}, "hash/fnv": {"L2", "hash"}, + "hash/maphash": {"L2", "hash"}, "image": {"L2", "image/color"}, // interfaces "image/color": {"L2"}, // interfaces "image/color/palette": {"L2", "image/color"}, @@ -244,51 +243,51 @@ var pkgDeps = map[string][]string{ "go/types": {"L4", "GOPARSER", "container/heap", "go/constant"}, // One of a kind. - "archive/tar": {"L4", "OS", "syscall", "os/user"}, - "archive/zip": {"L4", "OS", "compress/flate"}, - "container/heap": {"sort"}, - "compress/bzip2": {"L4"}, - "compress/flate": {"L4"}, - "compress/gzip": {"L4", "compress/flate"}, - "compress/lzw": {"L4"}, - "compress/zlib": {"L4", "compress/flate"}, - "context": {"errors", "internal/reflectlite", "sync", "sync/atomic", "time"}, - "database/sql": {"L4", "container/list", "context", "database/sql/driver", "database/sql/internal"}, - "database/sql/driver": {"L4", "context", "time", "database/sql/internal"}, - "debug/dwarf": {"L4"}, - "debug/elf": {"L4", "OS", "debug/dwarf", "compress/zlib"}, - "debug/gosym": {"L4"}, - "debug/macho": {"L4", "OS", "debug/dwarf", "compress/zlib"}, - "debug/pe": {"L4", "OS", "debug/dwarf", "compress/zlib"}, - "debug/plan9obj": {"L4", "OS"}, - "encoding": {"L4"}, - "encoding/ascii85": {"L4"}, - "encoding/asn1": {"L4", "math/big"}, - "encoding/csv": {"L4"}, - "encoding/gob": {"L4", "OS", "encoding"}, - "encoding/hex": {"L4"}, - "encoding/json": {"L4", "encoding"}, - "encoding/pem": {"L4"}, - "encoding/xml": {"L4", "encoding"}, - "flag": {"L4", "OS"}, - "go/build": {"L4", "OS", "GOPARSER", "internal/goroot", "internal/goversion"}, - "html": {"L4"}, - "image/draw": {"L4", "image/internal/imageutil"}, - "image/gif": {"L4", "compress/lzw", "image/color/palette", "image/draw"}, - "image/internal/imageutil": {"L4"}, - "image/jpeg": {"L4", "image/internal/imageutil"}, - "image/png": {"L4", "compress/zlib"}, - "index/suffixarray": {"L4", "regexp"}, - "internal/goroot": {"L4", "OS"}, - "internal/singleflight": {"sync"}, - "internal/trace": {"L4", "OS", "container/heap"}, - "internal/xcoff": {"L4", "OS", "debug/dwarf"}, - "math/big": {"L4"}, - "mime": {"L4", "OS", "syscall", "internal/syscall/windows/registry"}, - "mime/quotedprintable": {"L4"}, - "net/internal/socktest": {"L4", "OS", "syscall", "internal/syscall/windows"}, - "net/url": {"L4"}, - "plugin": {"L0", "OS", "CGO"}, + "archive/tar": {"L4", "OS", "syscall", "os/user"}, + "archive/zip": {"L4", "OS", "compress/flate"}, + "container/heap": {"sort"}, + "compress/bzip2": {"L4"}, + "compress/flate": {"L4"}, + "compress/gzip": {"L4", "compress/flate"}, + "compress/lzw": {"L4"}, + "compress/zlib": {"L4", "compress/flate"}, + "context": {"errors", "internal/reflectlite", "sync", "sync/atomic", "time"}, + "database/sql": {"L4", "container/list", "context", "database/sql/driver", "database/sql/internal"}, + "database/sql/driver": {"L4", "context", "time", "database/sql/internal"}, + "debug/dwarf": {"L4"}, + "debug/elf": {"L4", "OS", "debug/dwarf", "compress/zlib"}, + "debug/gosym": {"L4"}, + "debug/macho": {"L4", "OS", "debug/dwarf", "compress/zlib"}, + "debug/pe": {"L4", "OS", "debug/dwarf", "compress/zlib"}, + "debug/plan9obj": {"L4", "OS"}, + "encoding": {"L4"}, + "encoding/ascii85": {"L4"}, + "encoding/asn1": {"L4", "math/big"}, + "encoding/csv": {"L4"}, + "encoding/gob": {"L4", "OS", "encoding"}, + "encoding/hex": {"L4"}, + "encoding/json": {"L4", "encoding"}, + "encoding/pem": {"L4"}, + "encoding/xml": {"L4", "encoding"}, + "flag": {"L4", "OS"}, + "go/build": {"L4", "OS", "GOPARSER", "internal/goroot", "internal/goversion"}, + "html": {"L4"}, + "image/draw": {"L4", "image/internal/imageutil"}, + "image/gif": {"L4", "compress/lzw", "image/color/palette", "image/draw"}, + "image/internal/imageutil": {"L4"}, + "image/jpeg": {"L4", "image/internal/imageutil"}, + "image/png": {"L4", "compress/zlib"}, + "index/suffixarray": {"L4", "regexp"}, + "internal/goroot": {"L4", "OS"}, + "internal/singleflight": {"sync"}, + "internal/trace": {"L4", "OS", "container/heap"}, + "internal/xcoff": {"L4", "OS", "debug/dwarf"}, + "math/big": {"L4"}, + "mime": {"L4", "OS", "syscall", "internal/syscall/windows/registry"}, + "mime/quotedprintable": {"L4"}, + "net/internal/socktest": {"L4", "OS", "syscall", "internal/syscall/windows"}, + "net/url": {"L4"}, + "plugin": {"L0", "OS", "CGO"}, "runtime/pprof/internal/profile": {"L4", "OS", "compress/gzip", "regexp"}, "testing/internal/testdeps": {"L4", "internal/testlog", "runtime/pprof", "regexp"}, "text/scanner": {"L4", "OS"}, diff --git a/src/bytes/hash/hash.go b/src/hash/maphash/maphash.go similarity index 97% rename from src/bytes/hash/hash.go rename to src/hash/maphash/maphash.go index cc78b22901..0cd4769c03 100644 --- a/src/bytes/hash/hash.go +++ b/src/hash/maphash/maphash.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// Package bytes/hash provides hash functions on byte sequences. These +// Package hash/maphash provides hash functions on byte sequences. These // hash functions are intended to be used to implement hash tables or // other data structures that need to map arbitrary strings or byte // sequences to a uniform distribution of integers. The hash functions @@ -29,7 +29,7 @@ // All bits of the Hash result are close to uniformly and // independently distributed, so can be safely restricted to a range // using bit masking, shifting, or modular arithmetic. -package hash +package maphash import ( "unsafe" @@ -161,7 +161,7 @@ func rthash(b []byte, seed uint64) uint64 { //go:linkname runtime_memhash runtime.memhash func runtime_memhash(p unsafe.Pointer, seed, s uintptr) uintptr -// Wrapper functions so that a bytes/hash.Hash implements +// Wrapper functions so that a hash/maphash.Hash implements // the hash.Hash and hash.Hash64 interfaces. func (h *Hash) Write(b []byte) (int, error) { diff --git a/src/bytes/hash/hash_test.go b/src/hash/maphash/maphash_test.go similarity index 83% rename from src/bytes/hash/hash_test.go rename to src/hash/maphash/maphash_test.go index f36d506831..f9f631212b 100644 --- a/src/bytes/hash/hash_test.go +++ b/src/hash/maphash/maphash_test.go @@ -2,18 +2,18 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -package hash_test +package maphash_test import ( - "bytes/hash" - basehash "hash" + "hash" + "hash/maphash" "testing" ) func TestUnseededHash(t *testing.T) { m := map[uint64]struct{}{} for i := 0; i < 1000; i++ { - h := hash.New() + h := maphash.New() m[h.Hash()] = struct{}{} } if len(m) < 900 { @@ -22,10 +22,10 @@ func TestUnseededHash(t *testing.T) { } func TestSeededHash(t *testing.T) { - s := hash.MakeSeed(1234) + s := maphash.MakeSeed(1234) m := map[uint64]struct{}{} for i := 0; i < 1000; i++ { - h := hash.New() + h := maphash.New() h.SetSeed(s) m[h.Hash()] = struct{}{} } @@ -36,8 +36,8 @@ func TestSeededHash(t *testing.T) { func TestHashGrouping(t *testing.T) { b := []byte("foo") - h1 := hash.New() - h2 := hash.New() + h1 := maphash.New() + h2 := maphash.New() h2.SetSeed(h1.Seed()) h1.AddBytes(b) for _, x := range b { @@ -51,8 +51,8 @@ func TestHashGrouping(t *testing.T) { func TestHashBytesVsString(t *testing.T) { s := "foo" b := []byte(s) - h1 := hash.New() - h2 := hash.New() + h1 := maphash.New() + h2 := maphash.New() h2.SetSeed(h1.Seed()) h1.AddString(s) h2.AddBytes(b) @@ -66,7 +66,7 @@ func TestHashHighBytes(t *testing.T) { const N = 10 m := map[uint64]struct{}{} for i := 0; i < N; i++ { - h := hash.New() + h := maphash.New() h.AddString("foo") m[h.Hash()>>32] = struct{}{} } @@ -76,5 +76,5 @@ func TestHashHighBytes(t *testing.T) { } // Make sure a Hash implements the hash.Hash and hash.Hash64 interfaces. -var _ basehash.Hash = &hash.Hash{} -var _ basehash.Hash64 = &hash.Hash{} +var _ hash.Hash = &maphash.Hash{} +var _ hash.Hash64 = &maphash.Hash{} diff --git a/src/bytes/hash/smhasher_test.go b/src/hash/maphash/smhasher_test.go similarity index 98% rename from src/bytes/hash/smhasher_test.go rename to src/hash/maphash/smhasher_test.go index f5169ffa27..4ac3d58976 100644 --- a/src/bytes/hash/smhasher_test.go +++ b/src/hash/maphash/smhasher_test.go @@ -2,11 +2,11 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -package hash_test +package maphash_test import ( - "bytes/hash" "fmt" + "hash/maphash" "math" "math/rand" "runtime" @@ -45,14 +45,14 @@ func TestSmhasherSanity(t *testing.T) { } func bytesHash(b []byte, seed uint64) uint64 { - h := hash.New() - h.SetSeed(hash.MakeSeed(seed)) + h := maphash.New() + h.SetSeed(maphash.MakeSeed(seed)) h.AddBytes(b) return h.Hash() } func stringHash(s string, seed uint64) uint64 { - h := hash.New() - h.SetSeed(hash.MakeSeed(seed)) + h := maphash.New() + h.SetSeed(maphash.MakeSeed(seed)) h.AddString(s) return h.Hash() } -- 2.50.0