]> Cypherpunks repositories - gostls13.git/commitdiff
gc: omit runtime.closure wrap for closures without closure variables
authorLuuk van Dijk <lvd@golang.org>
Tue, 10 Jan 2012 10:07:35 +0000 (11:07 +0100)
committerLuuk van Dijk <lvd@golang.org>
Tue, 10 Jan 2012 10:07:35 +0000 (11:07 +0100)
Fixes #1894.

test/closure.go's test for newfunc already covers this.

R=rsc, dsymonds, bradfitz
CC=golang-dev
https://golang.org/cl/5516051

src/cmd/gc/closure.c

index d29e8cbc287ab17344dd754ebe736ff04617a805..fa44e40fae0ea118bd6e2ac8bb0d7ff3fac4c5b1 100644 (file)
@@ -192,6 +192,10 @@ walkclosure(Node *func, NodeList **init)
        Node *xtype, *xfunc, *call, *clos;
        NodeList *l, *in;
 
+       // no closure vars, don't bother wrapping
+       if(func->cvars == nil)
+               return makeclosure(func, init, 1)->nname;
+
        /*
         * wrap body in external function
         * with extra closure parameters.