Author: Alex Gaynor <[email protected]>
Branch:
Changeset: r53221:27d215507bad
Date: 2012-03-04 22:53 -0500
http://bitbucket.org/pypy/pypy/changeset/27d215507bad/
Log: fix for profiling of c_exceptions
diff --git a/pypy/module/_lsprof/interp_lsprof.py
b/pypy/module/_lsprof/interp_lsprof.py
--- a/pypy/module/_lsprof/interp_lsprof.py
+++ b/pypy/module/_lsprof/interp_lsprof.py
@@ -22,7 +22,7 @@
eci = ExternalCompilationInfo(
separate_module_files=[srcdir.join('profiling.c')],
export_symbols=['pypy_setup_profiling', 'pypy_teardown_profiling'])
-
+
c_setup_profiling = rffi.llexternal('pypy_setup_profiling',
[], lltype.Void,
compilation_info = eci)
@@ -228,7 +228,7 @@
if w_self.builtins:
key = create_spec(space, w_arg)
w_self._enter_builtin_call(key)
- elif event == 'c_return':
+ elif event == 'c_return' or event == 'c_exception':
if w_self.builtins:
key = create_spec(space, w_arg)
w_self._enter_builtin_return(key)
@@ -237,7 +237,7 @@
pass
class W_Profiler(Wrappable):
-
+
def __init__(self, space, w_callable, time_unit, subcalls, builtins):
self.subcalls = subcalls
self.builtins = builtins
diff --git a/pypy/module/_lsprof/test/test_cprofile.py
b/pypy/module/_lsprof/test/test_cprofile.py
--- a/pypy/module/_lsprof/test/test_cprofile.py
+++ b/pypy/module/_lsprof/test/test_cprofile.py
@@ -117,6 +117,20 @@
assert 0.9 < subentry.totaltime < 2.9
#assert 0.9 < subentry.inlinetime < 2.9
+ def test_builtin_exception(self):
+ import math
+ import _lsprof
+
+ prof = _lsprof.Profiler()
+ prof.enable()
+ try:
+ math.sqrt("a")
+ except TypeError:
+ pass
+ prof.disable()
+ stats = prof.getstats()
+ assert len(stats) == 2
+
def test_use_cprofile(self):
import sys, os
# XXX this is evil trickery to walk around the fact that we don't
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit