]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: omit unnecessary interface method expression wrappers
authorMatthew Dempsky <mdempsky@google.com>
Tue, 10 Apr 2018 22:13:49 +0000 (15:13 -0700)
committerMatthew Dempsky <mdempsky@google.com>
Tue, 10 Apr 2018 22:28:17 +0000 (22:28 +0000)
We'll always generate method expression wrappers for declared
interface types in their own package, so no need to generate them in
downstream packages.

Noticed by gri@ while looking into #21282.

Change-Id: I4fb7051b4e15297933da05fdd2b111d6b8f4178e
Reviewed-on: https://go-review.googlesource.com/106175
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Robert Griesemer <gri@golang.org>
src/cmd/compile/internal/gc/subr.go

index 49c1b485c95c63ebbe314013e2d0a44ed79393e1..f46279cf6e5f0f2acee2e226e8156f615c6b4880 100644 (file)
@@ -1633,6 +1633,11 @@ func genwrapper(rcvr *types.Type, method *types.Field, newnam *types.Sym) {
                return
        }
 
+       // Only generate I.M wrappers for I in I's own package.
+       if rcvr.IsInterface() && rcvr.Sym != nil && rcvr.Sym.Pkg != localpkg {
+               return
+       }
+
        lineno = autogeneratedPos
 
        dclcontext = PEXTERN