summaryrefslogtreecommitdiffstats
path: root/Modules/_testcapi/parts.h
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2023-08-31 16:33:34 (GMT)
committerGitHub <noreply@github.com>2023-08-31 16:33:34 (GMT)
commit13a00078b81776b23b0b6add69b848382240d1f2 (patch)
tree612a10a02aeb749d9c5bff72133b2ae1d25a5cc6 /Modules/_testcapi/parts.h
parent013a99a47b3299f48cf7f95aa451a116441b029c (diff)
downloadcpython-13a00078b81776b23b0b6add69b848382240d1f2.zip
cpython-13a00078b81776b23b0b6add69b848382240d1f2.tar.gz
cpython-13a00078b81776b23b0b6add69b848382240d1f2.tar.bz2
gh-108634: Py_TRACE_REFS uses a hash table (#108663)
Python built with "configure --with-trace-refs" (tracing references) is now ABI compatible with Python release build and debug build. Moreover, it now also supports the Limited API. Change Py_TRACE_REFS build: * Remove _PyObject_EXTRA_INIT macro. * The PyObject structure no longer has two extra members (_ob_prev and _ob_next). * Use a hash table (_Py_hashtable_t) to trace references (all objects): PyInterpreterState.object_state.refchain. * Py_TRACE_REFS build is now ABI compatible with release build and debug build. * Limited C API extensions can now be built with Py_TRACE_REFS: xxlimited, xxlimited_35, _testclinic_limited. * No longer rename PyModule_Create2() and PyModule_FromDefAndSpec2() functions to PyModule_Create2TraceRefs() and PyModule_FromDefAndSpec2TraceRefs(). * _Py_PrintReferenceAddresses() is now called before finalize_interp_delete() which deletes the refchain hash table. * test_tracemalloc find_trace() now also filters by size to ignore the memory allocated by _PyRefchain_Trace(). Test changes for Py_TRACE_REFS: * Add test.support.Py_TRACE_REFS constant. * Add test_sys.test_getobjects() to test sys.getobjects() function. * test_exceptions skips test_recursion_normalizing_with_no_memory() and test_memory_error_in_PyErr_PrintEx() if Python is built with Py_TRACE_REFS. * test_repl skips test_no_memory(). * test_capi skisp test_set_nomemory().
Diffstat (limited to 'Modules/_testcapi/parts.h')
-rw-r--r--Modules/_testcapi/parts.h21
1 files changed, 0 insertions, 21 deletions
diff --git a/Modules/_testcapi/parts.h b/Modules/_testcapi/parts.h
index 65ebf80..9c6d615 100644
--- a/Modules/_testcapi/parts.h
+++ b/Modules/_testcapi/parts.h
@@ -1,27 +1,9 @@
#ifndef Py_TESTCAPI_PARTS_H
#define Py_TESTCAPI_PARTS_H
-#include "pyconfig.h" // for Py_TRACE_REFS
-
-// Figure out if Limited API is available for this build. If it isn't we won't
-// build tests for it.
-// Currently, only Py_TRACE_REFS disables Limited API.
-#ifdef Py_TRACE_REFS
-#undef LIMITED_API_AVAILABLE
-#else
-#define LIMITED_API_AVAILABLE 1
-#endif
-
// Always enable assertions
#undef NDEBUG
-#if !defined(LIMITED_API_AVAILABLE) && defined(Py_LIMITED_API)
-// Limited API being unavailable means that with Py_LIMITED_API defined
-// we can't even include Python.h.
-// Do nothing; the .c file that defined Py_LIMITED_API should also do nothing.
-
-#else
-
#include "Python.h"
int _PyTestCapi_Init_Vectorcall(PyObject *module);
@@ -44,10 +26,7 @@ int _PyTestCapi_Init_PyOS(PyObject *module);
int _PyTestCapi_Init_Immortal(PyObject *module);
int _PyTestCapi_Init_GC(PyObject *mod);
-#ifdef LIMITED_API_AVAILABLE
int _PyTestCapi_Init_VectorcallLimited(PyObject *module);
int _PyTestCapi_Init_HeaptypeRelative(PyObject *module);
-#endif // LIMITED_API_AVAILABLE
-#endif
#endif // Py_TESTCAPI_PARTS_H