From: Andrew Gerrand Date: Fri, 1 Nov 2013 00:00:12 +0000 (+1100) Subject: [release-branch.go1.2] cmd/gc: shorten name used for map bucket type X-Git-Tag: go1.2rc3~38 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=c57029d43d7df433cf856ad241ce9f5095b5bec9;p=gostls13.git [release-branch.go1.2] cmd/gc: shorten name used for map bucket type ««« CL 15110044 / 95336afd420c cmd/gc: shorten name used for map bucket type Before: type.struct { buckets *struct { overflow *struct { overflow *struct { overflow *struct { overflow *struct { overflow *<...>; keys [8]string; values [8]*"".RangeTable }; keys [8]string; values [8]*"".RangeTable }; keys [8]string; values [8]*"".RangeTable }; keys [8]string; values [8]*"".RangeTable }; keys [8]string; values [8]*"".RangeTable }; oldbuckets *struct { overflow *struct { overflow *struct { overflow *struct { overflow *struct { overflow *<...>; keys [8]string; values [8]*"".RangeTable }; keys [8]string; values [8]*"".RangeTable }; keys [8]string; values [8]*"".RangeTable }; keys [8]string; values [8]*"".RangeTable }; keys [8]string; values [8]*"".RangeTable } } After: type.map.bucket[string]*"".RangeTable This makes debugging maps a little nicer, and it takes up less space in the binary. R=golang-dev, r CC=golang-dev, khr https://golang.org/cl/15110044 »»» R=golang-dev CC=golang-dev https://golang.org/cl/20050044 --- diff --git a/src/cmd/gc/fmt.c b/src/cmd/gc/fmt.c index c525a56cbe..9cd3448701 100644 --- a/src/cmd/gc/fmt.c +++ b/src/cmd/gc/fmt.c @@ -700,6 +700,13 @@ typefmt(Fmt *fp, Type *t) return 0; case TSTRUCT: + // Format the bucket struct for map[x]y as map.bucket[x]y. + // This avoids a recursive print that generates very long names. + if(t->hmap != T) { + t = t->hmap; + return fmtprint(fp, "map.bucket[%T]%T", t->down, t->type); + } + if(t->funarg) { fmtstrcpy(fp, "("); if(fmtmode == FTypeId || fmtmode == FErr) { // no argument names on function signature, and no "noescape" tags diff --git a/src/cmd/gc/reflect.c b/src/cmd/gc/reflect.c index ea66eb94b2..0a8aa8d7a6 100644 --- a/src/cmd/gc/reflect.c +++ b/src/cmd/gc/reflect.c @@ -229,6 +229,7 @@ hmap(Type *t) h->width = offset; h->local = t->local; t->hmap = h; + h->hmap = t; return h; }