[pypy-svn] r49632 - pypy/dist/pypy/translator/stackless
arigo at codespeak.net
arigo at codespeak.net
Tue Dec 11 17:44:48 CET 2007
Author: arigo
Date: Tue Dec 11 17:44:48 2007
New Revision: 49632
Modified:
pypy/dist/pypy/translator/stackless/transform.py
Log:
Oups! External function calls were thought to sometimes unwind the
stack. That's wrong in general - I think they can never do that.
This is a good performance boost for "--gc=framework --stackless".
Modified: pypy/dist/pypy/translator/stackless/transform.py
==============================================================================
--- pypy/dist/pypy/translator/stackless/transform.py (original)
+++ pypy/dist/pypy/translator/stackless/transform.py Tue Dec 11 17:44:48 2007
@@ -260,6 +260,13 @@
return LL_OPERATIONS[op.opname].canunwindgc
return False
+ def analyze_external_call(self, op):
+ # An external call cannot cause a stack unwind
+ # Note that this is essential to get good performance in framework GCs
+ # because there is a pseudo-external call to ROUND_UP_FOR_ALLOCATION
+ # in critical paths there.
+ return False
+
def vars_to_save(block):
lastresult = block.operations[-1].result
More information about the Pypy-commit
mailing list