mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/compile: remove rtype *uncommonType field
Instead of a pointer on every rtype, use a bit flag to indicate that the contents of uncommonType directly follows the rtype value when it is needed. This requires a bit of juggling in the compiler's rtype encoder. The backing arrays for fields in the rtype are presently encoded directly after the slice header. This packing requires separating the encoding of the uncommonType slice headers from their backing arrays. Reduces binary size of godoc by ~180KB (1.5%). No measurable change in all.bash time. For #6853. Change-Id: I60205948ceb5c0abba76fdf619652da9c465a597 Reviewed-on: https://go-review.googlesource.com/19790 Reviewed-by: Russ Cox <rsc@golang.org> Run-TryBot: David Crawshaw <crawshaw@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
0321cabdfa
commit
a24b3ed753
7 changed files with 260 additions and 84 deletions
|
|
@ -183,10 +183,10 @@ func dumptype(t *_type) {
|
|||
dumpint(tagType)
|
||||
dumpint(uint64(uintptr(unsafe.Pointer(t))))
|
||||
dumpint(uint64(t.size))
|
||||
if t.x == nil || t.x.pkgpath == nil {
|
||||
if x := t.uncommon(); x == nil || x.pkgpath == nil {
|
||||
dumpstr(t._string)
|
||||
} else {
|
||||
pkgpath := stringStructOf(t.x.pkgpath)
|
||||
pkgpath := stringStructOf(x.pkgpath)
|
||||
namestr := t.name()
|
||||
name := stringStructOf(&namestr)
|
||||
dumpint(uint64(uintptr(pkgpath.len) + 1 + uintptr(name.len)))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue