[pypy-commit] pypy py3k-faulthandler: Translation test
arigo
pypy.commits at gmail.com
Sun Sep 25 13:41:40 EDT 2016
Author: Armin Rigo <arigo at tunes.org>
Branch: py3k-faulthandler
Changeset: r87374:a38dd2ec24eb
Date: 2016-09-25 19:41 +0200
http://bitbucket.org/pypy/pypy/changeset/a38dd2ec24eb/
Log: Translation test
diff --git a/rpython/rlib/rvmprof/test/test_traceback.py b/rpython/rlib/rvmprof/test/test_traceback.py
--- a/rpython/rlib/rvmprof/test/test_traceback.py
+++ b/rpython/rlib/rvmprof/test/test_traceback.py
@@ -1,5 +1,7 @@
+import re
from rpython.rlib import rvmprof
from rpython.rlib.rvmprof.traceback import traceback
+from rpython.translator.interactive import Translation
def test_direct():
@@ -29,3 +31,35 @@
assert seen == [(0, code1, 42),
(1, code1, 42),
(2, code1, 42)]
+
+def test_compiled():
+ class MyCode:
+ pass
+ def get_name(mycode):
+ raise NotImplementedError
+ rvmprof.register_code_object_class(MyCode, get_name)
+
+ @rvmprof.vmprof_execute_code("mycode", lambda code, level: code)
+ def mainloop(code, level):
+ if level > 0:
+ mainloop(code, level - 1)
+ else:
+ traceback(MyCode, my_callback, 42)
+
+ def my_callback(depth, code, arg):
+ print depth, code, arg
+ return 0
+
+ def f(argv):
+ code1 = MyCode()
+ rvmprof.register_code(code1, "foo")
+ mainloop(code1, 2)
+ return 0
+
+ t = Translation(f, None, gc="boehm")
+ t.compile_c()
+ stdout = t.driver.cbuilder.cmdexec('')
+ r = re.compile("(\d+) [<]MyCode object at 0x([0-9a-f]+)[>] 42\n")
+ got = r.findall(stdout)
+ addr = got[0][1]
+ assert got == [("0", addr), ("1", addr), ("2", addr)]
More information about the pypy-commit
mailing list