[pypy-commit] pypy jit-targets: more consisten naming, fixed test

hakanardo noreply at buildbot.pypy.org
Wed Nov 16 21:36:39 CET 2011


Author: Hakan Ardo <hakan at debian.org>
Branch: jit-targets
Changeset: r49481:ccbfe0737e7d
Date: 2011-11-16 21:36 +0100
http://bitbucket.org/pypy/pypy/changeset/ccbfe0737e7d/

Log:	more consisten naming, fixed test

diff --git a/pypy/jit/metainterp/history.py b/pypy/jit/metainterp/history.py
--- a/pypy/jit/metainterp/history.py
+++ b/pypy/jit/metainterp/history.py
@@ -751,10 +751,11 @@
 
     def __init__(self):
         # For memory management of assembled loops
-        self._keepalive_target_looktokens = {}      # set of other LoopTokens
+        self._keepalive_jitcell_tokens = {}      # set of other JitCellToken
 
-    def record_jump_to(self, target_loop_token):
-        self._keepalive_target_looktokens[target_loop_token] = None
+    def record_jump_to(self, jitcell_token):
+        assert isinstance(jitcell_token, JitCellToken)
+        self._keepalive_jitcell_tokens[jitcell_token] = None
 
     def __repr__(self):
         return '<Loop %d, gen=%d>' % (self.number, self.generation)
diff --git a/pypy/jit/metainterp/test/test_memmgr.py b/pypy/jit/metainterp/test/test_memmgr.py
--- a/pypy/jit/metainterp/test/test_memmgr.py
+++ b/pypy/jit/metainterp/test/test_memmgr.py
@@ -14,7 +14,7 @@
 from pypy.jit.metainterp.memmgr import MemoryManager
 from pypy.jit.metainterp.test.support import LLJitMixin
 from pypy.rlib.jit import JitDriver, dont_look_inside
-
+from pypy.jit.metainterp.warmspot import get_stats
 
 class FakeLoopToken:
     generation = 0
@@ -155,9 +155,9 @@
             return 21
         def f():
             for i in range(10):
-                g(1)   # g(1) gets a loop and an entry bridge, stays alive
-                g(2)   # (and an exit bridge, which does not count in
-                g(1)   # check_target_token_count)
+                g(1)   # g(1) gets a loop with an entry bridge
+                g(2)   # and an exit bridge, stays alive
+                g(1)   
                 g(3)
                 g(1)
                 g(4)   # g(2), g(3), g(4), g(5) are thrown away every iteration
@@ -167,7 +167,7 @@
 
         res = self.meta_interp(f, [], loop_longevity=3)
         assert res == 42
-        self.check_enter_count(2 + 10*4*2)
+        self.check_enter_count(2 + 10*4)
 
     def test_call_assembler_keep_alive(self):
         myjitdriver1 = JitDriver(greens=['m'], reds=['n'])
@@ -190,7 +190,7 @@
             return 21
         def f(u):
             for i in range(8):
-                h(u, 32)  # make a loop and an entry bridge for h(u)
+                h(u, 32)  # make a loop and an exit bridge for h(u)
             g(u, 8)       # make a loop for g(u) with a call_assembler
             g(u, 0); g(u+1, 0)     # \
             g(u, 0); g(u+2, 0)     #  \  make more loops for g(u+1) to g(u+4),
@@ -201,7 +201,12 @@
 
         res = self.meta_interp(f, [1], loop_longevity=4, inline=True)
         assert res == 42
-        self.check_enter_count(12)
+        self.check_jitcell_token_count(6)
+        tokens = [t() for t in get_stats().jitcell_token_wrefs]
+        # Some loops have been freed
+        assert None in tokens
+        # Loop with number 0, h(), has not been freed
+        assert 0 in [t.number for t in tokens if t]
 
 # ____________________________________________________________
 
diff --git a/pypy/jit/metainterp/warmstate.py b/pypy/jit/metainterp/warmstate.py
--- a/pypy/jit/metainterp/warmstate.py
+++ b/pypy/jit/metainterp/warmstate.py
@@ -175,7 +175,7 @@
     def get_procedure_token(self):
         if not we_are_translated():
             from pypy.rlib import rgc
-            rgc.collect(); rgc.collect(); rgc.collect()
+            rgc.collect();
         if self.wref_procedure_token is not None:
             return self.wref_procedure_token()
         return None


More information about the pypy-commit mailing list