]> Cypherpunks.ru repositories - gostls13.git/commit
cmd/compile, cmd/link: use weak reference in itab
authorCherry Zhang <cherryyz@google.com>
Sun, 8 Nov 2020 20:18:35 +0000 (15:18 -0500)
committerCherry Zhang <cherryyz@google.com>
Wed, 24 Mar 2021 14:38:53 +0000 (14:38 +0000)
commite8700f1ce6f4103207f470cce443f04377baa600
tree9f9bb1d99a7209b6f1500ca2e688d4765fb248ec
parent747f426944b1c0c3a26537ef78cb6c5bd4d05cde
cmd/compile, cmd/link: use weak reference in itab

When converting a type T to a non-empty interface I, we build the
itab which contains the code pointers of the methods. Currently,
this brings those methods live (if the itab is live), even if the
interface method is never used. This CL changes the itab to use
weak references, so the methods can be pruned if not otherwise
live.

Fixes #42421.

Change-Id: Iee5de2ba11d603c5a102a2ba60440d839a7f9702
Reviewed-on: https://go-review.googlesource.com/c/go/+/268479
Trust: Cherry Zhang <cherryyz@google.com>
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Than McIntosh <thanm@google.com>
src/cmd/compile/internal/objw/objw.go
src/cmd/compile/internal/reflectdata/reflect.go
src/cmd/internal/obj/data.go
src/cmd/internal/objabi/reloctype.go
src/cmd/link/internal/ld/data.go
src/cmd/link/internal/ld/deadcode.go
src/cmd/link/internal/ld/lib.go
src/cmd/link/internal/ld/testdata/deadcode/ifacemethod4.go
src/runtime/iface.go
src/runtime/type.go