summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin v. Löwis <martin@v.loewis.de>2001-11-24 09:24:51 (GMT)
committerMartin v. Löwis <martin@v.loewis.de>2001-11-24 09:24:51 (GMT)
commit560da62fc75b1c3e38bea915ea648c4d895001a3 (patch)
tree04585ef5af4f39cf9eecec4f80d9ca42e8148ee4
parent8c1ab14adac10799dc3defcb50f3976c74e85bbf (diff)
downloadcpython-560da62fc75b1c3e38bea915ea648c4d895001a3.zip
cpython-560da62fc75b1c3e38bea915ea648c4d895001a3.tar.gz
cpython-560da62fc75b1c3e38bea915ea648c4d895001a3.tar.bz2
Rename get_referents to get_referrers. Fixes #483815.
-rw-r--r--Doc/lib/libgc.tex7
-rw-r--r--Misc/NEWS4
-rw-r--r--Modules/gcmodule.c24
3 files changed, 23 insertions, 12 deletions
diff --git a/Doc/lib/libgc.tex b/Doc/lib/libgc.tex
index 05df021..6d1b519 100644
--- a/Doc/lib/libgc.tex
+++ b/Doc/lib/libgc.tex
@@ -78,6 +78,13 @@ Return the current collection thresholds as a tuple of
\code{(\var{threshold0}, \var{threshold1}, \var{threshold2})}.
\end{funcdesc}
+\begin{funcdesc}{get_referrers}{*objs}
+Return the list of objects that directly refer to any of objs. This
+function will only locate those containers which support garbage
+collection; extension types which do refer to other objects but do not
+support garbage collection will not be found.
+\versionadded{2.2}
+\end{funcdesc}
The following variable is provided for read-only access (you can
mutate its value but should not rebind it):
diff --git a/Misc/NEWS b/Misc/NEWS
index f005c97..c74e619 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -8,6 +8,8 @@ Core and builtins
Extension modules
+- gc.get_referents was renamed to gc.get_referrers.
+
Library
Tools/Demos
@@ -905,6 +907,8 @@ Library
- The `new' module now exposes the CO_xxx flags.
+- The gc module offers the get_referents function.
+
New platforms
C API
diff --git a/Modules/gcmodule.c b/Modules/gcmodule.c
index 08b57ac..0b49a04 100644
--- a/Modules/gcmodule.c
+++ b/Modules/gcmodule.c
@@ -648,7 +648,7 @@ gc_get_thresh(PyObject *self, PyObject *args)
}
static int
-referentsvisit(PyObject* obj, PyObject *objs)
+referrersvisit(PyObject* obj, PyObject *objs)
{
if (PySequence_Contains(objs, obj)) {
return 1;
@@ -657,7 +657,7 @@ referentsvisit(PyObject* obj, PyObject *objs)
}
static int
-gc_referents_for(PyObject *objs, PyGC_Head *list, PyObject *resultlist)
+gc_referrers_for(PyObject *objs, PyGC_Head *list, PyObject *resultlist)
{
PyGC_Head *gc;
PyObject *obj;
@@ -667,7 +667,7 @@ gc_referents_for(PyObject *objs, PyGC_Head *list, PyObject *resultlist)
traverse = obj->ob_type->tp_traverse;
if (obj == objs || obj == resultlist)
continue;
- if (traverse(obj, (visitproc)referentsvisit, objs)) {
+ if (traverse(obj, (visitproc)referrersvisit, objs)) {
if (PyList_Append(resultlist, obj) < 0)
return 0; /* error */
}
@@ -675,17 +675,17 @@ gc_referents_for(PyObject *objs, PyGC_Head *list, PyObject *resultlist)
return 1; /* no error */
}
-static char gc_get_referents__doc__[]=
-"get_referents(*objs) -> list\n\
+static char gc_get_referrers__doc__[]=
+"get_referrers(*objs) -> list\n\
Return the list of objects that directly refer to any of objs.";
static PyObject *
-gc_get_referents(PyObject *self, PyObject *args)
+gc_get_referrers(PyObject *self, PyObject *args)
{
PyObject *result = PyList_New(0);
- if (!(gc_referents_for(args, &_PyGC_generation0, result) &&
- gc_referents_for(args, &generation1, result) &&
- gc_referents_for(args, &generation2, result))) {
+ if (!(gc_referrers_for(args, &_PyGC_generation0, result) &&
+ gc_referrers_for(args, &generation1, result) &&
+ gc_referrers_for(args, &generation2, result))) {
Py_DECREF(result);
return NULL;
}
@@ -740,7 +740,7 @@ static char gc__doc__ [] =
"set_threshold() -- Set the collection thresholds.\n"
"get_threshold() -- Return the current the collection thresholds.\n"
"get_objects() -- Return a list of all objects tracked by the collector.\n"
-"get_referents() -- Return the list of objects that refer to an object.\n"
+"get_referrers() -- Return the list of objects that refer to an object.\n"
;
static PyMethodDef GcMethods[] = {
@@ -753,8 +753,8 @@ static PyMethodDef GcMethods[] = {
{"get_threshold", gc_get_thresh, METH_VARARGS, gc_get_thresh__doc__},
{"collect", gc_collect, METH_VARARGS, gc_collect__doc__},
{"get_objects", gc_get_objects,METH_VARARGS, gc_get_objects__doc__},
- {"get_referents", gc_get_referents, METH_VARARGS,
- gc_get_referents__doc__},
+ {"get_referrers", gc_get_referrers, METH_VARARGS,
+ gc_get_referrers__doc__},
{NULL, NULL} /* Sentinel */
};