]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: use named fields in nodl
authorJosh Bleecher Snyder <josharian@gmail.com>
Wed, 17 Apr 2019 18:37:54 +0000 (11:37 -0700)
committerJosh Bleecher Snyder <josharian@gmail.com>
Wed, 17 Apr 2019 20:52:24 +0000 (20:52 +0000)
We use a struct to allocate two structs simultaneously.
Because we embed structs rather than using named fields,
the compiler generates forwarding method stubs for the
anonymous type.

In theory, the compiler could detect that these stubs are unnecessary:
The value in question has a very limited scope, the methods are not
called, and there are operations where an interface would need
to be satisfied.

This compiler optimization is unlikely to happen, though;
the ROI is likely to be low.

Instead, just give the fields names. Cuts 64k off the cmd/compile binary.

Change-Id: Id10ec69c23cd2dd33306f4c1bc75724e3c571b56
Reviewed-on: https://go-review.googlesource.com/c/go/+/172579
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/cmd/compile/internal/gc/subr.go

index 156e3c2c94364b0717ee0c23333bbe1bf9b55ecb..5e74bee0315725767bbd1efca56088de7578f570 100644 (file)
@@ -306,20 +306,20 @@ func nodl(pos src.XPos, op Op, nleft, nright *Node) *Node {
        switch op {
        case OCLOSURE, ODCLFUNC:
                var x struct {
-                       Node
-                       Func
+                       Node
+                       Func
                }
-               n = &x.Node
-               n.Func = &x.Func
+               n = &x.n
+               n.Func = &x.f
        case ONAME:
                Fatalf("use newname instead")
        case OLABEL, OPACK:
                var x struct {
-                       Node
-                       Name
+                       Node
+                       Name
                }
-               n = &x.Node
-               n.Name = &x.Name
+               n = &x.n
+               n.Name = &x.m
        default:
                n = new(Node)
        }