diff options
author | Nick Coghlan <ncoghlan@gmail.com> | 2017-02-09 16:08:17 +0100 |
---|---|---|
committer | Nick Coghlan <ncoghlan@gmail.com> | 2017-02-09 16:08:17 +0100 |
commit | c6180bb73c8c7c7f9d8ea9816487b710597b6fc1 (patch) | |
tree | fb4a5c18886537b4b7df46ed3b2aa579747ff507 /Modules/gcmodule.c | |
parent | 5e0114a832a903518c4af6983161c0c2a8942a24 (diff) | |
parent | 819a21a3a4aac38f32e1ba4f68bcef45591fa3f0 (diff) | |
download | cpython-c6180bb73c8c7c7f9d8ea9816487b710597b6fc1.tar.gz |
Merge issue #26355 fix from Python 3.5
Diffstat (limited to 'Modules/gcmodule.c')
-rw-r--r-- | Modules/gcmodule.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/Modules/gcmodule.c b/Modules/gcmodule.c index cb7222db89..754348e20a 100644 --- a/Modules/gcmodule.c +++ b/Modules/gcmodule.c @@ -25,6 +25,7 @@ #include "Python.h" #include "frameobject.h" /* for PyFrame_ClearFreeList */ +#include "pydtrace.h" #include "pytime.h" /* for _PyTime_GetMonotonicClock() */ /* Get an object's GC head */ @@ -738,7 +739,7 @@ handle_weakrefs(PyGC_Head *unreachable, PyGC_Head *old) } static void -debug_cycle(char *msg, PyObject *op) +debug_cycle(const char *msg, PyObject *op) { PySys_FormatStderr("gc: %s <%s %p>\n", msg, Py_TYPE(op)->tp_name, op); @@ -892,6 +893,7 @@ clear_freelists(void) (void)PyList_ClearFreeList(); (void)PyDict_ClearFreeList(); (void)PySet_ClearFreeList(); + (void)PyAsyncGen_ClearFreeLists(); } /* This is the main function. Read this to understand how the @@ -924,6 +926,9 @@ collect(int generation, Py_ssize_t *n_collected, Py_ssize_t *n_uncollectable, PySys_WriteStderr("\n"); } + if (PyDTrace_GC_START_ENABLED()) + PyDTrace_GC_START(generation); + /* update collection and allocation counters */ if (generation+1 < NUM_GENERATIONS) generations[generation+1].count += 1; @@ -1068,6 +1073,10 @@ collect(int generation, Py_ssize_t *n_collected, Py_ssize_t *n_uncollectable, stats->collections++; stats->collected += m; stats->uncollectable += n; + + if (PyDTrace_GC_DONE_ENABLED()) + PyDTrace_GC_DONE(n+m); + return n+m; } @@ -1588,6 +1597,15 @@ PyGC_Collect(void) } Py_ssize_t +_PyGC_CollectIfEnabled(void) +{ + if (!enabled) + return 0; + + return PyGC_Collect(); +} + +Py_ssize_t _PyGC_CollectNoFail(void) { Py_ssize_t n; |