]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.link] cmd/link: delete ctxt.Reachparent
authorCherry Zhang <cherryyz@google.com>
Tue, 21 Apr 2020 23:54:37 +0000 (19:54 -0400)
committerCherry Zhang <cherryyz@google.com>
Wed, 22 Apr 2020 14:57:26 +0000 (14:57 +0000)
It is no longer needed as we have converted the fieldtrack pass
to using the loader.

Also free loader.Reachparent after we are done with it.

Change-Id: Ibc4b29f282e1e4aea363a1b549755e31f84b0295
Reviewed-on: https://go-review.googlesource.com/c/go/+/229322
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Jeremy Faller <jeremy@golang.org>
src/cmd/link/internal/ld/deadcode.go
src/cmd/link/internal/ld/go.go
src/cmd/link/internal/ld/lib.go
src/cmd/link/internal/ld/link.go
src/cmd/link/internal/ld/main.go
src/cmd/link/internal/loader/loader.go

index 26c468c7a5973d554f50261f381c2599bd16c53d..bb74b9e70dfc729a90cca725e4e42cc7b43e6627 100644 (file)
@@ -45,7 +45,7 @@ type deadcodePass struct {
 func (d *deadcodePass) init() {
        d.ldr.InitReachable()
        d.ifaceMethod = make(map[methodsig]bool)
-       if d.ctxt.Reachparent != nil {
+       if objabi.Fieldtrack_enabled != 0 {
                d.ldr.Reachparent = make([]loader.Sym, d.ldr.NSym())
        }
        heap.Init(&d.wq)
@@ -190,7 +190,7 @@ func (d *deadcodePass) mark(symIdx, parent loader.Sym) {
        if symIdx != 0 && !d.ldr.AttrReachable(symIdx) {
                d.wq.push(symIdx)
                d.ldr.SetAttrReachable(symIdx, true)
-               if d.ctxt.Reachparent != nil {
+               if objabi.Fieldtrack_enabled != 0 {
                        d.ldr.Reachparent[symIdx] = parent
                }
                if *flagDumpDep {
index 3b9d4ba7cc27117be59dc1cfe5ee5222a6361ba2..8474cefa394d7569b9b77d82f2e7be94f746cc40 100644 (file)
@@ -383,6 +383,7 @@ func fieldtrack(arch *sys.Arch, l *loader.Loader) {
                        }
                }
        }
+       l.Reachparent = nil // we are done with it
        if *flagFieldTrack == "" {
                return
        }
index 76f8e36556f552c584ae055146ea9dba00dfe14c..4bc7187292f7b61cac13c4cd67cb6eb075a9a507 100644 (file)
@@ -2812,7 +2812,7 @@ func (ctxt *Link) loadlibfull() {
        }
 
        // Pull the symbols out.
-       ctxt.loader.ExtractSymbols(ctxt.Syms, ctxt.Reachparent)
+       ctxt.loader.ExtractSymbols(ctxt.Syms)
        ctxt.lookup = ctxt.Syms.ROLookup
 
        // Recreate dynexp using *sym.Symbol instead of loader.Sym
index 97599661c51b51b09d02fbd9dfb554261e156264..f6441a5b6574c5c33f18241e5dabdf99a5f39899 100644 (file)
@@ -82,9 +82,6 @@ type Link struct {
 
        tramps []loader.Sym // trampolines
 
-       // Used to implement field tracking.
-       Reachparent map[*sym.Symbol]*sym.Symbol
-
        compUnits []*sym.CompilationUnit // DWARF compilation units
        runtimeCU *sym.CompilationUnit   // One of the runtime CUs, the last one seen.
 
index 32a2eff2b5fa6c5860663f7a7293d35e3effb3a5..91656170b873fd5d9d7b24fda57d3cd907440793 100644 (file)
@@ -35,7 +35,6 @@ import (
        "cmd/internal/objabi"
        "cmd/internal/sys"
        "cmd/link/internal/benchmark"
-       "cmd/link/internal/sym"
        "flag"
        "log"
        "os"
@@ -156,9 +155,6 @@ func Main(arch *sys.Arch, theArch Arch) {
                }
        }
 
-       if objabi.Fieldtrack_enabled != 0 {
-               ctxt.Reachparent = make(map[*sym.Symbol]*sym.Symbol)
-       }
        checkStrictDups = *FlagStrictDups
 
        startProfile()
index 9fd2bb28b6dcdbec44a89a13558016b6792c623e..1dbe4dfe3cb98815d006721dc8af12b8649d44db 100644 (file)
@@ -2128,7 +2128,7 @@ func (l *Loader) PropagateLoaderChangesToSymbols(toconvert []Sym, anonVerReplace
 
 // ExtractSymbols grabs the symbols out of the loader for work that hasn't been
 // ported to the new symbol type.
-func (l *Loader) ExtractSymbols(syms *sym.Symbols, rp map[*sym.Symbol]*sym.Symbol) {
+func (l *Loader) ExtractSymbols(syms *sym.Symbols) {
        // Add symbols to the ctxt.Syms lookup table. This explicitly skips things
        // created via loader.Create (marked with versions less than zero), since
        // if we tried to add these we'd wind up with collisions. We do, however,
@@ -2148,13 +2148,6 @@ func (l *Loader) ExtractSymbols(syms *sym.Symbols, rp map[*sym.Symbol]*sym.Symbo
                }
        }
 
-       for i, s := range l.Reachparent {
-               if i == 0 {
-                       continue
-               }
-               rp[l.Syms[i]] = l.Syms[s]
-       }
-
        // Provide lookup functions for sym.Symbols.
        l.SymLookup = func(name string, ver int) *sym.Symbol {
                i := l.LookupOrCreateSym(name, ver)