[pypy-svn] r70725 - in pypy/branch/direct-assembler-call/pypy/jit/metainterp: . test
fijal at codespeak.net
fijal at codespeak.net
Wed Jan 20 14:30:27 CET 2010
Author: fijal
Date: Wed Jan 20 14:30:26 2010
New Revision: 70725
Modified:
pypy/branch/direct-assembler-call/pypy/jit/metainterp/optimizeopt.py
pypy/branch/direct-assembler-call/pypy/jit/metainterp/test/test_optimizefindnode.py
pypy/branch/direct-assembler-call/pypy/jit/metainterp/test/test_optimizeopt.py
Log:
(pedronis, fijal) Consider CALL_ASSEMBLER a call with effectinfo=None
Modified: pypy/branch/direct-assembler-call/pypy/jit/metainterp/optimizeopt.py
==============================================================================
--- pypy/branch/direct-assembler-call/pypy/jit/metainterp/optimizeopt.py (original)
+++ pypy/branch/direct-assembler-call/pypy/jit/metainterp/optimizeopt.py Wed Jan 20 14:30:26 2010
@@ -996,8 +996,12 @@
opnum == rop.DEBUG_MERGE_POINT):
return
if (opnum == rop.CALL or
- opnum == rop.CALL_MAY_FORCE):
- effectinfo = op.descr.get_extra_info()
+ opnum == rop.CALL_MAY_FORCE or
+ opnum == rop.CALL_ASSEMBLER):
+ if opnum == rop.CALL_ASSEMBLER:
+ effectinfo = None
+ else:
+ effectinfo = op.descr.get_extra_info()
if effectinfo is not None:
# XXX we can get the wrong complexity here, if the lists
# XXX stored on effectinfo are large
Modified: pypy/branch/direct-assembler-call/pypy/jit/metainterp/test/test_optimizefindnode.py
==============================================================================
--- pypy/branch/direct-assembler-call/pypy/jit/metainterp/test/test_optimizefindnode.py (original)
+++ pypy/branch/direct-assembler-call/pypy/jit/metainterp/test/test_optimizefindnode.py Wed Jan 20 14:30:26 2010
@@ -114,6 +114,9 @@
mayforcevirtdescr = cpu.calldescrof(FUNC, FUNC.ARGS, FUNC.RESULT,
EffectInfo([nextdescr], [], [],
forces_virtual_or_virtualizable=True))
+ class LoopToken(AbstractDescr):
+ pass
+ asmdescr = LoopToken() # it can be whatever, it's not a descr though
from pypy.jit.metainterp.virtualref import VirtualRefInfo
class FakeWarmRunnerDesc:
Modified: pypy/branch/direct-assembler-call/pypy/jit/metainterp/test/test_optimizeopt.py
==============================================================================
--- pypy/branch/direct-assembler-call/pypy/jit/metainterp/test/test_optimizeopt.py (original)
+++ pypy/branch/direct-assembler-call/pypy/jit/metainterp/test/test_optimizeopt.py Wed Jan 20 14:30:26 2010
@@ -2420,6 +2420,16 @@
"""
self.optimize_loop(ops, 'Not, Not, Not, Not', ops)
+ def test_call_assembler_invalidates_caches(self):
+ ops = '''
+ [p1, i1]
+ setfield_gc(p1, i1, descr=valuedescr)
+ i3 = call_assembler(i1, descr=asmdescr)
+ setfield_gc(p1, i3, descr=valuedescr)
+ jump(p1, i3)
+ '''
+ self.optimize_loop(ops, 'Not, Not', ops)
+
def test_vref_nonvirtual_nonescape(self):
ops = """
[p1]
More information about the Pypy-commit
mailing list