17db96d56Sopenharmony_ci/*[clinic input]
27db96d56Sopenharmony_cipreserve
37db96d56Sopenharmony_ci[clinic start generated code]*/
47db96d56Sopenharmony_ci
57db96d56Sopenharmony_ciPyDoc_STRVAR(gc_enable__doc__,
67db96d56Sopenharmony_ci"enable($module, /)\n"
77db96d56Sopenharmony_ci"--\n"
87db96d56Sopenharmony_ci"\n"
97db96d56Sopenharmony_ci"Enable automatic garbage collection.");
107db96d56Sopenharmony_ci
117db96d56Sopenharmony_ci#define GC_ENABLE_METHODDEF    \
127db96d56Sopenharmony_ci    {"enable", (PyCFunction)gc_enable, METH_NOARGS, gc_enable__doc__},
137db96d56Sopenharmony_ci
147db96d56Sopenharmony_cistatic PyObject *
157db96d56Sopenharmony_cigc_enable_impl(PyObject *module);
167db96d56Sopenharmony_ci
177db96d56Sopenharmony_cistatic PyObject *
187db96d56Sopenharmony_cigc_enable(PyObject *module, PyObject *Py_UNUSED(ignored))
197db96d56Sopenharmony_ci{
207db96d56Sopenharmony_ci    return gc_enable_impl(module);
217db96d56Sopenharmony_ci}
227db96d56Sopenharmony_ci
237db96d56Sopenharmony_ciPyDoc_STRVAR(gc_disable__doc__,
247db96d56Sopenharmony_ci"disable($module, /)\n"
257db96d56Sopenharmony_ci"--\n"
267db96d56Sopenharmony_ci"\n"
277db96d56Sopenharmony_ci"Disable automatic garbage collection.");
287db96d56Sopenharmony_ci
297db96d56Sopenharmony_ci#define GC_DISABLE_METHODDEF    \
307db96d56Sopenharmony_ci    {"disable", (PyCFunction)gc_disable, METH_NOARGS, gc_disable__doc__},
317db96d56Sopenharmony_ci
327db96d56Sopenharmony_cistatic PyObject *
337db96d56Sopenharmony_cigc_disable_impl(PyObject *module);
347db96d56Sopenharmony_ci
357db96d56Sopenharmony_cistatic PyObject *
367db96d56Sopenharmony_cigc_disable(PyObject *module, PyObject *Py_UNUSED(ignored))
377db96d56Sopenharmony_ci{
387db96d56Sopenharmony_ci    return gc_disable_impl(module);
397db96d56Sopenharmony_ci}
407db96d56Sopenharmony_ci
417db96d56Sopenharmony_ciPyDoc_STRVAR(gc_isenabled__doc__,
427db96d56Sopenharmony_ci"isenabled($module, /)\n"
437db96d56Sopenharmony_ci"--\n"
447db96d56Sopenharmony_ci"\n"
457db96d56Sopenharmony_ci"Returns true if automatic garbage collection is enabled.");
467db96d56Sopenharmony_ci
477db96d56Sopenharmony_ci#define GC_ISENABLED_METHODDEF    \
487db96d56Sopenharmony_ci    {"isenabled", (PyCFunction)gc_isenabled, METH_NOARGS, gc_isenabled__doc__},
497db96d56Sopenharmony_ci
507db96d56Sopenharmony_cistatic int
517db96d56Sopenharmony_cigc_isenabled_impl(PyObject *module);
527db96d56Sopenharmony_ci
537db96d56Sopenharmony_cistatic PyObject *
547db96d56Sopenharmony_cigc_isenabled(PyObject *module, PyObject *Py_UNUSED(ignored))
557db96d56Sopenharmony_ci{
567db96d56Sopenharmony_ci    PyObject *return_value = NULL;
577db96d56Sopenharmony_ci    int _return_value;
587db96d56Sopenharmony_ci
597db96d56Sopenharmony_ci    _return_value = gc_isenabled_impl(module);
607db96d56Sopenharmony_ci    if ((_return_value == -1) && PyErr_Occurred()) {
617db96d56Sopenharmony_ci        goto exit;
627db96d56Sopenharmony_ci    }
637db96d56Sopenharmony_ci    return_value = PyBool_FromLong((long)_return_value);
647db96d56Sopenharmony_ci
657db96d56Sopenharmony_ciexit:
667db96d56Sopenharmony_ci    return return_value;
677db96d56Sopenharmony_ci}
687db96d56Sopenharmony_ci
697db96d56Sopenharmony_ciPyDoc_STRVAR(gc_collect__doc__,
707db96d56Sopenharmony_ci"collect($module, /, generation=2)\n"
717db96d56Sopenharmony_ci"--\n"
727db96d56Sopenharmony_ci"\n"
737db96d56Sopenharmony_ci"Run the garbage collector.\n"
747db96d56Sopenharmony_ci"\n"
757db96d56Sopenharmony_ci"With no arguments, run a full collection.  The optional argument\n"
767db96d56Sopenharmony_ci"may be an integer specifying which generation to collect.  A ValueError\n"
777db96d56Sopenharmony_ci"is raised if the generation number is invalid.\n"
787db96d56Sopenharmony_ci"\n"
797db96d56Sopenharmony_ci"The number of unreachable objects is returned.");
807db96d56Sopenharmony_ci
817db96d56Sopenharmony_ci#define GC_COLLECT_METHODDEF    \
827db96d56Sopenharmony_ci    {"collect", _PyCFunction_CAST(gc_collect), METH_FASTCALL|METH_KEYWORDS, gc_collect__doc__},
837db96d56Sopenharmony_ci
847db96d56Sopenharmony_cistatic Py_ssize_t
857db96d56Sopenharmony_cigc_collect_impl(PyObject *module, int generation);
867db96d56Sopenharmony_ci
877db96d56Sopenharmony_cistatic PyObject *
887db96d56Sopenharmony_cigc_collect(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
897db96d56Sopenharmony_ci{
907db96d56Sopenharmony_ci    PyObject *return_value = NULL;
917db96d56Sopenharmony_ci    static const char * const _keywords[] = {"generation", NULL};
927db96d56Sopenharmony_ci    static _PyArg_Parser _parser = {NULL, _keywords, "collect", 0};
937db96d56Sopenharmony_ci    PyObject *argsbuf[1];
947db96d56Sopenharmony_ci    Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
957db96d56Sopenharmony_ci    int generation = NUM_GENERATIONS - 1;
967db96d56Sopenharmony_ci    Py_ssize_t _return_value;
977db96d56Sopenharmony_ci
987db96d56Sopenharmony_ci    args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 1, 0, argsbuf);
997db96d56Sopenharmony_ci    if (!args) {
1007db96d56Sopenharmony_ci        goto exit;
1017db96d56Sopenharmony_ci    }
1027db96d56Sopenharmony_ci    if (!noptargs) {
1037db96d56Sopenharmony_ci        goto skip_optional_pos;
1047db96d56Sopenharmony_ci    }
1057db96d56Sopenharmony_ci    generation = _PyLong_AsInt(args[0]);
1067db96d56Sopenharmony_ci    if (generation == -1 && PyErr_Occurred()) {
1077db96d56Sopenharmony_ci        goto exit;
1087db96d56Sopenharmony_ci    }
1097db96d56Sopenharmony_ciskip_optional_pos:
1107db96d56Sopenharmony_ci    _return_value = gc_collect_impl(module, generation);
1117db96d56Sopenharmony_ci    if ((_return_value == -1) && PyErr_Occurred()) {
1127db96d56Sopenharmony_ci        goto exit;
1137db96d56Sopenharmony_ci    }
1147db96d56Sopenharmony_ci    return_value = PyLong_FromSsize_t(_return_value);
1157db96d56Sopenharmony_ci
1167db96d56Sopenharmony_ciexit:
1177db96d56Sopenharmony_ci    return return_value;
1187db96d56Sopenharmony_ci}
1197db96d56Sopenharmony_ci
1207db96d56Sopenharmony_ciPyDoc_STRVAR(gc_set_debug__doc__,
1217db96d56Sopenharmony_ci"set_debug($module, flags, /)\n"
1227db96d56Sopenharmony_ci"--\n"
1237db96d56Sopenharmony_ci"\n"
1247db96d56Sopenharmony_ci"Set the garbage collection debugging flags.\n"
1257db96d56Sopenharmony_ci"\n"
1267db96d56Sopenharmony_ci"  flags\n"
1277db96d56Sopenharmony_ci"    An integer that can have the following bits turned on:\n"
1287db96d56Sopenharmony_ci"      DEBUG_STATS - Print statistics during collection.\n"
1297db96d56Sopenharmony_ci"      DEBUG_COLLECTABLE - Print collectable objects found.\n"
1307db96d56Sopenharmony_ci"      DEBUG_UNCOLLECTABLE - Print unreachable but uncollectable objects\n"
1317db96d56Sopenharmony_ci"        found.\n"
1327db96d56Sopenharmony_ci"      DEBUG_SAVEALL - Save objects to gc.garbage rather than freeing them.\n"
1337db96d56Sopenharmony_ci"      DEBUG_LEAK - Debug leaking programs (everything but STATS).\n"
1347db96d56Sopenharmony_ci"\n"
1357db96d56Sopenharmony_ci"Debugging information is written to sys.stderr.");
1367db96d56Sopenharmony_ci
1377db96d56Sopenharmony_ci#define GC_SET_DEBUG_METHODDEF    \
1387db96d56Sopenharmony_ci    {"set_debug", (PyCFunction)gc_set_debug, METH_O, gc_set_debug__doc__},
1397db96d56Sopenharmony_ci
1407db96d56Sopenharmony_cistatic PyObject *
1417db96d56Sopenharmony_cigc_set_debug_impl(PyObject *module, int flags);
1427db96d56Sopenharmony_ci
1437db96d56Sopenharmony_cistatic PyObject *
1447db96d56Sopenharmony_cigc_set_debug(PyObject *module, PyObject *arg)
1457db96d56Sopenharmony_ci{
1467db96d56Sopenharmony_ci    PyObject *return_value = NULL;
1477db96d56Sopenharmony_ci    int flags;
1487db96d56Sopenharmony_ci
1497db96d56Sopenharmony_ci    flags = _PyLong_AsInt(arg);
1507db96d56Sopenharmony_ci    if (flags == -1 && PyErr_Occurred()) {
1517db96d56Sopenharmony_ci        goto exit;
1527db96d56Sopenharmony_ci    }
1537db96d56Sopenharmony_ci    return_value = gc_set_debug_impl(module, flags);
1547db96d56Sopenharmony_ci
1557db96d56Sopenharmony_ciexit:
1567db96d56Sopenharmony_ci    return return_value;
1577db96d56Sopenharmony_ci}
1587db96d56Sopenharmony_ci
1597db96d56Sopenharmony_ciPyDoc_STRVAR(gc_get_debug__doc__,
1607db96d56Sopenharmony_ci"get_debug($module, /)\n"
1617db96d56Sopenharmony_ci"--\n"
1627db96d56Sopenharmony_ci"\n"
1637db96d56Sopenharmony_ci"Get the garbage collection debugging flags.");
1647db96d56Sopenharmony_ci
1657db96d56Sopenharmony_ci#define GC_GET_DEBUG_METHODDEF    \
1667db96d56Sopenharmony_ci    {"get_debug", (PyCFunction)gc_get_debug, METH_NOARGS, gc_get_debug__doc__},
1677db96d56Sopenharmony_ci
1687db96d56Sopenharmony_cistatic int
1697db96d56Sopenharmony_cigc_get_debug_impl(PyObject *module);
1707db96d56Sopenharmony_ci
1717db96d56Sopenharmony_cistatic PyObject *
1727db96d56Sopenharmony_cigc_get_debug(PyObject *module, PyObject *Py_UNUSED(ignored))
1737db96d56Sopenharmony_ci{
1747db96d56Sopenharmony_ci    PyObject *return_value = NULL;
1757db96d56Sopenharmony_ci    int _return_value;
1767db96d56Sopenharmony_ci
1777db96d56Sopenharmony_ci    _return_value = gc_get_debug_impl(module);
1787db96d56Sopenharmony_ci    if ((_return_value == -1) && PyErr_Occurred()) {
1797db96d56Sopenharmony_ci        goto exit;
1807db96d56Sopenharmony_ci    }
1817db96d56Sopenharmony_ci    return_value = PyLong_FromLong((long)_return_value);
1827db96d56Sopenharmony_ci
1837db96d56Sopenharmony_ciexit:
1847db96d56Sopenharmony_ci    return return_value;
1857db96d56Sopenharmony_ci}
1867db96d56Sopenharmony_ci
1877db96d56Sopenharmony_ciPyDoc_STRVAR(gc_get_threshold__doc__,
1887db96d56Sopenharmony_ci"get_threshold($module, /)\n"
1897db96d56Sopenharmony_ci"--\n"
1907db96d56Sopenharmony_ci"\n"
1917db96d56Sopenharmony_ci"Return the current collection thresholds.");
1927db96d56Sopenharmony_ci
1937db96d56Sopenharmony_ci#define GC_GET_THRESHOLD_METHODDEF    \
1947db96d56Sopenharmony_ci    {"get_threshold", (PyCFunction)gc_get_threshold, METH_NOARGS, gc_get_threshold__doc__},
1957db96d56Sopenharmony_ci
1967db96d56Sopenharmony_cistatic PyObject *
1977db96d56Sopenharmony_cigc_get_threshold_impl(PyObject *module);
1987db96d56Sopenharmony_ci
1997db96d56Sopenharmony_cistatic PyObject *
2007db96d56Sopenharmony_cigc_get_threshold(PyObject *module, PyObject *Py_UNUSED(ignored))
2017db96d56Sopenharmony_ci{
2027db96d56Sopenharmony_ci    return gc_get_threshold_impl(module);
2037db96d56Sopenharmony_ci}
2047db96d56Sopenharmony_ci
2057db96d56Sopenharmony_ciPyDoc_STRVAR(gc_get_count__doc__,
2067db96d56Sopenharmony_ci"get_count($module, /)\n"
2077db96d56Sopenharmony_ci"--\n"
2087db96d56Sopenharmony_ci"\n"
2097db96d56Sopenharmony_ci"Return a three-tuple of the current collection counts.");
2107db96d56Sopenharmony_ci
2117db96d56Sopenharmony_ci#define GC_GET_COUNT_METHODDEF    \
2127db96d56Sopenharmony_ci    {"get_count", (PyCFunction)gc_get_count, METH_NOARGS, gc_get_count__doc__},
2137db96d56Sopenharmony_ci
2147db96d56Sopenharmony_cistatic PyObject *
2157db96d56Sopenharmony_cigc_get_count_impl(PyObject *module);
2167db96d56Sopenharmony_ci
2177db96d56Sopenharmony_cistatic PyObject *
2187db96d56Sopenharmony_cigc_get_count(PyObject *module, PyObject *Py_UNUSED(ignored))
2197db96d56Sopenharmony_ci{
2207db96d56Sopenharmony_ci    return gc_get_count_impl(module);
2217db96d56Sopenharmony_ci}
2227db96d56Sopenharmony_ci
2237db96d56Sopenharmony_ciPyDoc_STRVAR(gc_get_objects__doc__,
2247db96d56Sopenharmony_ci"get_objects($module, /, generation=None)\n"
2257db96d56Sopenharmony_ci"--\n"
2267db96d56Sopenharmony_ci"\n"
2277db96d56Sopenharmony_ci"Return a list of objects tracked by the collector (excluding the list returned).\n"
2287db96d56Sopenharmony_ci"\n"
2297db96d56Sopenharmony_ci"  generation\n"
2307db96d56Sopenharmony_ci"    Generation to extract the objects from.\n"
2317db96d56Sopenharmony_ci"\n"
2327db96d56Sopenharmony_ci"If generation is not None, return only the objects tracked by the collector\n"
2337db96d56Sopenharmony_ci"that are in that generation.");
2347db96d56Sopenharmony_ci
2357db96d56Sopenharmony_ci#define GC_GET_OBJECTS_METHODDEF    \
2367db96d56Sopenharmony_ci    {"get_objects", _PyCFunction_CAST(gc_get_objects), METH_FASTCALL|METH_KEYWORDS, gc_get_objects__doc__},
2377db96d56Sopenharmony_ci
2387db96d56Sopenharmony_cistatic PyObject *
2397db96d56Sopenharmony_cigc_get_objects_impl(PyObject *module, Py_ssize_t generation);
2407db96d56Sopenharmony_ci
2417db96d56Sopenharmony_cistatic PyObject *
2427db96d56Sopenharmony_cigc_get_objects(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
2437db96d56Sopenharmony_ci{
2447db96d56Sopenharmony_ci    PyObject *return_value = NULL;
2457db96d56Sopenharmony_ci    static const char * const _keywords[] = {"generation", NULL};
2467db96d56Sopenharmony_ci    static _PyArg_Parser _parser = {NULL, _keywords, "get_objects", 0};
2477db96d56Sopenharmony_ci    PyObject *argsbuf[1];
2487db96d56Sopenharmony_ci    Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
2497db96d56Sopenharmony_ci    Py_ssize_t generation = -1;
2507db96d56Sopenharmony_ci
2517db96d56Sopenharmony_ci    args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 1, 0, argsbuf);
2527db96d56Sopenharmony_ci    if (!args) {
2537db96d56Sopenharmony_ci        goto exit;
2547db96d56Sopenharmony_ci    }
2557db96d56Sopenharmony_ci    if (!noptargs) {
2567db96d56Sopenharmony_ci        goto skip_optional_pos;
2577db96d56Sopenharmony_ci    }
2587db96d56Sopenharmony_ci    if (!_Py_convert_optional_to_ssize_t(args[0], &generation)) {
2597db96d56Sopenharmony_ci        goto exit;
2607db96d56Sopenharmony_ci    }
2617db96d56Sopenharmony_ciskip_optional_pos:
2627db96d56Sopenharmony_ci    return_value = gc_get_objects_impl(module, generation);
2637db96d56Sopenharmony_ci
2647db96d56Sopenharmony_ciexit:
2657db96d56Sopenharmony_ci    return return_value;
2667db96d56Sopenharmony_ci}
2677db96d56Sopenharmony_ci
2687db96d56Sopenharmony_ciPyDoc_STRVAR(gc_get_stats__doc__,
2697db96d56Sopenharmony_ci"get_stats($module, /)\n"
2707db96d56Sopenharmony_ci"--\n"
2717db96d56Sopenharmony_ci"\n"
2727db96d56Sopenharmony_ci"Return a list of dictionaries containing per-generation statistics.");
2737db96d56Sopenharmony_ci
2747db96d56Sopenharmony_ci#define GC_GET_STATS_METHODDEF    \
2757db96d56Sopenharmony_ci    {"get_stats", (PyCFunction)gc_get_stats, METH_NOARGS, gc_get_stats__doc__},
2767db96d56Sopenharmony_ci
2777db96d56Sopenharmony_cistatic PyObject *
2787db96d56Sopenharmony_cigc_get_stats_impl(PyObject *module);
2797db96d56Sopenharmony_ci
2807db96d56Sopenharmony_cistatic PyObject *
2817db96d56Sopenharmony_cigc_get_stats(PyObject *module, PyObject *Py_UNUSED(ignored))
2827db96d56Sopenharmony_ci{
2837db96d56Sopenharmony_ci    return gc_get_stats_impl(module);
2847db96d56Sopenharmony_ci}
2857db96d56Sopenharmony_ci
2867db96d56Sopenharmony_ciPyDoc_STRVAR(gc_is_tracked__doc__,
2877db96d56Sopenharmony_ci"is_tracked($module, obj, /)\n"
2887db96d56Sopenharmony_ci"--\n"
2897db96d56Sopenharmony_ci"\n"
2907db96d56Sopenharmony_ci"Returns true if the object is tracked by the garbage collector.\n"
2917db96d56Sopenharmony_ci"\n"
2927db96d56Sopenharmony_ci"Simple atomic objects will return false.");
2937db96d56Sopenharmony_ci
2947db96d56Sopenharmony_ci#define GC_IS_TRACKED_METHODDEF    \
2957db96d56Sopenharmony_ci    {"is_tracked", (PyCFunction)gc_is_tracked, METH_O, gc_is_tracked__doc__},
2967db96d56Sopenharmony_ci
2977db96d56Sopenharmony_ciPyDoc_STRVAR(gc_is_finalized__doc__,
2987db96d56Sopenharmony_ci"is_finalized($module, obj, /)\n"
2997db96d56Sopenharmony_ci"--\n"
3007db96d56Sopenharmony_ci"\n"
3017db96d56Sopenharmony_ci"Returns true if the object has been already finalized by the GC.");
3027db96d56Sopenharmony_ci
3037db96d56Sopenharmony_ci#define GC_IS_FINALIZED_METHODDEF    \
3047db96d56Sopenharmony_ci    {"is_finalized", (PyCFunction)gc_is_finalized, METH_O, gc_is_finalized__doc__},
3057db96d56Sopenharmony_ci
3067db96d56Sopenharmony_ciPyDoc_STRVAR(gc_freeze__doc__,
3077db96d56Sopenharmony_ci"freeze($module, /)\n"
3087db96d56Sopenharmony_ci"--\n"
3097db96d56Sopenharmony_ci"\n"
3107db96d56Sopenharmony_ci"Freeze all current tracked objects and ignore them for future collections.\n"
3117db96d56Sopenharmony_ci"\n"
3127db96d56Sopenharmony_ci"This can be used before a POSIX fork() call to make the gc copy-on-write friendly.\n"
3137db96d56Sopenharmony_ci"Note: collection before a POSIX fork() call may free pages for future allocation\n"
3147db96d56Sopenharmony_ci"which can cause copy-on-write.");
3157db96d56Sopenharmony_ci
3167db96d56Sopenharmony_ci#define GC_FREEZE_METHODDEF    \
3177db96d56Sopenharmony_ci    {"freeze", (PyCFunction)gc_freeze, METH_NOARGS, gc_freeze__doc__},
3187db96d56Sopenharmony_ci
3197db96d56Sopenharmony_cistatic PyObject *
3207db96d56Sopenharmony_cigc_freeze_impl(PyObject *module);
3217db96d56Sopenharmony_ci
3227db96d56Sopenharmony_cistatic PyObject *
3237db96d56Sopenharmony_cigc_freeze(PyObject *module, PyObject *Py_UNUSED(ignored))
3247db96d56Sopenharmony_ci{
3257db96d56Sopenharmony_ci    return gc_freeze_impl(module);
3267db96d56Sopenharmony_ci}
3277db96d56Sopenharmony_ci
3287db96d56Sopenharmony_ciPyDoc_STRVAR(gc_unfreeze__doc__,
3297db96d56Sopenharmony_ci"unfreeze($module, /)\n"
3307db96d56Sopenharmony_ci"--\n"
3317db96d56Sopenharmony_ci"\n"
3327db96d56Sopenharmony_ci"Unfreeze all objects in the permanent generation.\n"
3337db96d56Sopenharmony_ci"\n"
3347db96d56Sopenharmony_ci"Put all objects in the permanent generation back into oldest generation.");
3357db96d56Sopenharmony_ci
3367db96d56Sopenharmony_ci#define GC_UNFREEZE_METHODDEF    \
3377db96d56Sopenharmony_ci    {"unfreeze", (PyCFunction)gc_unfreeze, METH_NOARGS, gc_unfreeze__doc__},
3387db96d56Sopenharmony_ci
3397db96d56Sopenharmony_cistatic PyObject *
3407db96d56Sopenharmony_cigc_unfreeze_impl(PyObject *module);
3417db96d56Sopenharmony_ci
3427db96d56Sopenharmony_cistatic PyObject *
3437db96d56Sopenharmony_cigc_unfreeze(PyObject *module, PyObject *Py_UNUSED(ignored))
3447db96d56Sopenharmony_ci{
3457db96d56Sopenharmony_ci    return gc_unfreeze_impl(module);
3467db96d56Sopenharmony_ci}
3477db96d56Sopenharmony_ci
3487db96d56Sopenharmony_ciPyDoc_STRVAR(gc_get_freeze_count__doc__,
3497db96d56Sopenharmony_ci"get_freeze_count($module, /)\n"
3507db96d56Sopenharmony_ci"--\n"
3517db96d56Sopenharmony_ci"\n"
3527db96d56Sopenharmony_ci"Return the number of objects in the permanent generation.");
3537db96d56Sopenharmony_ci
3547db96d56Sopenharmony_ci#define GC_GET_FREEZE_COUNT_METHODDEF    \
3557db96d56Sopenharmony_ci    {"get_freeze_count", (PyCFunction)gc_get_freeze_count, METH_NOARGS, gc_get_freeze_count__doc__},
3567db96d56Sopenharmony_ci
3577db96d56Sopenharmony_cistatic Py_ssize_t
3587db96d56Sopenharmony_cigc_get_freeze_count_impl(PyObject *module);
3597db96d56Sopenharmony_ci
3607db96d56Sopenharmony_cistatic PyObject *
3617db96d56Sopenharmony_cigc_get_freeze_count(PyObject *module, PyObject *Py_UNUSED(ignored))
3627db96d56Sopenharmony_ci{
3637db96d56Sopenharmony_ci    PyObject *return_value = NULL;
3647db96d56Sopenharmony_ci    Py_ssize_t _return_value;
3657db96d56Sopenharmony_ci
3667db96d56Sopenharmony_ci    _return_value = gc_get_freeze_count_impl(module);
3677db96d56Sopenharmony_ci    if ((_return_value == -1) && PyErr_Occurred()) {
3687db96d56Sopenharmony_ci        goto exit;
3697db96d56Sopenharmony_ci    }
3707db96d56Sopenharmony_ci    return_value = PyLong_FromSsize_t(_return_value);
3717db96d56Sopenharmony_ci
3727db96d56Sopenharmony_ciexit:
3737db96d56Sopenharmony_ci    return return_value;
3747db96d56Sopenharmony_ci}
3757db96d56Sopenharmony_ci/*[clinic end generated code: output=71f7136d6e3f2323 input=a9049054013a1b77]*/
376