]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: move Node.Pack to Node.Name.Pack
authorRuss Cox <rsc@golang.org>
Wed, 27 May 2015 03:08:39 +0000 (23:08 -0400)
committerRuss Cox <rsc@golang.org>
Wed, 3 Jun 2015 19:50:26 +0000 (19:50 +0000)
$ sizeof -p cmd/compile/internal/gc Node
Node 232
$

Change-Id: I4be025f4ec11f882f24ae7582821d36d3b122b77
Reviewed-on: https://go-review.googlesource.com/10526
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/cmd/compile/internal/gc/align.go
src/cmd/compile/internal/gc/dcl.go
src/cmd/compile/internal/gc/export.go
src/cmd/compile/internal/gc/go.y
src/cmd/compile/internal/gc/lex.go
src/cmd/compile/internal/gc/subr.go
src/cmd/compile/internal/gc/syntax.go
src/cmd/compile/internal/gc/y.go

index 892595a21411ed03280d3b5003b4ec64c37be73f..54e840d8dab5510f3147b1e778ee05e464aedb5c 100644 (file)
@@ -432,6 +432,7 @@ func typeinit() {
        Types[TUNSAFEPTR] = t
        t.Sym = Pkglookup("Pointer", unsafepkg)
        t.Sym.Def = typenod(t)
+       t.Sym.Def.Name = new(Name)
 
        dowidth(Types[TUNSAFEPTR])
 
@@ -654,6 +655,7 @@ func typeinit() {
                dowidth(t)
                Types[etype] = t
                s1.Def = typenod(t)
+               s1.Def.Name = new(Name)
        }
 
        Array_array = int(Rnd(0, int64(Widthptr)))
index fc2f14a02e98569f765e890bce894619c9c71e83..2a88861dab58975cc379ef8e49b3ef4457a26057 100644 (file)
@@ -174,6 +174,10 @@ func declare(n *Node, ctxt uint8) {
                return
        }
 
+       if n.Name == nil {
+               // named OLITERAL needs Name; most OLITERALs don't.
+               n.Name = new(Name)
+       }
        n.Lineno = int32(parserline())
        s := n.Sym
 
index 623d61ad74456929e543881ce6b9713f7e210c60..33aa0ad11f38e804692451f2ee8727fe3067495f 100644 (file)
@@ -416,6 +416,7 @@ func pkgtype(s *Sym) *Type {
                t := typ(TFORW)
                t.Sym = s
                s.Def = typenod(t)
+               s.Def.Name = new(Name)
        }
 
        if s.Def.Type == nil {
index b8e9ceb304d054e185985f1c8b86c516bb986d6f..b37d39404c99ea0cdae7393874f6007bf367fbd5 100644 (file)
@@ -1221,8 +1221,8 @@ name:
        sym     %prec NotParen
        {
                $$ = oldname($1);
-               if $$.Pack != nil {
-                       $$.Pack.Used = true;
+               if $$.Name != nil && $$.Name.Pack != nil {
+                       $$.Name.Pack.Used = true;
                }
        }
 
@@ -1687,8 +1687,8 @@ packname:
 
                $$ = $1;
                n = oldname($1);
-               if n.Pack != nil {
-                       n.Pack.Used = true;
+               if n.Name != nil && n.Name.Pack != nil {
+                       n.Name.Pack.Used = true;
                }
        }
 |      LNAME '.' sym
index fd64dabb218082f94e3173b5da916117f132f070..32452e6692642aeefd3c9f9c88d1e867e58d5fd1 100644 (file)
@@ -2182,6 +2182,7 @@ func lexinit() {
 
                        s1.Lexical = LNAME
                        s1.Def = typenod(t)
+                       s1.Def.Name = new(Name)
                        continue
                }
 
@@ -2207,11 +2208,13 @@ func lexinit() {
        s = Pkglookup("true", builtinpkg)
        s.Def = Nodbool(true)
        s.Def.Sym = Lookup("true")
+       s.Def.Name = new(Name)
        s.Def.Type = idealbool
 
        s = Pkglookup("false", builtinpkg)
        s.Def = Nodbool(false)
        s.Def.Sym = Lookup("false")
+       s.Def.Name = new(Name)
        s.Def.Type = idealbool
 
        s = Lookup("_")
@@ -2235,6 +2238,7 @@ func lexinit() {
        v.U = new(NilVal)
        s.Def = nodlit(v)
        s.Def.Sym = s
+       s.Def.Name = new(Name)
 }
 
 func lexinit1() {
@@ -2282,6 +2286,7 @@ func lexinit1() {
        bytetype.Sym = s1
        s1.Lexical = LNAME
        s1.Def = typenod(bytetype)
+       s1.Def.Name = new(Name)
 
        // rune alias
        s = Lookup("rune")
@@ -2292,6 +2297,7 @@ func lexinit1() {
        runetype.Sym = s1
        s1.Lexical = LNAME
        s1.Def = typenod(runetype)
+       s1.Def.Name = new(Name)
 }
 
 func lexfini() {
@@ -2311,6 +2317,7 @@ func lexfini() {
                etype = syms[i].etype
                if etype != Txxx && (etype != TANY || Debug['A'] != 0) && s.Def == nil {
                        s.Def = typenod(Types[etype])
+                       s.Def.Name = new(Name)
                        s.Origpkg = builtinpkg
                }
 
@@ -2328,6 +2335,7 @@ func lexfini() {
                s = Lookup(Thearch.Typedefs[i].Name)
                if s.Def == nil {
                        s.Def = typenod(Types[Thearch.Typedefs[i].Etype])
+                       s.Def.Name = new(Name)
                        s.Origpkg = builtinpkg
                }
        }
@@ -2338,18 +2346,21 @@ func lexfini() {
 
        if s.Def == nil {
                s.Def = typenod(bytetype)
+               s.Def.Name = new(Name)
                s.Origpkg = builtinpkg
        }
 
        s = Lookup("error")
        if s.Def == nil {
                s.Def = typenod(errortype)
+               s.Def.Name = new(Name)
                s.Origpkg = builtinpkg
        }
 
        s = Lookup("rune")
        if s.Def == nil {
                s.Def = typenod(runetype)
+               s.Def.Name = new(Name)
                s.Origpkg = builtinpkg
        }
 
@@ -2359,6 +2370,7 @@ func lexfini() {
                v.U = new(NilVal)
                s.Def = nodlit(v)
                s.Def.Sym = s
+               s.Def.Name = new(Name)
                s.Origpkg = builtinpkg
        }
 
@@ -2373,6 +2385,7 @@ func lexfini() {
        if s.Def == nil {
                s.Def = Nodbool(true)
                s.Def.Sym = s
+               s.Def.Name = new(Name)
                s.Origpkg = builtinpkg
        }
 
@@ -2380,6 +2393,7 @@ func lexfini() {
        if s.Def == nil {
                s.Def = Nodbool(false)
                s.Def.Sym = s
+               s.Def.Name = new(Name)
                s.Origpkg = builtinpkg
        }
 
@@ -2572,9 +2586,9 @@ func mkpackage(pkgname string) {
                        if s.Def.Sym != s {
                                // throw away top-level name left over
                                // from previous import . "x"
-                               if s.Def.Pack != nil && !s.Def.Pack.Used && nsyntaxerrors == 0 {
-                                       pkgnotused(int(s.Def.Pack.Lineno), s.Def.Pack.Pkg.Path, "")
-                                       s.Def.Pack.Used = true
+                               if s.Def.Name != nil && s.Def.Name.Pack != nil && !s.Def.Name.Pack.Used && nsyntaxerrors == 0 {
+                                       pkgnotused(int(s.Def.Name.Pack.Lineno), s.Def.Name.Pack.Pkg.Path, "")
+                                       s.Def.Name.Pack.Used = true
                                }
 
                                s.Def = nil
index 4dd8b29b8e5795164d4a8da3dd5b9e9292fb622a..dc85dc4237e014c92b436ceb200e3b99e6f94762 100644 (file)
@@ -331,7 +331,10 @@ func importdot(opkg *Pkg, pack *Node) {
 
                s1.Def = s.Def
                s1.Block = s.Block
-               s1.Def.Pack = pack
+               if s1.Def.Name == nil {
+                       Dump("s1def", s1.Def)
+               }
+               s1.Def.Name.Pack = pack
                s1.Origpkg = opkg
                n++
        }
index 02b5e9578d22e742142317e0cac1dbeae6307e15..5878c686a0ca2735f43fe3c8daeb6dfa109239cb 100644 (file)
@@ -30,7 +30,6 @@ type Node struct {
 
        // ONAME
        Name  *Name
-       Pack  *Node // real package for import . names
        Curfn *Node // function for local variables
        Param *Param
 
@@ -94,6 +93,7 @@ type Node struct {
 
 // Name holds Node fields used only by ONAME nodes.
 type Name struct {
+       Pack      *Node // real package for import . names
        Heapaddr  *Node // temp holding heap address of param
        Inlvar    *Node // ONAME substitute while inlining
        Defn      *Node // initializing assignment
index 1ee619f6d6e51d9f38db7bfe963398cb33fa30b3..7399dde08b26e397d15aba299e4825f549892379 100644 (file)
@@ -2390,8 +2390,8 @@ yydefault:
                //line go.y:1222
                {
                        yyVAL.node = oldname(yyDollar[1].sym)
-                       if yyVAL.node.Pack != nil {
-                               yyVAL.node.Pack.Used = true
+                       if yyVAL.node.Name != nil && yyVAL.node.Name.Pack != nil {
+                               yyVAL.node.Name.Pack.Used = true
                        }
                }
        case 164:
@@ -2846,8 +2846,8 @@ yydefault:
 
                        yyVAL.sym = yyDollar[1].sym
                        n = oldname(yyDollar[1].sym)
-                       if n.Pack != nil {
-                               n.Pack.Used = true
+                       if n.Name != nil && n.Name.Pack != nil {
+                               n.Name.Pack.Used = true
                        }
                }
        case 237: