[pypy-commit] pypy jit-short_from_state: failing test
hakanardo
noreply at buildbot.pypy.org
Wed Jun 29 08:21:28 CEST 2011
Author: Hakan Ardo <hakan at debian.org>
Branch: jit-short_from_state
Changeset: r45171:431d551a6ef3
Date: 2011-06-29 08:27 +0200
http://bitbucket.org/pypy/pypy/changeset/431d551a6ef3/
Log: failing test
diff --git a/pypy/jit/metainterp/optimizeopt/virtualstate.py b/pypy/jit/metainterp/optimizeopt/virtualstate.py
--- a/pypy/jit/metainterp/optimizeopt/virtualstate.py
+++ b/pypy/jit/metainterp/optimizeopt/virtualstate.py
@@ -231,7 +231,11 @@
bad[self] = True
bad[other] = True
return False
- return self.intbound.contains_bound(other.intbound)
+ if not self.intbound.contains_bound(other.intbound):
+ bad[self] = True
+ bad[other] = True
+ return False
+ return True
def _generate_guards(self, other, box, cpu, extra_guards):
if not isinstance(other, NotVirtualStateInfo):
diff --git a/pypy/jit/metainterp/test/test_virtual.py b/pypy/jit/metainterp/test/test_virtual.py
--- a/pypy/jit/metainterp/test/test_virtual.py
+++ b/pypy/jit/metainterp/test/test_virtual.py
@@ -898,6 +898,29 @@
res = self.meta_interp(f, [], repeat=7)
assert res == f()
+ def test_virtual_attribute_pure_function(self):
+ mydriver = JitDriver(reds = ['i', 'sa', 'n', 'node'], greens = [])
+ class A(object):
+ def __init__(self, v1, v2):
+ self.v1 = v1
+ self.v2 = v2
+ def f(n):
+ i = sa = 0
+ node = A(1, 2)
+ while i < n:
+ mydriver.jit_merge_point(i=i, sa=sa, n=n, node=node)
+ sa += node.v1 + node.v2 + 2*node.v1
+ if i < n/2:
+ node = A(n, 2*n)
+ else:
+ node = A(n, 3*n)
+ i += 1
+ return sa
+
+ res = self.meta_interp(f, [16])
+ assert res == f(16)
+
+
# ____________________________________________________________
# Run 1: all the tests instantiate a real RPython class
More information about the pypy-commit
mailing list