[pypy-svn] pypy default: constant propagating tests
hakanardo
commits-noreply at bitbucket.org
Wed Feb 2 20:48:15 CET 2011
Author: Hakan Ardo <hakan at debian.org>
Branch:
Changeset: r41575:ab615286e628
Date: 2011-02-02 18:48 +0100
http://bitbucket.org/pypy/pypy/changeset/ab615286e628/
Log: constant propagating tests
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
@@ -394,6 +394,50 @@
# ENTER - compile the leaving path
self.check_enter_count(2)
+ def test_constant_virtual1(self):
+ myjitdriver = JitDriver(greens = [], reds = ['n', 'sa', 'node'])
+ def f(n):
+ node = self._new()
+ node.value = 1
+ sa = 0
+ while n > 0:
+ myjitdriver.can_enter_jit(n=n, sa=sa, node=node)
+ myjitdriver.jit_merge_point(n=n, sa=sa, node=node)
+ if n>20:
+ next = self._new()
+ next.value = 2
+ node = next
+ elif n>10:
+ next = self._new()
+ next.value = 3
+ node = next
+ sa += node.value
+ n -= 1
+ return sa
+ assert self.meta_interp(f, [30]) == f(30)
+
+ def test_constant_virtual2(self):
+ myjitdriver = JitDriver(greens = [], reds = ['n', 'sa', 'node'])
+ def f(n):
+ node = self._new()
+ node.value = 1
+ sa = 0
+ while n > 0:
+ myjitdriver.can_enter_jit(n=n, sa=sa, node=node)
+ myjitdriver.jit_merge_point(n=n, sa=sa, node=node)
+ sa += node.value
+ if n&15 > 7:
+ next = self._new()
+ next.value = 2
+ node = next
+ else:
+ next = self._new()
+ next.value = 3
+ node = next
+ n -= 1
+ return sa
+ assert self.meta_interp(f, [31]) == f(31)
+
def test_stored_reference_with_bridge1(self):
class RefNode(object):
def __init__(self, ref):
More information about the Pypy-commit
mailing list