tree fc645396b89cfc098389384f971c8c60e49b45c9
parent b5c950fb98042fe434edca0c2403234692f25cd4
author Ian Lance Taylor <iant@golang.org> 1577745443 -0800
committer Ian Lance Taylor <iant@golang.org> 1578002051 +0000

compiler, runtime, reflect: generate hash functions only for map keys

Right now we generate hash functions for all types, just in case they
are used as map keys. That's a lot of wasted effort and binary size
for types which will never be used as a map key. Instead, generate
hash functions only for types that we know are map keys.

Just doing that is a bit too simple, since maps with an interface type
as a key might have to hash any concrete key type that implements that
interface. So for that case, implement hashing of such types at
runtime (instead of with generated code). It will be slower, but only
for maps with interface types as keys, and maybe only a bit slower as
the aeshash time probably dominates the dispatch time.

Reorg where we keep the equals and hash functions. Move the hash function
from the key type to the map type, saving a field in every non-map type.
That leaves only one function in the alg structure, so get rid of that and
just keep the equal function in the type descriptor itself.

While we're here, reorganize the rtype struct to more closely match
the gc version.

This is the gofrontend version of https://golang.org/cl/191198.

Change-Id: Ic0e34bbcb773c921a8902dedaa718af637b2561f
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/212843
Reviewed-by: Than McIntosh <thanm@google.com>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
