Fake types describing the internal structure of hashmaps are
generated for use by precise GC.
Generating hash and eq functions for these fake types slows down
the build and wastes space: the go tool binary size is 13MB
instead of 12MB, and the package size on amd64 is 48.7MB instead
of 45.3MB.
R=golang-dev, daniel.morsing, r, khr, rsc, iant
CC=golang-dev
https://golang.org/cl/
13698043
{
uchar etype;
uchar nointerface;
+ uchar noalg;
uchar chan;
uchar trecur; // to detect loops
uchar printed;
valtype = ptrto(valtype);
bucket = typ(TSTRUCT);
+ bucket->noalg = 1;
// The first field is: uint8 topbits[BUCKETSIZE].
// We don't need to encode it as GC doesn't care about it.
bucket = mapbucket(t);
h = typ(TSTRUCT);
+ h->noalg = 1;
offset = widthint; // count
offset += 4; // flags
if(bad)
*bad = T;
+ if(t->noalg)
+ return ANOEQ;
+
switch(t->etype) {
case TANY:
case TFORW: