diff options
| author | shaharko <skohanim@gmail.com> | 2016-10-19 07:33:16 +0300 |
|---|---|---|
| committer | Shahar Kohanim <skohanim@gmail.com> | 2016-10-25 19:44:06 +0000 |
| commit | d8d445280a6a7e5f3535e8b49e9ae248f2627759 (patch) | |
| tree | 9924c85ccf22d27fd1d3d654435199b77c7571ce /src/cmd/link/internal/ld/deadcode.go | |
| parent | 5a9549260df1f5ffcbdd5938861fea9f74478661 (diff) | |
| download | go-d8d445280a6a7e5f3535e8b49e9ae248f2627759.tar.xz | |
cmd/compile, cmd/link: more efficient typelink generation
Instead of generating typelink symbols in the compiler
mark types that should have typelinks with a flag.
The linker detects this flag and adds the marked types
to the typelink table.
name old s/op new s/op delta
LinkCmdCompile 0.27 ± 6% 0.25 ± 6% -6.93% (p=0.000 n=97+98)
LinkCmdGo 0.30 ± 5% 0.29 ±10% -4.22% (p=0.000 n=97+99)
name old MaxRSS new MaxRSS delta
LinkCmdCompile 112k ± 3% 106k ± 2% -4.85% (p=0.000 n=100+100)
LinkCmdGo 107k ± 3% 103k ± 3% -3.00% (p=0.000 n=100+100)
Change-Id: Ic95dd4b0101e90c1fa262c9c6c03a2028d6b3623
Reviewed-on: https://go-review.googlesource.com/31772
Run-TryBot: Shahar Kohanim <skohanim@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: David Crawshaw <crawshaw@golang.org>
Diffstat (limited to 'src/cmd/link/internal/ld/deadcode.go')
| -rw-r--r-- | src/cmd/link/internal/ld/deadcode.go | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/src/cmd/link/internal/ld/deadcode.go b/src/cmd/link/internal/ld/deadcode.go index 696a55849c..7ecc5b1ec2 100644 --- a/src/cmd/link/internal/ld/deadcode.go +++ b/src/cmd/link/internal/ld/deadcode.go @@ -110,11 +110,10 @@ func deadcode(ctxt *Link) { } if Buildmode != BuildmodeShared { - // Keep a typelink or itablink if the symbol it points at is being kept. - // (When BuildmodeShared, always keep typelinks and itablinks.) + // Keep a itablink if the symbol it points at is being kept. + // (When BuildmodeShared, always keep itablinks.) for _, s := range ctxt.Syms.Allsym { - if strings.HasPrefix(s.Name, "go.typelink.") || - strings.HasPrefix(s.Name, "go.itablink.") { + if strings.HasPrefix(s.Name, "go.itablink.") { s.Attr.Set(AttrReachable, len(s.R) == 1 && s.R[0].Sym.Attr.Reachable()) } } |
