Temporarily ignore warnings about JIT deactivation when perf support is active.
This will be reverted as soon as a way is found to determine at run time whether the interpreter was built with JIT. Currently, this is not possible on Windows.
Co-authored-by: Kirill Podoprigora <kirill.bast9@mail.ru>
Co-authored-by: Ken Jin <28750310+Fidget-Spinner@users.noreply.github.com>
Co-authored-by: Pablo Galindo <pablogsal@gmail.com>
# Run the tests in Programs/_testembed.c (tests for the CPython embedding APIs)
from test import support
+from test.libregrtest.utils import get_build_info
from test.support import import_helper, os_helper, threading_helper, MS_WINDOWS
import unittest
'perf_profiling': 2,
}
config_dev_mode(preconfig, config)
+ # Temporarily enable ignore_stderr=True to ignore warnings on JIT builds
+ # See gh-126255 for more information
self.check_all_configs("test_initconfig_api", config, preconfig,
- api=API_ISOLATED)
+ api=API_ISOLATED, ignore_stderr=True)
def test_initconfig_get_api(self):
self.run_embedded_interpreter("test_initconfig_get_api")
sys.activate_stack_trampoline("perf")
sys.activate_stack_trampoline("perf")
"""
- assert_python_ok("-c", code)
+ assert_python_ok("-c", code, PYTHON_JIT="0")
def test_sys_api_with_invalid_trampoline(self):
code = """if 1:
import sys
sys.activate_stack_trampoline("invalid")
"""
- rc, out, err = assert_python_failure("-c", code)
+ rc, out, err = assert_python_failure("-c", code, PYTHON_JIT="0")
self.assertIn("invalid backend: invalid", err.decode())
def test_sys_api_get_status(self):
sys.deactivate_stack_trampoline()
assert sys.is_stack_trampoline_active() is False
"""
- assert_python_ok("-c", code)
+ assert_python_ok("-c", code, PYTHON_JIT="0")
def is_unwinding_reliable_with_frame_pointers():
enabled = *env != '0';
}
if (enabled) {
+#ifdef _Py_JIT
+ // perf profiler works fine with tier 2 interpreter, so
+ // only checking for a "real JIT".
if (config->perf_profiling > 0) {
(void)PyErr_WarnEx(
PyExc_RuntimeWarning,
"JIT deactivated as perf profiling support is active",
0);
- } else {
+ } else
+#endif
+ {
PyObject *opt = _PyOptimizer_NewUOpOptimizer();
if (opt == NULL) {
return _PyStatus_ERR("can't initialize optimizer");
#ifdef _Py_JIT
_PyOptimizerObject* optimizer = _Py_GetOptimizer();
if (optimizer != NULL) {
+ Py_DECREF(optimizer);
PyErr_SetString(PyExc_ValueError, "Cannot activate the perf trampoline if the JIT is active");
return NULL;
}