1 /*[clinic input] 2 preserve 3 [clinic start generated code]*/ 4 5 PyDoc_STRVAR(gc_enable__doc__, 6 "enable($module, /)\n" 7 "--\n" 8 "\n" 9 "Enable automatic garbage collection."); 10 11 #define GC_ENABLE_METHODDEF \ 12 {"enable", (PyCFunction)gc_enable, METH_NOARGS, gc_enable__doc__}, 13 14 static PyObject * 15 gc_enable_impl(PyObject *module); 16 17 static PyObject * 18 gc_enable(PyObject *module, PyObject *Py_UNUSED(ignored)) 19 { 20 return gc_enable_impl(module); 21 } 22 23 PyDoc_STRVAR(gc_disable__doc__, 24 "disable($module, /)\n" 25 "--\n" 26 "\n" 27 "Disable automatic garbage collection."); 28 29 #define GC_DISABLE_METHODDEF \ 30 {"disable", (PyCFunction)gc_disable, METH_NOARGS, gc_disable__doc__}, 31 32 static PyObject * 33 gc_disable_impl(PyObject *module); 34 35 static PyObject * 36 gc_disable(PyObject *module, PyObject *Py_UNUSED(ignored)) 37 { 38 return gc_disable_impl(module); 39 } 40 41 PyDoc_STRVAR(gc_isenabled__doc__, 42 "isenabled($module, /)\n" 43 "--\n" 44 "\n" 45 "Returns true if automatic garbage collection is enabled."); 46 47 #define GC_ISENABLED_METHODDEF \ 48 {"isenabled", (PyCFunction)gc_isenabled, METH_NOARGS, gc_isenabled__doc__}, 49 50 static int 51 gc_isenabled_impl(PyObject *module); 52 53 static PyObject * 54 gc_isenabled(PyObject *module, PyObject *Py_UNUSED(ignored)) 55 { 56 PyObject *return_value = NULL; 57 int _return_value; 58 59 _return_value = gc_isenabled_impl(module); 60 if ((_return_value == -1) && PyErr_Occurred()) { 61 goto exit; 62 } 63 return_value = PyBool_FromLong((long)_return_value); 64 65 exit: 66 return return_value; 67 } 68 69 PyDoc_STRVAR(gc_collect__doc__, 70 "collect($module, /, generation=2)\n" 71 "--\n" 72 "\n" 73 "Run the garbage collector.\n" 74 "\n" 75 "With no arguments, run a full collection. The optional argument\n" 76 "may be an integer specifying which generation to collect. A ValueError\n" 77 "is raised if the generation number is invalid.\n" 78 "\n" 79 "The number of unreachable objects is returned."); 80 81 #define GC_COLLECT_METHODDEF \ 82 {"collect", (PyCFunction)gc_collect, METH_FASTCALL|METH_KEYWORDS, gc_collect__doc__}, 83 84 static Py_ssize_t 85 gc_collect_impl(PyObject *module, int generation); 86 87 static PyObject * 88 gc_collect(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 89 { 90 PyObject *return_value = NULL; 91 static const char * const _keywords[] = {"generation", NULL}; 92 static _PyArg_Parser _parser = {"|i:collect", _keywords, 0}; 93 int generation = NUM_GENERATIONS - 1; 94 Py_ssize_t _return_value; 95 96 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, 97 &generation)) { 98 goto exit; 99 } 100 _return_value = gc_collect_impl(module, generation); 101 if ((_return_value == -1) && PyErr_Occurred()) { 102 goto exit; 103 } 104 return_value = PyLong_FromSsize_t(_return_value); 105 106 exit: 107 return return_value; 108 } 109 110 PyDoc_STRVAR(gc_set_debug__doc__, 111 "set_debug($module, flags, /)\n" 112 "--\n" 113 "\n" 114 "Set the garbage collection debugging flags.\n" 115 "\n" 116 " flags\n" 117 " An integer that can have the following bits turned on:\n" 118 " DEBUG_STATS - Print statistics during collection.\n" 119 " DEBUG_COLLECTABLE - Print collectable objects found.\n" 120 " DEBUG_UNCOLLECTABLE - Print unreachable but uncollectable objects\n" 121 " found.\n" 122 " DEBUG_SAVEALL - Save objects to gc.garbage rather than freeing them.\n" 123 " DEBUG_LEAK - Debug leaking programs (everything but STATS).\n" 124 "\n" 125 "Debugging information is written to sys.stderr."); 126 127 #define GC_SET_DEBUG_METHODDEF \ 128 {"set_debug", (PyCFunction)gc_set_debug, METH_O, gc_set_debug__doc__}, 129 130 static PyObject * 131 gc_set_debug_impl(PyObject *module, int flags); 132 133 static PyObject * 134 gc_set_debug(PyObject *module, PyObject *arg) 135 { 136 PyObject *return_value = NULL; 137 int flags; 138 139 if (!PyArg_Parse(arg, "i:set_debug", &flags)) { 140 goto exit; 141 } 142 return_value = gc_set_debug_impl(module, flags); 143 144 exit: 145 return return_value; 146 } 147 148 PyDoc_STRVAR(gc_get_debug__doc__, 149 "get_debug($module, /)\n" 150 "--\n" 151 "\n" 152 "Get the garbage collection debugging flags."); 153 154 #define GC_GET_DEBUG_METHODDEF \ 155 {"get_debug", (PyCFunction)gc_get_debug, METH_NOARGS, gc_get_debug__doc__}, 156 157 static int 158 gc_get_debug_impl(PyObject *module); 159 160 static PyObject * 161 gc_get_debug(PyObject *module, PyObject *Py_UNUSED(ignored)) 162 { 163 PyObject *return_value = NULL; 164 int _return_value; 165 166 _return_value = gc_get_debug_impl(module); 167 if ((_return_value == -1) && PyErr_Occurred()) { 168 goto exit; 169 } 170 return_value = PyLong_FromLong((long)_return_value); 171 172 exit: 173 return return_value; 174 } 175 176 PyDoc_STRVAR(gc_get_threshold__doc__, 177 "get_threshold($module, /)\n" 178 "--\n" 179 "\n" 180 "Return the current collection thresholds."); 181 182 #define GC_GET_THRESHOLD_METHODDEF \ 183 {"get_threshold", (PyCFunction)gc_get_threshold, METH_NOARGS, gc_get_threshold__doc__}, 184 185 static PyObject * 186 gc_get_threshold_impl(PyObject *module); 187 188 static PyObject * 189 gc_get_threshold(PyObject *module, PyObject *Py_UNUSED(ignored)) 190 { 191 return gc_get_threshold_impl(module); 192 } 193 194 PyDoc_STRVAR(gc_get_count__doc__, 195 "get_count($module, /)\n" 196 "--\n" 197 "\n" 198 "Return a three-tuple of the current collection counts."); 199 200 #define GC_GET_COUNT_METHODDEF \ 201 {"get_count", (PyCFunction)gc_get_count, METH_NOARGS, gc_get_count__doc__}, 202 203 static PyObject * 204 gc_get_count_impl(PyObject *module); 205 206 static PyObject * 207 gc_get_count(PyObject *module, PyObject *Py_UNUSED(ignored)) 208 { 209 return gc_get_count_impl(module); 210 } 211 212 PyDoc_STRVAR(gc_get_objects__doc__, 213 "get_objects($module, /)\n" 214 "--\n" 215 "\n" 216 "Return a list of objects tracked by the collector (excluding the list returned)."); 217 218 #define GC_GET_OBJECTS_METHODDEF \ 219 {"get_objects", (PyCFunction)gc_get_objects, METH_NOARGS, gc_get_objects__doc__}, 220 221 static PyObject * 222 gc_get_objects_impl(PyObject *module); 223 224 static PyObject * 225 gc_get_objects(PyObject *module, PyObject *Py_UNUSED(ignored)) 226 { 227 return gc_get_objects_impl(module); 228 } 229 230 PyDoc_STRVAR(gc_get_stats__doc__, 231 "get_stats($module, /)\n" 232 "--\n" 233 "\n" 234 "Return a list of dictionaries containing per-generation statistics."); 235 236 #define GC_GET_STATS_METHODDEF \ 237 {"get_stats", (PyCFunction)gc_get_stats, METH_NOARGS, gc_get_stats__doc__}, 238 239 static PyObject * 240 gc_get_stats_impl(PyObject *module); 241 242 static PyObject * 243 gc_get_stats(PyObject *module, PyObject *Py_UNUSED(ignored)) 244 { 245 return gc_get_stats_impl(module); 246 } 247 248 PyDoc_STRVAR(gc_is_tracked__doc__, 249 "is_tracked($module, obj, /)\n" 250 "--\n" 251 "\n" 252 "Returns true if the object is tracked by the garbage collector.\n" 253 "\n" 254 "Simple atomic objects will return false."); 255 256 #define GC_IS_TRACKED_METHODDEF \ 257 {"is_tracked", (PyCFunction)gc_is_tracked, METH_O, gc_is_tracked__doc__}, 258 259 PyDoc_STRVAR(gc_freeze__doc__, 260 "freeze($module, /)\n" 261 "--\n" 262 "\n" 263 "Freeze all current tracked objects and ignore them for future collections.\n" 264 "\n" 265 "This can be used before a POSIX fork() call to make the gc copy-on-write friendly.\n" 266 "Note: collection before a POSIX fork() call may free pages for future allocation\n" 267 "which can cause copy-on-write."); 268 269 #define GC_FREEZE_METHODDEF \ 270 {"freeze", (PyCFunction)gc_freeze, METH_NOARGS, gc_freeze__doc__}, 271 272 static PyObject * 273 gc_freeze_impl(PyObject *module); 274 275 static PyObject * 276 gc_freeze(PyObject *module, PyObject *Py_UNUSED(ignored)) 277 { 278 return gc_freeze_impl(module); 279 } 280 281 PyDoc_STRVAR(gc_unfreeze__doc__, 282 "unfreeze($module, /)\n" 283 "--\n" 284 "\n" 285 "Unfreeze all objects in the permanent generation.\n" 286 "\n" 287 "Put all objects in the permanent generation back into oldest generation."); 288 289 #define GC_UNFREEZE_METHODDEF \ 290 {"unfreeze", (PyCFunction)gc_unfreeze, METH_NOARGS, gc_unfreeze__doc__}, 291 292 static PyObject * 293 gc_unfreeze_impl(PyObject *module); 294 295 static PyObject * 296 gc_unfreeze(PyObject *module, PyObject *Py_UNUSED(ignored)) 297 { 298 return gc_unfreeze_impl(module); 299 } 300 301 PyDoc_STRVAR(gc_get_freeze_count__doc__, 302 "get_freeze_count($module, /)\n" 303 "--\n" 304 "\n" 305 "Return the number of objects in the permanent generation."); 306 307 #define GC_GET_FREEZE_COUNT_METHODDEF \ 308 {"get_freeze_count", (PyCFunction)gc_get_freeze_count, METH_NOARGS, gc_get_freeze_count__doc__}, 309 310 static Py_ssize_t 311 gc_get_freeze_count_impl(PyObject *module); 312 313 static PyObject * 314 gc_get_freeze_count(PyObject *module, PyObject *Py_UNUSED(ignored)) 315 { 316 PyObject *return_value = NULL; 317 Py_ssize_t _return_value; 318 319 _return_value = gc_get_freeze_count_impl(module); 320 if ((_return_value == -1) && PyErr_Occurred()) { 321 goto exit; 322 } 323 return_value = PyLong_FromSsize_t(_return_value); 324 325 exit: 326 return return_value; 327 } 328 /*[clinic end generated code: output=21dc9270b10b7891 input=a9049054013a1b77]*/ 329