Author: Armin Rigo <[email protected]>
Branch: 
Changeset: r46334:3ad1fe3d9b69
Date: 2011-08-06 21:00 +0200
http://bitbucket.org/pypy/pypy/changeset/3ad1fe3d9b69/

Log:    Add a test similar to test_unerased_pointers_in_short_preamble, but
        using only regular pointers. Note that neither test appears to be
        failing right now, unlike the comment in 2ca138be14a7...

diff --git a/pypy/jit/metainterp/test/test_loop.py 
b/pypy/jit/metainterp/test/test_loop.py
--- a/pypy/jit/metainterp/test/test_loop.py
+++ b/pypy/jit/metainterp/test/test_loop.py
@@ -800,6 +800,38 @@
 
         res = self.meta_interp(f, [200])
 
+    def test_regular_pointers_in_short_preamble(self):
+        from pypy.rpython.lltypesystem import lltype
+        class Base(object):
+            pass
+        class A(Base):
+            def __init__(self, val):
+                self.val = val
+        class B(Base):
+            def __init__(self, charval):
+                self.charval = charval
+        myjitdriver = JitDriver(greens = [], reds = ['n', 'm', 'i', 'j', 'sa', 
'p'])
+        def f(n, m, j):
+            i = sa = 0
+            p = A(7)
+            while i < n:
+                myjitdriver.jit_merge_point(n=n, m=m, i=i, j=j, sa=sa, p=p)
+                if i < m:
+                    assert isinstance(p, A)
+                    sa += p.val
+                elif i == m:
+                    p = B('x')
+                    p.charval = 'y'
+                else:
+                    assert isinstance(p, B)
+                    sa += ord(p.charval)
+                sa += A(i).val
+                assert n>0 and m>0
+                i += j
+            return sa
+        expected = f(20, 10, 1)
+        res = self.meta_interp(f, [20, 10, 1])
+        assert res == expected
 
     def test_unerased_pointers_in_short_preamble(self):
         from pypy.rlib.rerased import new_erasing_pair
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to