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
This commit is contained in:
Victor Stinner 2017-11-20 18:12:22 -08:00 committed by GitHub
parent 09f3a8a124
commit 25420fe290
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 41 additions and 57 deletions

View file

@ -1674,8 +1674,7 @@ PyImport_ImportModuleLevelObject(PyObject *name, PyObject *globals,
}
}
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 @@ PyImport_ImportModuleLevelObject(PyObject *name, PyObject *globals,
* 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 @@ PyImport_ImportModuleLevelObject(PyObject *name, PyObject *globals,
PyDTrace_IMPORT_FIND_LOAD_DONE(PyUnicode_AsUTF8(abs_name),
mod != NULL);
if (importtime) {
if (import_time) {
_PyTime_t cum = _PyTime_GetPerfCounter() - t1;
import_level--;

View file

@ -1101,10 +1101,6 @@ Py_FinalizeEx(void)
/* nothing */;
#endif
#ifdef Py_REF_DEBUG
PyObject *showrefcount = _PyDebug_XOptionShowRefCount();
#endif
/* Destroy all modules */
PyImport_Cleanup();
@ -1153,8 +1149,9 @@ Py_FinalizeEx(void)
_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

View file

@ -91,6 +91,9 @@ PyRun_InteractiveLoopFlags(FILE *fp, const char *filename_str, PyCompilerFlags *
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 @@ PyRun_InteractiveLoopFlags(FILE *fp, const char *filename_str, PyCompilerFlags *
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);