[Python-checkins] gh-89479: Export _Py_GetSpecializationStats() internal function (#92011)

vstinner webhook-mailer at python.org
Thu Apr 28 08:02:58 EDT 2022


https://github.com/python/cpython/commit/87c6cf9aa7cebac3c544067e690c2ad7ce18b772
commit: 87c6cf9aa7cebac3c544067e690c2ad7ce18b772
branch: main
author: Victor Stinner <vstinner at python.org>
committer: vstinner <vstinner at python.org>
date: 2022-04-28T14:02:45+02:00
summary:

gh-89479: Export _Py_GetSpecializationStats() internal function (#92011)

When Python is built with "./configure --enable-pystats" (if the
Py_STATS macro is defined), the _Py_GetSpecializationStats() function
must be exported, since it's used by the _opcode extension which is
built as a shared library.

files:
M Doc/using/configure.rst
M Include/internal/pycore_code.h

diff --git a/Doc/using/configure.rst b/Doc/using/configure.rst
index 057efa3bd077c..2321d24663f68 100644
--- a/Doc/using/configure.rst
+++ b/Doc/using/configure.rst
@@ -139,7 +139,7 @@ General Options
    The statistics will be dumped to a arbitrary (probably unique) file in
    ``/tmp/py_stats/``, or ``C:\temp\py_stats\`` on Windows.
 
-   Use ``Tools//summarize_stats.py`` to read the stats.
+   Use ``Tools/scripts/summarize_stats.py`` to read the stats.
 
    .. versionadded:: 3.11
 
diff --git a/Include/internal/pycore_code.h b/Include/internal/pycore_code.h
index 3059db465e7d2..8a599c4246cfc 100644
--- a/Include/internal/pycore_code.h
+++ b/Include/internal/pycore_code.h
@@ -316,7 +316,8 @@ extern PyStats _py_stats;
 
 extern void _Py_PrintSpecializationStats(int to_file);
 
-extern PyObject* _Py_GetSpecializationStats(void);
+// Used by the _opcode extension which is built as a shared library
+PyAPI_FUNC(PyObject*) _Py_GetSpecializationStats(void);
 
 #else
 #define STAT_INC(opname, name) ((void)0)
@@ -324,7 +325,7 @@ extern PyObject* _Py_GetSpecializationStats(void);
 #define OPCODE_EXE_INC(opname) ((void)0)
 #define CALL_STAT_INC(name) ((void)0)
 #define OBJECT_STAT_INC(name) ((void)0)
-#endif
+#endif  // !Py_STATS
 
 // Cache values are only valid in memory, so use native endianness.
 #ifdef WORDS_BIGENDIAN



More information about the Python-checkins mailing list