diff options
author | Andrew Gerrand <adg@golang.org> | 2013-11-01 11:00:12 +1100 |
---|---|---|
committer | Andrew Gerrand <adg@golang.org> | 2013-11-01 11:00:12 +1100 |
commit | c57029d43d7df433cf856ad241ce9f5095b5bec9 (patch) | |
tree | 5e4be325b0f3114229f0cb767f85a765dc5a4b25 | |
parent | 287fa600ed86c052f356eba4d2f5e537a45ca370 (diff) | |
download | go-c57029d43d7df433cf856ad241ce9f5095b5bec9.tar.gz go-c57029d43d7df433cf856ad241ce9f5095b5bec9.zip |
[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
-rw-r--r-- | src/cmd/gc/fmt.c | 7 | ||||
-rw-r--r-- | src/cmd/gc/reflect.c | 1 |
2 files changed, 8 insertions, 0 deletions
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; } |