bpo-32030: Add more options to _PyCoreConfig (#4485)
Py_Main() now handles two more -X options:
* -X showrefcount: new _PyCoreConfig.show_ref_count field
* -X showalloccount: new _PyCoreConfig.show_alloc_count field
diff --git a/Python/import.c b/Python/import.c
index fef6398..d2ed785 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -1674,8 +1674,7 @@
}
}
else {
- /* 1 -- true, 0 -- false, -1 -- not initialized */
- int importtime = interp->core_config.importtime;
+ int import_time = interp->core_config.import_time;
static int import_level;
static _PyTime_t accumulated;
@@ -1686,7 +1685,7 @@
* Anyway, importlib._find_and_load is much slower than
* _PyDict_GetItemIdWithError().
*/
- if (importtime) {
+ if (import_time) {
static int header = 1;
if (header) {
fputs("import time: self [us] | cumulative | imported package\n",
@@ -1712,7 +1711,7 @@
PyDTrace_IMPORT_FIND_LOAD_DONE(PyUnicode_AsUTF8(abs_name),
mod != NULL);
- if (importtime) {
+ if (import_time) {
_PyTime_t cum = _PyTime_GetPerfCounter() - t1;
import_level--;
diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c
index 14fe75e..36fcf61 100644
--- a/Python/pylifecycle.c
+++ b/Python/pylifecycle.c
@@ -1101,10 +1101,6 @@
/* nothing */;
#endif
-#ifdef Py_REF_DEBUG
- PyObject *showrefcount = _PyDebug_XOptionShowRefCount();
-#endif
-
/* Destroy all modules */
PyImport_Cleanup();
@@ -1153,8 +1149,9 @@
_PyHash_Fini();
#ifdef Py_REF_DEBUG
- if (showrefcount == Py_True)
- _PyDebug_PrintTotalRefs();
+ if (interp->core_config.show_ref_count) {
+ _PyDebug_PrintTotalRefs();
+ }
#endif
#ifdef Py_TRACE_REFS
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index 90b29cb..b528575 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -91,6 +91,9 @@
int ret, err;
PyCompilerFlags local_flags;
int nomem_count = 0;
+#ifdef Py_REF_DEBUG
+ int show_ref_count = PyThreadState_GET()->interp->core_config.show_ref_count;
+#endif
filename = PyUnicode_DecodeFSDefault(filename_str);
if (filename == NULL) {
@@ -134,8 +137,9 @@
nomem_count = 0;
}
#ifdef Py_REF_DEBUG
- if (_PyDebug_XOptionShowRefCount() == Py_True)
+ if (show_ref_count) {
_PyDebug_PrintTotalRefs();
+ }
#endif
} while (ret != E_EOF);
Py_DECREF(filename);