[pypy-svn] pypy default: make MAKE_CLOSURE a bit faster (and more JIT-friendly)

cfbolz commits-noreply at bitbucket.org
Fri Apr 8 13:14:46 CEST 2011


Author: Carl Friedrich Bolz <cfbolz at gmx.de>
Branch: 
Changeset: r43217:e5b1300d7453
Date: 2011-04-08 13:13 +0200
http://bitbucket.org/pypy/pypy/changeset/e5b1300d7453/

Log:	make MAKE_CLOSURE a bit faster (and more JIT-friendly)

diff --git a/pypy/interpreter/nestedscope.py b/pypy/interpreter/nestedscope.py
--- a/pypy/interpreter/nestedscope.py
+++ b/pypy/interpreter/nestedscope.py
@@ -220,11 +220,13 @@
                         for cell in self.space.fixedview(w_freevarstuple)]
         else:
             nfreevars = len(codeobj.co_freevars)
-            freevars = [self.space.interp_w(Cell, self.popvalue())
-                        for i in range(nfreevars)]
-            freevars.reverse()
-        defaultarguments = [self.popvalue() for i in range(numdefaults)]
-        defaultarguments.reverse()
+            freevars = [None] * nfreevars
+            while True:
+                nfreevars -= 1
+                if nfreevars < 0:
+                    break
+                freevars[n] = self.space.interp_w(Cell, self.popvalue())
+        defaultarguments = self.popvalues(numdefaults)
         fn = function.Function(self.space, codeobj, self.w_globals,
                                defaultarguments, freevars)
         self.pushvalue(self.space.wrap(fn))


More information about the Pypy-commit mailing list