[pypy-svn] r66489 - in pypy/branch/pyjitpl5-optimize4/pypy/jit/metainterp: . test
arigo at codespeak.net
arigo at codespeak.net
Tue Jul 21 20:08:29 CEST 2009
Author: arigo
Date: Tue Jul 21 20:08:28 2009
New Revision: 66489
Modified:
pypy/branch/pyjitpl5-optimize4/pypy/jit/metainterp/optimizeopt.py
pypy/branch/pyjitpl5-optimize4/pypy/jit/metainterp/test/oparser.py
pypy/branch/pyjitpl5-optimize4/pypy/jit/metainterp/test/test_optimizeopt.py
Log:
Test GETFIELD_GC_PURE. Implemented just by calling GETFIELD_GC (see comment).
Modified: pypy/branch/pyjitpl5-optimize4/pypy/jit/metainterp/optimizeopt.py
==============================================================================
--- pypy/branch/pyjitpl5-optimize4/pypy/jit/metainterp/optimizeopt.py (original)
+++ pypy/branch/pyjitpl5-optimize4/pypy/jit/metainterp/optimizeopt.py Tue Jul 21 20:08:28 2009
@@ -339,8 +339,9 @@
value.make_nonnull()
self.optimize_default(op)
- def optimize_GETFIELD_PURE_GC(self, op):
- xxx # optimize_GETFIELD_GC
+ # note: the following line does not mean that the two operations are
+ # completely equivalent, because GETFIELD_GC_PURE is_always_pure().
+ optimize_GETFIELD_GC_PURE = optimize_GETFIELD_GC
def optimize_SETFIELD_GC(self, op):
value = self.getvalue(op.args[0])
Modified: pypy/branch/pyjitpl5-optimize4/pypy/jit/metainterp/test/oparser.py
==============================================================================
--- pypy/branch/pyjitpl5-optimize4/pypy/jit/metainterp/test/oparser.py (original)
+++ pypy/branch/pyjitpl5-optimize4/pypy/jit/metainterp/test/oparser.py Tue Jul 21 20:08:28 2009
@@ -108,6 +108,12 @@
return ConstPtr(ConstPtr.value)
else:
return ConstObj(ConstObj.value)
+ elif arg.startswith('ConstPtr('):
+ name = arg[len('ConstPtr('):-1]
+ if self.type_system == 'lltype':
+ return ConstPtr(self.boxkinds[name])
+ else:
+ return ConstObj(self.boxkinds[name])
return self.vars[arg]
def parse_op(self, line):
Modified: pypy/branch/pyjitpl5-optimize4/pypy/jit/metainterp/test/test_optimizeopt.py
==============================================================================
--- pypy/branch/pyjitpl5-optimize4/pypy/jit/metainterp/test/test_optimizeopt.py (original)
+++ pypy/branch/pyjitpl5-optimize4/pypy/jit/metainterp/test/test_optimizeopt.py Tue Jul 21 20:08:28 2009
@@ -533,6 +533,43 @@
expected = ops
self.optimize_loop(ops, 'Not, Not', expected)
+ def test_getfield_gc_pure_1(self):
+ ops = """
+ [i]
+ p1 = new_with_vtable(ConstClass(node_vtable), descr=nodesize)
+ setfield_gc(p1, i, descr=valuedescr)
+ i1 = getfield_gc_pure(p1, descr=valuedescr)
+ jump(i1)
+ """
+ expected = """
+ [i]
+ jump(i)
+ """
+ self.optimize_loop(ops, 'Not', expected)
+
+ def test_getfield_gc_pure_2(self):
+ ops = """
+ [i]
+ i1 = getfield_gc_pure(ConstPtr(myptr), descr=valuedescr)
+ jump(i1)
+ """
+ expected = """
+ [i]
+ jump(5)
+ """
+ self.optimize_loop(ops, 'Not', expected, i1=5,
+ boxkinds={'myptr': self.nodebox.value})
+
+ def test_getfield_gc_nonpure_2(self):
+ ops = """
+ [i]
+ i1 = getfield_gc(ConstPtr(myptr), descr=valuedescr)
+ jump(i1)
+ """
+ expected = ops
+ self.optimize_loop(ops, 'Not', expected, i1=5,
+ boxkinds={'myptr': self.nodebox.value})
+
class TestLLtype(BaseTestOptimizeOpt, LLtypeMixin):
pass
More information about the Pypy-commit
mailing list