[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