mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
gh-124613: Don't run perf tests in JIT builds (#124792)
* gh-124613: Don't run perf tests in JIT builds Signed-off-by: Pablo Galindo <pablogsal@gmail.com> * Apply suggestions from code review Co-authored-by: Victor Stinner <vstinner@python.org> --------- Signed-off-by: Pablo Galindo <pablogsal@gmail.com> Co-authored-by: Victor Stinner <vstinner@python.org>
This commit is contained in:
parent
fac5e7aa17
commit
35541c410d
1 changed files with 14 additions and 2 deletions
|
@ -23,6 +23,15 @@ if support.check_sanitizer(address=True, memory=True, ub=True):
|
||||||
raise unittest.SkipTest("test crash randomly on ASAN/MSAN/UBSAN build")
|
raise unittest.SkipTest("test crash randomly on ASAN/MSAN/UBSAN build")
|
||||||
|
|
||||||
|
|
||||||
|
def is_jit_build():
|
||||||
|
cflags = (sysconfig.get_config_var("PY_CORE_CFLAGS") or '')
|
||||||
|
return "_Py_JIT" in cflags
|
||||||
|
|
||||||
|
|
||||||
|
if is_jit_build():
|
||||||
|
raise unittest.SkipTest("Perf support is not available in JIT builds")
|
||||||
|
|
||||||
|
|
||||||
def supports_trampoline_profiling():
|
def supports_trampoline_profiling():
|
||||||
perf_trampoline = sysconfig.get_config_var("PY_HAVE_PERF_TRAMPOLINE")
|
perf_trampoline = sysconfig.get_config_var("PY_HAVE_PERF_TRAMPOLINE")
|
||||||
if not perf_trampoline:
|
if not perf_trampoline:
|
||||||
|
@ -229,7 +238,7 @@ def is_unwinding_reliable_with_frame_pointers():
|
||||||
cflags = sysconfig.get_config_var("PY_CORE_CFLAGS")
|
cflags = sysconfig.get_config_var("PY_CORE_CFLAGS")
|
||||||
if not cflags:
|
if not cflags:
|
||||||
return False
|
return False
|
||||||
return "no-omit-frame-pointer" in cflags and "_Py_JIT" not in cflags
|
return "no-omit-frame-pointer" in cflags
|
||||||
|
|
||||||
|
|
||||||
def perf_command_works():
|
def perf_command_works():
|
||||||
|
@ -382,6 +391,7 @@ class TestPerfProfilerMixin:
|
||||||
self.assertNotIn(f"py::bar:{script}", stdout)
|
self.assertNotIn(f"py::bar:{script}", stdout)
|
||||||
self.assertNotIn(f"py::baz:{script}", stdout)
|
self.assertNotIn(f"py::baz:{script}", stdout)
|
||||||
|
|
||||||
|
|
||||||
@unittest.skipUnless(perf_command_works(), "perf command doesn't work")
|
@unittest.skipUnless(perf_command_works(), "perf command doesn't work")
|
||||||
@unittest.skipUnless(
|
@unittest.skipUnless(
|
||||||
is_unwinding_reliable_with_frame_pointers(),
|
is_unwinding_reliable_with_frame_pointers(),
|
||||||
|
@ -494,7 +504,9 @@ def _is_perf_version_at_least(major, minor):
|
||||||
|
|
||||||
|
|
||||||
@unittest.skipUnless(perf_command_works(), "perf command doesn't work")
|
@unittest.skipUnless(perf_command_works(), "perf command doesn't work")
|
||||||
@unittest.skipUnless(_is_perf_version_at_least(6, 6), "perf command may not work due to a perf bug")
|
@unittest.skipUnless(
|
||||||
|
_is_perf_version_at_least(6, 6), "perf command may not work due to a perf bug"
|
||||||
|
)
|
||||||
class TestPerfProfilerWithDwarf(unittest.TestCase, TestPerfProfilerMixin):
|
class TestPerfProfilerWithDwarf(unittest.TestCase, TestPerfProfilerMixin):
|
||||||
def run_perf(self, script_dir, script, activate_trampoline=True):
|
def run_perf(self, script_dir, script, activate_trampoline=True):
|
||||||
if activate_trampoline:
|
if activate_trampoline:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue