[pypy-svn] r58393 - in pypy/branch/2.5-merge/pypy/interpreter: astcompiler test

fijal at codespeak.net fijal at codespeak.net
Tue Sep 23 18:59:40 CEST 2008


Author: fijal
Date: Tue Sep 23 18:59:39 2008
New Revision: 58393

Modified:
   pypy/branch/2.5-merge/pypy/interpreter/astcompiler/pyassem.py
   pypy/branch/2.5-merge/pypy/interpreter/test/test_interpreter.py
Log:
(fijal, arigo) Proper fix


Modified: pypy/branch/2.5-merge/pypy/interpreter/astcompiler/pyassem.py
==============================================================================
--- pypy/branch/2.5-merge/pypy/interpreter/astcompiler/pyassem.py	(original)
+++ pypy/branch/2.5-merge/pypy/interpreter/astcompiler/pyassem.py	Tue Sep 23 18:59:39 2008
@@ -464,9 +464,7 @@
 def depth_MAKE_FUNCTION(argc):
     return -argc
 def depth_MAKE_CLOSURE(argc):
-    if argc == 0:
-        return -1
-    return -argc
+    return -argc-1
 def depth_BUILD_SLICE(argc):
     if argc == 2:
         return -1

Modified: pypy/branch/2.5-merge/pypy/interpreter/test/test_interpreter.py
==============================================================================
--- pypy/branch/2.5-merge/pypy/interpreter/test/test_interpreter.py	(original)
+++ pypy/branch/2.5-merge/pypy/interpreter/test/test_interpreter.py	Tue Sep 23 18:59:39 2008
@@ -280,3 +280,14 @@
         def f(x): return x
         assert f(666) == 666
 
+    def test_stack_bug(self):
+        x = """class A:
+            def initialize(self):
+                # install all the MultiMethods into the space instance
+                if isinstance(mm, object):
+                    def make_boundmethod(func=func):
+                        def boundmethod(*args):
+                            return func(self, *args)
+        """
+        exec x in {}
+        # assert did not crash



More information about the Pypy-commit mailing list