[pypy-commit] pypy improve-vmprof-testing: expose some other problems

fijal pypy.commits at gmail.com
Sat Aug 6 11:12:07 EDT 2016


Author: fijal
Branch: improve-vmprof-testing
Changeset: r86047:8ba040124913
Date: 2016-08-06 17:11 +0200
http://bitbucket.org/pypy/pypy/changeset/8ba040124913/

Log:	expose some other problems

diff --git a/rpython/jit/backend/test/test_rvmprof.py b/rpython/jit/backend/test/test_rvmprof.py
--- a/rpython/jit/backend/test/test_rvmprof.py
+++ b/rpython/jit/backend/test/test_rvmprof.py
@@ -23,13 +23,13 @@
 
         llfn = llhelper(lltype.Ptr(lltype.FuncType([], lltype.Void)), helper)
 
-        driver = jit.JitDriver(greens=['code'], reds='auto')
+        driver = jit.JitDriver(greens=['code'], reds=['c', 'i', 'n', 'codes'])
 
         class CodeObj(object):
             def __init__(self, name):
                 self.name = name
 
-        def get_code_fn(codes, code, arg):
+        def get_code_fn(codes, code, arg, c):
             return code
 
         def get_name(code):
@@ -40,21 +40,26 @@
 
         @vmprof_execute_code("main", get_code_fn,
                              _hack_update_stack_untranslated=True)
-        def f(codes, code, n):
+        def f(codes, code, n, c):
             i = 0
             while i < n:
-                driver.jit_merge_point(code=code)
+                driver.jit_merge_point(code=code, c=c, i=i, codes=codes, n=n)
                 if code.name == "main":
-                    f(codes, codes[1], 1)
+                    c = f(codes, codes[1], 1, c)
+                    driver.can_enter_jit(code=code, c=c, i=i, codes=codes, n=n)
                 else:
                     llfn()
+                    c -= 1
+                    if c < 0:
+                        llfn() # bridge
                 i += 1
+            return c
 
         def main(n):
             codes = [CodeObj("main"), CodeObj("not main")]
             for code in codes:
                 register_code(code, get_name)
-            return f(codes, codes[0], n)
+            return f(codes, codes[0], n, 8)
 
         class Hooks(jit.JitHookInterface):
             def after_compile(self, debug_info):
@@ -64,8 +69,9 @@
 
         null = lltype.nullptr(cintf.VMPROFSTACK)
         cintf.vmprof_tl_stack.setraw(null)
-        self.meta_interp(main, [10], policy=JitPolicy(hooks))
+        self.meta_interp(main, [30], policy=JitPolicy(hooks), inline=True)
         assert visited[:3] == [[(1, 12), (1, 8)], [(1, 12), (1, 8)], [(1, 12), (1, 8)]]
+        print visited
         #v = set(visited)
         #assert 0 in v
         #v.remove(0)


More information about the pypy-commit mailing list