]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/gc: prevent ngotype from allocating.
authorRémy Oudompheng <oudomphe@phare.normalesup.org>
Sun, 9 Dec 2012 18:27:23 +0000 (19:27 +0100)
committerRémy Oudompheng <oudomphe@phare.normalesup.org>
Sun, 9 Dec 2012 18:27:23 +0000 (19:27 +0100)
R=golang-dev, dave, rsc
CC=golang-dev
https://golang.org/cl/6904061

src/cmd/gc/go.h
src/cmd/gc/reflect.c
src/cmd/gc/subr.c

index a60018be0f000ed1bda1111c0ecd0597c94949a2..0280c965c920d9f4b9e58c41bf912a4eeae38694 100644 (file)
@@ -1211,6 +1211,7 @@ void      dumptypestructs(void);
 Type*  methodfunc(Type *f, Type*);
 Node*  typename(Type *t);
 Sym*   typesym(Type *t);
+Sym*   typenamesym(Type *t);
 Sym*   tracksym(Type *t);
 Sym*   typesymprefix(char *prefix, Type *t);
 int    haspointers(Type *t);
index 89ded4bd409f0337ecb6b78f711332e13190c5eb..849a1edb27b520bf7f394ae90fc9efc3f10bbf1c 100644 (file)
@@ -652,8 +652,8 @@ typesymprefix(char *prefix, Type *t)
        return s;
 }
 
-Node*
-typename(Type *t)
+Sym*
+typenamesym(Type *t)
 {
        Sym *s;
        Node *n;
@@ -674,7 +674,16 @@ typename(Type *t)
 
                signatlist = list(signatlist, typenod(t));
        }
+       return s->def->sym;
+}
+
+Node*
+typename(Type *t)
+{
+       Sym *s;
+       Node *n;
 
+       s = typenamesym(t);
        n = nod(OADDR, s->def, N);
        n->type = ptrto(s->def->type);
        n->addable = 1;
index 71417bb0a0747298c194034ba17d32a7674c1e0f..b302c49816e37fa37b0c88dd4bfe5f1f186cd479 100644 (file)
@@ -3517,7 +3517,7 @@ ngotype(Node *n)
 {
        if(n->sym != S && n->realtype != T)
        if(strncmp(n->sym->name, "autotmp_", 8) != 0)
-               return typename(n->realtype)->left->sym;
+               return typenamesym(n->realtype);
 
        return S;
 }