[pypy-svn] r79122 - in pypy/branch/jit-free/pypy/jit/metainterp: . test

arigo at codespeak.net arigo at codespeak.net
Mon Nov 15 19:37:31 CET 2010


Author: arigo
Date: Mon Nov 15 19:37:29 2010
New Revision: 79122

Modified:
   pypy/branch/jit-free/pypy/jit/metainterp/compile.py
   pypy/branch/jit-free/pypy/jit/metainterp/history.py
   pypy/branch/jit-free/pypy/jit/metainterp/test/test_memmgr.py
   pypy/branch/jit-free/pypy/jit/metainterp/warmstate.py
Log:
(antocuni, arigo)

Argh.  Lots of efforts to finally manage to have this test failing :-/


Modified: pypy/branch/jit-free/pypy/jit/metainterp/compile.py
==============================================================================
--- pypy/branch/jit-free/pypy/jit/metainterp/compile.py	(original)
+++ pypy/branch/jit-free/pypy/jit/metainterp/compile.py	Mon Nov 15 19:37:29 2010
@@ -78,6 +78,7 @@
         return old_loop_token
     send_loop_to_backend(metainterp_sd, loop, "loop")
     insert_loop_token(old_loop_tokens, loop_token)
+    loop.token = None
     return loop_token
 
 def insert_loop_token(old_loop_tokens, loop_token):
@@ -316,7 +317,7 @@
         # to the corrsponding guard_op and compile from there
         inputargs = metainterp.history.inputargs
         if not we_are_translated():
-            self._debug_suboperations = new_loop.operations
+            pass #self._debug_suboperations = new_loop.operations
         send_bridge_to_backend(metainterp.staticdata, self, inputargs,
                                new_loop.operations)
 
@@ -501,6 +502,7 @@
         old_loop_tokens.append(new_loop_token)
         metainterp.set_compiled_merge_points(self.original_greenkey,
                                              old_loop_tokens)
+        new_loop.token = None
 
     def reset_counter_from_failure(self):
         pass

Modified: pypy/branch/jit-free/pypy/jit/metainterp/history.py
==============================================================================
--- pypy/branch/jit-free/pypy/jit/metainterp/history.py	(original)
+++ pypy/branch/jit-free/pypy/jit/metainterp/history.py	Mon Nov 15 19:37:29 2010
@@ -747,6 +747,9 @@
         self.generation = r_longlong(0)
 
     def __del__(self):
+        for i in range(160):
+            print '#',
+        print
         if self.cpu is None:
             return
         if self.generation > r_longlong(0):

Modified: pypy/branch/jit-free/pypy/jit/metainterp/test/test_memmgr.py
==============================================================================
--- pypy/branch/jit-free/pypy/jit/metainterp/test/test_memmgr.py	(original)
+++ pypy/branch/jit-free/pypy/jit/metainterp/test/test_memmgr.py	Mon Nov 15 19:37:29 2010
@@ -70,9 +70,12 @@
                 n = n - 1
             return 21
         def f():
-            for i in range(6):
+            for i in range(15):
                 g()
             return 42
 
         res = self.meta_interp(f, [], loop_longevity=1)
         assert res == 42
+
+        # we should see only the loop and the entry bridge
+        self.check_tree_loop_count(2)

Modified: pypy/branch/jit-free/pypy/jit/metainterp/warmstate.py
==============================================================================
--- pypy/branch/jit-free/pypy/jit/metainterp/warmstate.py	(original)
+++ pypy/branch/jit-free/pypy/jit/metainterp/warmstate.py	Mon Nov 15 19:37:29 2010
@@ -330,10 +330,13 @@
                 assert cell.counter == -1
                 if not confirm_enter_jit(*args):
                     return
+                loop_token = cell.get_entry_loop_token()
+                if loop_token is None:   # it was a weakref that has been freed
+                    cell.counter = 0
+                    return
                 # machine code was already compiled for these greenargs
                 # get the assembler and fill in the boxes
                 set_future_values(*args[num_green_args:])
-                loop_token = cell.get_entry_loop_token()
 
             # ---------- execute assembler ----------
             while True:     # until interrupted by an exception



More information about the Pypy-commit mailing list