]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.link] cmd/link: remove extSymPayload.gotype field
authorCherry Zhang <cherryyz@google.com>
Tue, 12 May 2020 22:53:55 +0000 (18:53 -0400)
committerCherry Zhang <cherryyz@google.com>
Wed, 13 May 2020 15:44:56 +0000 (15:44 +0000)
We have the information from auxs. Remove the field, slightly
reduce memory usage.

Change-Id: I3881777cfb40b03d0e2b0e7a326b0738080548b0
Reviewed-on: https://go-review.googlesource.com/c/go/+/233778
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Than McIntosh <thanm@google.com>
src/cmd/link/internal/loader/loader.go

index 7ee5bacb5a9b6eb9eb95fadc5d5e11f46c0a8329..60f24a3b41c7ef05bcdb1cc10bf7b01d5e515e43 100644 (file)
@@ -322,7 +322,6 @@ type extSymPayload struct {
        ver      int
        kind     sym.SymKind
        objidx   uint32 // index of original object if sym made by cloneToExternal
-       gotype   Sym    // Gotype (0 if not present)
        relocs   []goobj2.Reloc
        reltypes []objabi.RelocType // relocation types
        data     []byte
@@ -1411,12 +1410,17 @@ func (l *Loader) DynidSyms() []Sym {
 // results in to a map (might want to try this at some point and see
 // if it helps speed things up).
 func (l *Loader) SymGoType(i Sym) Sym {
+       var r *oReader
+       var auxs []goobj2.Aux
        if l.IsExternal(i) {
                pp := l.getPayload(i)
-               return pp.gotype
+               r = l.objs[pp.objidx].r
+               auxs = pp.auxs
+       } else {
+               var li int
+               r, li = l.toLocal(i)
+               auxs = r.Auxs(li)
        }
-       r, li := l.toLocal(i)
-       auxs := r.Auxs(li)
        for j := range auxs {
                a := &auxs[j]
                switch a.Type() {
@@ -2580,17 +2584,6 @@ func (l *Loader) cloneToExternal(symIdx Sym) {
        // Gotype, so as to propagate it to the new symbol.
        auxs := r.Auxs(li)
        pp.auxs = auxs
-loop:
-       for j := range auxs {
-               a := &auxs[j]
-               switch a.Type() {
-               case goobj2.AuxGotype:
-                       pp.gotype = l.resolve(r, a.Sym())
-                       break loop
-               default:
-                       // nothing to do
-               }
-       }
 
        // Install new payload to global index space.
        // (This needs to happen at the end, as the accessors above