[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