aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/link/internal/loader/loader.go
diff options
context:
space:
mode:
authorCherry Zhang <cherryyz@google.com>2020-04-28 01:08:12 -0400
committerCherry Zhang <cherryyz@google.com>2020-04-29 18:10:53 +0000
commit0bbc19760b978ba461ab98872620abc48c1e9ac4 (patch)
treee21fb6e945eea209c52c9a0b396cc91831c04443 /src/cmd/link/internal/loader/loader.go
parent65c1805e77137c6165ea3ad49b8528fc08cef1ea (diff)
downloadgo-0bbc19760b978ba461ab98872620abc48c1e9ac4.tar.gz
go-0bbc19760b978ba461ab98872620abc48c1e9ac4.zip
[dev.link] cmd/link: free compressed symbols after dwarfcompress
Once the symbol is compressed, we will not need the uncompressed symbol content. Free its memory. Linking cmd/compile, name old live-B new live-B delta Dwarfcompress_GC 42.7M ± 0% 37.9M ± 0% -11.31% (p=0.008 n=5+5) Change-Id: Ib6cc73832946d158ff4f5b4f31be9c35ba7cf103 Reviewed-on: https://go-review.googlesource.com/c/go/+/230859 Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Than McIntosh <thanm@google.com> Reviewed-by: Jeremy Faller <jeremy@golang.org>
Diffstat (limited to 'src/cmd/link/internal/loader/loader.go')
-rw-r--r--src/cmd/link/internal/loader/loader.go10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/cmd/link/internal/loader/loader.go b/src/cmd/link/internal/loader/loader.go
index a6d9417c00..e4b8098a8a 100644
--- a/src/cmd/link/internal/loader/loader.go
+++ b/src/cmd/link/internal/loader/loader.go
@@ -2054,7 +2054,6 @@ func (l *Loader) LoadFull(arch *sys.Arch, syms *sym.Symbols, needReloc bool) {
// be copied in a later loop).
toConvert := make([]Sym, 0, len(l.payloads))
for _, i := range l.extReader.syms {
- sname := l.RawSymName(i)
if !l.attrReachable.Has(i) {
continue
}
@@ -2065,7 +2064,7 @@ func (l *Loader) LoadFull(arch *sys.Arch, syms *sym.Symbols, needReloc bool) {
// outer/sub processing below. Note that once we do this,
// we'll need to get at the payload for a symbol with direct
// reference to l.payloads[] as opposed to calling l.getPayload().
- s := l.allocSym(sname, 0)
+ s := l.allocSym(pp.name, 0)
l.installSym(i, s)
toConvert = append(toConvert, i)
}
@@ -2655,6 +2654,13 @@ func (l *Loader) CreateStaticSym(name string) Sym {
return l.newExtSym(name, l.anonVersion)
}
+func (l *Loader) FreeSym(i Sym) {
+ if l.IsExternal(i) {
+ pp := l.getPayload(i)
+ *pp = extSymPayload{}
+ }
+}
+
func loadObjFull(l *Loader, r *oReader, needReloc bool) {
for i, n := 0, r.NSym()+r.NNonpkgdef(); i < n; i++ {
// A symbol may be a dup or overwritten. In this case, its