[pypy-svn] r70994 - pypy/branch/multijit/pypy/jit/metainterp/test

arigo at codespeak.net arigo at codespeak.net
Sat Jan 30 19:44:58 CET 2010


Author: arigo
Date: Sat Jan 30 19:44:58 2010
New Revision: 70994

Modified:
   pypy/branch/multijit/pypy/jit/metainterp/test/test_two.py
Log:
This seems to work.


Modified: pypy/branch/multijit/pypy/jit/metainterp/test/test_two.py
==============================================================================
--- pypy/branch/multijit/pypy/jit/metainterp/test/test_two.py	(original)
+++ pypy/branch/multijit/pypy/jit/metainterp/test/test_two.py	Sat Jan 30 19:44:58 2010
@@ -3,32 +3,44 @@
 from pypy.jit.metainterp.test.test_basic import LLJitMixin
 
 
+myjitdriver1 = JitDriver(greens = [], reds = ['n'])
+def f1(n):
+    while n > 0:
+        myjitdriver1.can_enter_jit(n=n)
+        myjitdriver1.jit_merge_point(n=n)
+        n -= 10
+    return n
+
+myjitdriver2 = JitDriver(greens = [], reds = ['m', 'x'])
+def f2(m, x):
+    while m > 0:
+        myjitdriver2.can_enter_jit(m=m, x=x)
+        myjitdriver2.jit_merge_point(m=m, x=x)
+        m -= 1
+        x += 3
+    return x
+
+myjitdriver3 = JitDriver(greens = [], reds = ['a', 'b', 'c'])
+def f3(a, b, c):
+    while a > 0:
+        myjitdriver3.can_enter_jit(a=a, b=b, c=c)
+        myjitdriver3.jit_merge_point(a=a, b=b, c=c)
+        a -= f2(b, c)
+    return a
+
+
 class TwoJitsTests:
 
     def test_simple(self):
-        myjitdriver1 = JitDriver(greens = [], reds = ['n'])
-        def f1(n):
-            while n > 0:
-                myjitdriver1.can_enter_jit(n=n)
-                myjitdriver1.jit_merge_point(n=n)
-                n -= 10
-            return n
-        #
-        myjitdriver2 = JitDriver(greens = [], reds = ['m', 'x'])
-        def f2(m, x):
-            while m > 0:
-                myjitdriver2.can_enter_jit(m=m, x=x)
-                myjitdriver2.jit_merge_point(m=m, x=x)
-                m -= 1
-                x += 3
-            return x
-        #
         def main(n, m, x):
             return f1(n) * f2(m, x)
-        #
         res = self.meta_interp(main, [78, 7, 0], num_jit_drivers=2)
         assert res == -2 * 21
 
+    def test_call(self):
+        res = self.meta_interp(f3, [100, 7, 0], num_jit_drivers=2)
+        assert res == 100 - 5 * 21
+
 
 class TestLLtype(TwoJitsTests, LLJitMixin):
     pass



More information about the Pypy-commit mailing list