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