Author: Maciej Fijalkowski <[email protected]>
Branch: vmprof2
Changeset: r76823:7333776ac58d
Date: 2015-04-17 19:22 +0200
http://bitbucket.org/pypy/pypy/changeset/7333776ac58d/

Log:    make the test work, now it fails (but works)

diff --git a/rpython/jit/backend/x86/test/test_recursive.py 
b/rpython/jit/backend/x86/test/test_recursive.py
--- a/rpython/jit/backend/x86/test/test_recursive.py
+++ b/rpython/jit/backend/x86/test/test_recursive.py
@@ -1,4 +1,5 @@
 
+import cffi
 from rpython.jit.metainterp.test.test_recursive import RecursiveTests
 from rpython.jit.backend.x86.test.test_basic import Jit386Mixin
 from rpython.jit.backend.llsupport import codemap
@@ -8,16 +9,14 @@
 class TestRecursive(Jit386Mixin, RecursiveTests):
     # for the individual tests see
     # ====> ../../../metainterp/test/test_recursive.py
-    def check_get_unique_id(self):
+    def check_get_unique_id(self, codemaps):
         if WORD == 4:
             return # this is 64 bit only check
-        jit_codemap = codemap._codemap.jit_codemap
-        codemaps = [(jit_codemap[i].addr, jit_codemap[i].machine_code_size)
-                    for i in range(3)]
-        assert codemap._codemap.jit_codemap_used == 3
+
+        assert len(codemaps) == 3
         codemaps.sort(lambda a, b: cmp(a[1], b[1]))
         # biggest is the big loop, smallest is the bridge
-        assert unpack_traceback(codemaps[1][0]) == []
+        assert unpack_traceback(codemaps[1][0]) == [2]
         # XXX very specific ASM addresses, very fragile test, but what we can
         #     do, really? 64bit only so far
         assert unpack_traceback(codemaps[0][0]) == [2]
diff --git a/rpython/jit/metainterp/test/test_recursive.py 
b/rpython/jit/metainterp/test/test_recursive.py
--- a/rpython/jit/metainterp/test/test_recursive.py
+++ b/rpython/jit/metainterp/test/test_recursive.py
@@ -7,6 +7,7 @@
 from rpython.jit.codewriter.policy import StopAtXPolicy
 from rpython.rtyper.annlowlevel import hlstr
 from rpython.jit.metainterp.warmspot import get_stats
+from rpython.jit.backend.llsupport import codemap
 
 class RecursiveTests:
 
@@ -1297,27 +1298,38 @@
         self.check_trace_count_at_most(2)   # and not, e.g., 24
 
     def test_get_unique_id(self):
-        def get_unique_id(pc, code):
-            return (code + 1) * 2
+        lst = []
         
-        driver = JitDriver(greens=["pc", "code"], reds='auto',
-                           get_unique_id=get_unique_id)
+        def reg_codemap(self, (start, size, l)):
+            lst.append((start, size))
+            old_reg_codemap(self, (start, size, l))
+        
+        old_reg_codemap = codemap.CodemapStorage.register_codemap
+        try:
+            codemap.CodemapStorage.register_codemap = reg_codemap
+            def get_unique_id(pc, code):
+                return (code + 1) * 2
 
-        def f(pc, code):
-            i = 0
-            while i < 10:
-                driver.jit_merge_point(pc=pc, code=code)
-                pc += 1
-                if pc == 3:
-                    if code == 1:
-                        f(0, 0)
-                    pc = 0
-                i += 1
+            driver = JitDriver(greens=["pc", "code"], reds='auto',
+                               get_unique_id=get_unique_id)
 
-        self.meta_interp(f, [0, 1], inline=True)
-        self.check_get_unique_id() # overloaded on assembler backends
+            def f(pc, code):
+                i = 0
+                while i < 10:
+                    driver.jit_merge_point(pc=pc, code=code)
+                    pc += 1
+                    if pc == 3:
+                        if code == 1:
+                            f(0, 0)
+                        pc = 0
+                    i += 1
 
-    def check_get_unique_id(self):
+            self.meta_interp(f, [0, 1], inline=True)
+            self.check_get_unique_id(lst) # overloaded on assembler backends
+        finally:
+            codemap.CodemapStorage.register_codemap = old_reg_codemap
+
+    def check_get_unique_id(self, lst):
         pass
 
 class TestLLtype(RecursiveTests, LLJitMixin):
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to