[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