From fbbd57e4ca4250e27b564d989a75caa0b1a4a9b5 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Tue, 5 Aug 1997 02:16:08 +0000 Subject: Added _Fini() routines to free up some memory --- Objects/floatobject.c | 6 ++++++ Objects/intobject.c | 17 +++++++++++++++++ Objects/tupleobject.c | 25 ++++++++++++++++++++++++- 3 files changed, 47 insertions(+), 1 deletion(-) 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 +} -- cgit v0.12