summaryrefslogtreecommitdiffstats
path: root/Modules/gcmodule.c
diff options
context:
space:
mode:
Diffstat (limited to 'Modules/gcmodule.c')
-rw-r--r--Modules/gcmodule.c39
1 files changed, 10 insertions, 29 deletions
diff --git a/Modules/gcmodule.c b/Modules/gcmodule.c
index f5fea5a..ad13496 100644
--- a/Modules/gcmodule.c
+++ b/Modules/gcmodule.c
@@ -216,31 +216,21 @@ gc_get_count_impl(PyObject *module)
/*[clinic input]
gc.get_referrers
- *objs as args: object
+ *objs: tuple
Return the list of objects that directly refer to any of 'objs'.
[clinic start generated code]*/
static PyObject *
-gc_get_referrers_impl(PyObject *module, Py_ssize_t nargs,
- PyObject *const *args)
-/*[clinic end generated code: output=1d44a7695ea25c40 input=bae96961b14a0922]*/
+gc_get_referrers_impl(PyObject *module, PyObject *objs)
+/*[clinic end generated code: output=929d6dff26f609b9 input=9102be7ebee69ee3]*/
{
- PyObject *varargs = _PyTuple_FromArray(args, nargs);
-
- if (!varargs) {
- return NULL;
- }
- if (PySys_Audit("gc.get_referrers", "(O)", varargs) < 0) {
- Py_DECREF(varargs);
+ if (PySys_Audit("gc.get_referrers", "(O)", objs) < 0) {
return NULL;
}
PyInterpreterState *interp = _PyInterpreterState_GET();
- PyObject *result = _PyGC_GetReferrers(interp, varargs);
-
- Py_DECREF(varargs);
- return result;
+ return _PyGC_GetReferrers(interp, objs);
}
/* Append obj to list; return true if error (out of memory), false if OK. */
@@ -274,43 +264,34 @@ append_referrents(PyObject *result, PyObject *args)
/*[clinic input]
gc.get_referents
- *objs as args: object
+ *objs: tuple
Return the list of objects that are directly referred to by 'objs'.
[clinic start generated code]*/
static PyObject *
-gc_get_referents_impl(PyObject *module, Py_ssize_t nargs,
- PyObject *const *args)
-/*[clinic end generated code: output=e459f3e8c0d19311 input=b3ceab0c34038cbf]*/
+gc_get_referents_impl(PyObject *module, PyObject *objs)
+/*[clinic end generated code: output=6dfde40cd1588e1d input=55c078a6d0248fe0]*/
{
- PyObject *varargs = _PyTuple_FromArray(args, nargs);
-
- if (!varargs) {
- return NULL;
- }
- if (PySys_Audit("gc.get_referents", "(O)", varargs) < 0) {
- Py_DECREF(varargs);
+ if (PySys_Audit("gc.get_referents", "(O)", objs) < 0) {
return NULL;
}
PyInterpreterState *interp = _PyInterpreterState_GET();
PyObject *result = PyList_New(0);
if (result == NULL) {
- Py_DECREF(varargs);
return NULL;
}
// NOTE: stop the world is a no-op in default build
_PyEval_StopTheWorld(interp);
- int err = append_referrents(result, varargs);
+ int err = append_referrents(result, objs);
_PyEval_StartTheWorld(interp);
if (err < 0) {
Py_CLEAR(result);
}
- Py_DECREF(varargs);
return result;
}