Author: Antonio Cuni <[email protected]>
Branch:
Changeset: r44202:f9960ea18c3c
Date: 2011-05-16 11:52 +0200
http://bitbucket.org/pypy/pypy/changeset/f9960ea18c3c/
Log: sanity check to make sure that the backend never mutate the
operation list it gets; fails with the x86 backend so far, because
of rewrite_assembler
diff --git a/pypy/jit/metainterp/compile.py b/pypy/jit/metainterp/compile.py
--- a/pypy/jit/metainterp/compile.py
+++ b/pypy/jit/metainterp/compile.py
@@ -7,7 +7,7 @@
from pypy.conftest import option
from pypy.tool.sourcetools import func_with_new_name
-from pypy.jit.metainterp.resoperation import ResOperation, rop
+from pypy.jit.metainterp.resoperation import ResOperation, rop,
get_deep_immutable_oplist
from pypy.jit.metainterp.history import TreeLoop, Box, History, LoopToken
from pypy.jit.metainterp.history import AbstractFailDescr, BoxInt
from pypy.jit.metainterp.history import BoxPtr, BoxObj, BoxFloat, Const
@@ -73,7 +73,7 @@
# test_memgr.py)
if descr is not looptoken:
looptoken.record_jump_to(descr)
- op.setdescr(None) # clear reference, mostly for tests
+ op._descr = None # clear reference, mostly for tests
if not we_are_translated():
op._jumptarget_number = descr.number
# record this looptoken on the QuasiImmut used in the code
@@ -159,10 +159,12 @@
if not we_are_translated():
show_loop(metainterp_sd, loop)
loop.check_consistency()
+
+ operations = get_deep_immutable_oplist(loop.operations)
metainterp_sd.profiler.start_backend()
debug_start("jit-backend")
try:
- ops_offset = metainterp_sd.cpu.compile_loop(loop.inputargs,
loop.operations,
+ ops_offset = metainterp_sd.cpu.compile_loop(loop.inputargs, operations,
loop.token)
finally:
debug_stop("jit-backend")
@@ -190,6 +192,7 @@
show_loop(metainterp_sd)
TreeLoop.check_consistency_of(inputargs, operations)
metainterp_sd.profiler.start_backend()
+ operations = get_deep_immutable_oplist(operations)
debug_start("jit-backend")
try:
ops_offset = metainterp_sd.cpu.compile_bridge(faildescr, inputargs,
operations,
@@ -688,6 +691,7 @@
ResOperation(rop.FINISH, finishargs, None, descr=jd.portal_finishtoken)
]
operations[1].setfailargs([])
+ operations = get_deep_immutable_oplist(operations)
cpu.compile_loop(inputargs, operations, loop_token, log=False)
if memory_manager is not None: # for tests
memory_manager.keep_loop_alive(loop_token)
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit