]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: remove use of Node.Nname in initplan
authorRuss Cox <rsc@golang.org>
Wed, 27 May 2015 14:44:23 +0000 (10:44 -0400)
committerRuss Cox <rsc@golang.org>
Wed, 3 Jun 2015 20:10:42 +0000 (20:10 +0000)
$ sizeof -p cmd/compile/internal/gc Node
Node 168
$

Change-Id: Ie7e2cee8cec101560bd5dd013b23969278f89b12
Reviewed-on: https://go-review.googlesource.com/10536
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
src/cmd/compile/internal/gc/sinit.go

index 53867d90f4135e81cd60c3a91e9bb9f4890f7771..c00e3c1d76d251fee912cd324b77842148feb69e 100644 (file)
@@ -20,6 +20,7 @@ const (
 
 var initlist *NodeList
 var initplans = make(map[*Node]*InitPlan)
+var inittemps = make(map[*Node]*Node)
 
 // init1 walks the AST starting at n, and accumulates in out
 // the list of definitions needing init code in dependency order.
@@ -327,7 +328,7 @@ func staticcopy(l *Node, r *Node, out **NodeList) bool {
 
                        // copy pointer
                case OARRAYLIT, OSTRUCTLIT, OMAPLIT:
-                       gdata(l, Nod(OADDR, r.Nname, nil), int(l.Type.Width))
+                       gdata(l, Nod(OADDR, inittemps[r], nil), int(l.Type.Width))
 
                        return true
                }
@@ -335,7 +336,7 @@ func staticcopy(l *Node, r *Node, out **NodeList) bool {
        case OARRAYLIT:
                if Isslice(r.Type) {
                        // copy slice
-                       a := r.Nname
+                       a := inittemps[r]
 
                        n1 := *l
                        n1.Xoffset = l.Xoffset + int64(Array_array)
@@ -424,7 +425,7 @@ func staticassign(l *Node, r *Node, out **NodeList) bool {
                case OARRAYLIT, OMAPLIT, OSTRUCTLIT:
                        a := staticname(r.Left.Type, 1)
 
-                       r.Nname = a
+                       inittemps[r] = a
                        gdata(l, Nod(OADDR, a, nil), int(l.Type.Width))
 
                        // Init underlying literal.
@@ -450,7 +451,7 @@ func staticassign(l *Node, r *Node, out **NodeList) bool {
                        ta.Type = r.Type.Type
                        ta.Bound = Mpgetfix(r.Right.Val.U.(*Mpint))
                        a := staticname(ta, 1)
-                       r.Nname = a
+                       inittemps[r] = a
                        n1 = *l
                        n1.Xoffset = l.Xoffset + int64(Array_array)
                        gdata(&n1, Nod(OADDR, a, nil), Widthptr)