[pypy-svn] r63995 - pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp

fijal at codespeak.net fijal at codespeak.net
Sun Apr 12 22:05:10 CEST 2009


Author: fijal
Date: Sun Apr 12 22:05:09 2009
New Revision: 63995

Modified:
   pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/pyjitpl.py
Log:
a super-paranoia of checking if saved env matches


Modified: pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/pyjitpl.py
==============================================================================
--- pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/pyjitpl.py	(original)
+++ pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/pyjitpl.py	Sun Apr 12 22:05:09 2009
@@ -921,13 +921,17 @@
         # boxes.
         log('recursive call to execute_operations()!')
         saved_env = []
+        framestack = []
         for f in self.framestack:
             newenv = []
             for box in f.env:
                 if isinstance(box, Box):
                     saved_env.append(box.clonebox())
+                newenv.append(box)
+            framestack.append(newenv)
         pseudoframe = instantiate(MIFrame)
         pseudoframe.env = saved_env
+        pseudoframe._saved_framestack = framestack
         self.framestack.append(pseudoframe)
 
     def _restore_recursive_call(self):
@@ -938,8 +942,13 @@
         pseudoframe = self.framestack.pop()
         saved_env = pseudoframe.env
         i = 0
-        for f in self.framestack:
-            for box in f.env:
+        assert len(pseudoframe._saved_framestack) == len(self.framestack)
+        for j in range(len(self.framestack)):
+            f = self.framestack[j]
+            assert len(f.env) == len(pseudoframe._saved_framestack[j])
+            for k in range(len(f.env)):
+                box = f.env[k]
+                pseudoenv = pseudoframe._saved_framestack[j]
                 if isinstance(box, BoxInt):
                     box.changevalue_int(saved_env[i].getint())
                     i += 1
@@ -947,6 +956,10 @@
                     box.changevalue_ptr(saved_env[i].getptr_base())
                     i += 1
                 else:
+                    if isinstance(box, ConstInt):
+                        assert box.getint() == pseudoenv[k].getint()
+                    elif isinstance(box, ConstPtr):
+                        assert box.getptr_base() == pseudoenv[k].getptr_base()
                     assert isinstance(box, Const)
         assert i == len(saved_env)
 



More information about the Pypy-commit mailing list