summaryrefslogtreecommitdiffstats
path: root/Objects
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1997-08-05 02:16:08 (GMT)
committerGuido van Rossum <guido@python.org>1997-08-05 02:16:08 (GMT)
commitfbbd57e4ca4250e27b564d989a75caa0b1a4a9b5 (patch)
tree7e18c422e7879dc136a85dbc5db37727c785ab08 /Objects
parent971a7aaeac7b9c817ca68f11701b97bbd9aa54ab (diff)
downloadcpython-fbbd57e4ca4250e27b564d989a75caa0b1a4a9b5.zip
cpython-fbbd57e4ca4250e27b564d989a75caa0b1a4a9b5.tar.gz
cpython-fbbd57e4ca4250e27b564d989a75caa0b1a4a9b5.tar.bz2
Added _Fini() routines to free up some memory
Diffstat (limited to 'Objects')
-rw-r--r--Objects/floatobject.c6
-rw-r--r--Objects/intobject.c17
-rw-r--r--Objects/tupleobject.c25
3 files changed, 47 insertions, 1 deletions
diff --git a/Objects/floatobject.c b/Objects/floatobject.c
index 7f7f507..6f5b625 100644
--- a/Objects/floatobject.c
+++ b/Objects/floatobject.c
@@ -590,3 +590,9 @@ PyTypeObject PyFloat_Type = {
0, /*tp_as_mapping*/
(hashfunc)float_hash, /*tp_hash*/
};
+
+void
+PyFloat_Fini()
+{
+ /* XXX Alas, the free list is not easily and safely freeable */
+}
diff --git a/Objects/intobject.c b/Objects/intobject.c
index 4db2a69..e09758b 100644
--- a/Objects/intobject.c
+++ b/Objects/intobject.c
@@ -790,3 +790,20 @@ PyTypeObject PyInt_Type = {
0, /*tp_as_mapping*/
(hashfunc)int_hash, /*tp_hash*/
};
+
+void
+PyInt_Fini()
+{
+#if NSMALLNEGINTS + NSMALLPOSINTS > 0
+ int i;
+ PyIntObject **p;
+
+ i = NSMALLNEGINTS + NSMALLPOSINTS;
+ p = small_ints;
+ while (--i >= 0) {
+ Py_XDECREF(*p);
+ *p++ = NULL;
+ }
+#endif
+ /* XXX Alas, the free list is not easily and safely freeable */
+}
diff --git a/Objects/tupleobject.c b/Objects/tupleobject.c
index 7dc4dc8..0faedb4 100644
--- a/Objects/tupleobject.c
+++ b/Objects/tupleobject.c
@@ -74,7 +74,8 @@ PyTuple_New(size)
#ifdef COUNT_ALLOCS
fast_tuple_allocs++;
#endif
- } else
+ }
+ else
#endif
{
op = (PyTupleObject *) malloc(
@@ -467,3 +468,25 @@ _PyTuple_Resize(pv, newsize, last_is_sticky)
sv->ob_size = newsize;
return 0;
}
+
+void
+PyTuple_Fini()
+{
+#if MAXSAVESIZE > 0
+ int i;
+
+ Py_XDECREF(free_tuples[0]);
+ free_tuples[0] = NULL;
+
+ for (i = 1; i < MAXSAVESIZE; i++) {
+ PyTupleObject *p, *q;
+ p = free_tuples[i];
+ free_tuples[i] = NULL;
+ while (p) {
+ q = p;
+ p = (PyTupleObject *)(p->ob_item[0]);
+ PyMem_DEL(q);
+ }
+ }
+#endif
+}