[pypy-svn] r67056 - in pypy/branch/pyjitpl5/pypy/jit/metainterp: . test
arigo at codespeak.net
arigo at codespeak.net
Fri Aug 21 12:50:22 CEST 2009
Author: arigo
Date: Fri Aug 21 12:50:21 2009
New Revision: 67056
Modified:
pypy/branch/pyjitpl5/pypy/jit/metainterp/optimizeopt.py
pypy/branch/pyjitpl5/pypy/jit/metainterp/test/test_optimizeopt.py
Log:
(iko, arigo)
Optimize SETFIELD_GC/GETFIELD_GC pairs.
Modified: pypy/branch/pyjitpl5/pypy/jit/metainterp/optimizeopt.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/metainterp/optimizeopt.py (original)
+++ pypy/branch/pyjitpl5/pypy/jit/metainterp/optimizeopt.py Fri Aug 21 12:50:21 2009
@@ -646,6 +646,11 @@
else:
value.make_nonnull()
self.optimize_default(op)
+ # remember the result of future reads of the field
+ if value._fields is None:
+ value._fields = av_newdict2()
+ value._fields[op.descr] = self.getvalue(op.args[1])
+ self.values_to_clean.append(value)
def optimize_NEW_WITH_VTABLE(self, op):
self.make_virtual(op.args[0], op.result, op)
Modified: pypy/branch/pyjitpl5/pypy/jit/metainterp/test/test_optimizeopt.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/metainterp/test/test_optimizeopt.py (original)
+++ pypy/branch/pyjitpl5/pypy/jit/metainterp/test/test_optimizeopt.py Fri Aug 21 12:50:21 2009
@@ -968,7 +968,6 @@
self.optimize_loop(ops, 'Not', expected)
def test_duplicate_getfield_2(self):
- py.test.skip("in-progress")
ops = """
[p1, i1]
setfield_gc(p1, i1, descr=valuedescr)
@@ -977,12 +976,12 @@
jump(p1, i1)
"""
expected = """
- [p1]
+ [p1, i1]
setfield_gc(p1, i1, descr=valuedescr)
escape(i1)
- jump(p1)
+ jump(p1, i1)
"""
- self.optimize_loop(ops, 'Not', expected)
+ self.optimize_loop(ops, 'Not, Not', expected)
def test_duplicate_getfield_3(self):
py.test.skip("in-progress")
@@ -1018,7 +1017,6 @@
self.optimize_loop(ops, 'Not', ops)
def test_duplicate_getfield_sideeffects_2(self):
- py.test.skip("in-progress")
ops = """
[p1, i1]
setfield_gc(p1, i1, descr=valuedescr)
@@ -1027,7 +1025,7 @@
escape(i2)
jump(p1, i1)
"""
- self.optimize_loop(ops, 'Not', ops)
+ self.optimize_loop(ops, 'Not, Not', ops)
# ----------
More information about the Pypy-commit
mailing list