From: Cherry Zhang Date: Mon, 17 Feb 2020 04:37:47 +0000 (-0500) Subject: [dev.link] cmd/link: further reduce unnecessary field reading X-Git-Tag: go1.15beta1~679^2~120 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=c4ccd08a253406aac49744a3852d7a28894ac5dd;p=gostls13.git [dev.link] cmd/link: further reduce unnecessary field reading Following CL 218479, there are more places where we don't need to read all the fields. Change-Id: I70889cd3f0514ef2c542317f3fe24f5ef99b41d5 Reviewed-on: https://go-review.googlesource.com/c/go/+/220057 Run-TryBot: Cherry Zhang TryBot-Result: Gobot Gobot Reviewed-by: Jeremy Faller Reviewed-by: Than McIntosh --- diff --git a/src/cmd/link/internal/ld/deadcode2.go b/src/cmd/link/internal/ld/deadcode2.go index 06cc6d0daf..4733f47446 100644 --- a/src/cmd/link/internal/ld/deadcode2.go +++ b/src/cmd/link/internal/ld/deadcode2.go @@ -86,7 +86,7 @@ func (d *deadcodePass2) init() { // but we do keep the symbols it refers to. exportsIdx := d.ldr.Lookup("go.plugin.exports", 0) if exportsIdx != 0 { - d.ReadRelocs(exportsIdx) + d.ReadRelocSyms(exportsIdx) for i := 0; i < len(d.rtmp); i++ { d.mark(d.rtmp[i].Sym, 0) } @@ -227,7 +227,7 @@ func (d *deadcodePass2) mark(symIdx, parent loader.Sym) { } func (d *deadcodePass2) markMethod(m methodref2) { - d.ReadRelocs(m.src) + d.ReadRelocSyms(m.src) d.mark(d.rtmp[m.r].Sym, m.src) d.mark(d.rtmp[m.r+1].Sym, m.src) d.mark(d.rtmp[m.r+2].Sym, m.src) @@ -410,3 +410,9 @@ func (d *deadcodePass2) ReadRelocs(symIdx loader.Sym) { relocs := d.ldr.Relocs(symIdx) d.rtmp = relocs.ReadAll(d.rtmp) } + +// Like ReadRelocs, but only reads target symbols. +func (d *deadcodePass2) ReadRelocSyms(symIdx loader.Sym) { + relocs := d.ldr.Relocs(symIdx) + d.rtmp = relocs.ReadSyms(d.rtmp) +}