Commit 04c40c97 authored by Rémy Oudompheng's avatar Rémy Oudompheng

cmd/gc: don't generate algs for internal map types.

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
parent 22e8f82e
......@@ -141,6 +141,7 @@ struct Type
{
uchar etype;
uchar nointerface;
uchar noalg;
uchar chan;
uchar trecur; // to detect loops
uchar printed;
......
......@@ -131,6 +131,7 @@ mapbucket(Type *t)
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.
......@@ -192,6 +193,7 @@ hmap(Type *t)
bucket = mapbucket(t);
h = typ(TSTRUCT);
h->noalg = 1;
offset = widthint; // count
offset += 4; // flags
......
......@@ -547,6 +547,9 @@ algtype1(Type *t, Type **bad)
if(bad)
*bad = T;
if(t->noalg)
return ANOEQ;
switch(t->etype) {
case TANY:
case TFORW:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment