From: Than McIntosh Date: Tue, 10 Mar 2020 14:08:50 +0000 (-0400) Subject: [dev.link] cmd/link: use shared reloc slice in writelines method X-Git-Tag: go1.15beta1~679^2~88 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=69d9664f18803b01927f27b607fa565301f7873e;p=gostls13.git [dev.link] cmd/link: use shared reloc slice in writelines method Move to a shared/reused slice of loader.Reloc's in a couple of places in the linker's DWARF writelines method, as opposed to allocating a new slice each time. Small performance improvement. Change-Id: I06c64cf7ca00162d24d9421f1d6405c8808ebb83 Reviewed-on: https://go-review.googlesource.com/c/go/+/222758 Run-TryBot: Than McIntosh TryBot-Result: Gobot Gobot Reviewed-by: Cherry Zhang --- diff --git a/src/cmd/link/internal/ld/dwarf.go b/src/cmd/link/internal/ld/dwarf.go index b94e55fc2e..5e89b3897e 100644 --- a/src/cmd/link/internal/ld/dwarf.go +++ b/src/cmd/link/internal/ld/dwarf.go @@ -1213,11 +1213,12 @@ func (d *dwctxt2) writelines(unit *sym.CompilationUnit, ls loader.Sym) { // Grab files for inlined functions. // TODO: With difficulty, this could be moved into the compiler. + rslice := []loader.Reloc{} for _, s := range unit.Textp2 { fnSym := loader.Sym(s) infosym, _, _, _ := d.ldr.GetFuncDwarfAuxSyms(fnSym) drelocs := d.ldr.Relocs(infosym) - rslice := drelocs.ReadSyms(nil) + rslice = drelocs.ReadSyms(rslice) for ri := 0; ri < len(rslice); ri++ { r := &rslice[ri] if r.Type != objabi.R_DWARFFILEREF { @@ -1307,7 +1308,7 @@ func (d *dwctxt2) writelines(unit *sym.CompilationUnit, ls loader.Sym) { fnu := d.ldr.MakeSymbolUpdater(fnSym) relocs := d.ldr.Relocs(fnSym) - rslice := relocs.ReadAll(nil) + rslice = relocs.ReadAll(rslice) for ri := range rslice { r := &rslice[ri]