cpython/Objects
Guido van Rossum e92e610a9e Christian Tismer -- total rewrite on trashcan code.
Improvements:
- does no longer need any extra memory
- has no relationship to tstate
- works in debug mode
- can easily be modified for free threading (hi Greg:)

Side effects:
Trashcan does change the order of object destruction.
Prevending that would be quite an immense effort, as
my attempts have shown. This version works always
the same, with debug mode or not. The slightly
changed destruction order should therefore be no problem.

Algorithm:
While the old idea of delaying the destruction of some
obejcts at a certain recursion level was kept, we now
no longer aloocate an object to hold these objects.
The delayed objects are instead chained together
via their ob_type field. The type is encoded via
ob_refcnt. When it comes to the destruction of the
chain of waiting objects, the topmost object is popped
off the chain and revived with type and refcount 1,
then it gets a normal Py_DECREF.

I am confident that this solution is near optimum
for minimizing side effects and code bloat.
2000-04-24 15:40:53 +00:00
..
Makefile.in Marc-AAndre Lemburg: add new unicode files 2000-03-10 22:55:40 +00:00
abstract.c Marc-Andre's third try at this bulk patch seems to work (except that 2000-04-05 20:11:21 +00:00
bufferobject.c PyBuffer_New(): Raise ValueError if size is negative (the other 1999-08-04 13:08:19 +00:00
classobject.c Mark Hammond: 2000-04-10 13:03:19 +00:00
cobject.c New CObject from Jim Fulton, adds PyCObject_FromVoidPtrAndDesc() and 1997-10-21 19:48:35 +00:00
complexobject.c Massive patch by Skip Montanaro to add ":name" to as many 2000-02-29 13:59:29 +00:00
dictobject.c Add PyDict_Copy() function to C API for dicts. It returns a new 2000-03-30 22:27:31 +00:00
fileobject.c Checking in the new, improve file.writelines() code. 2000-03-13 16:27:06 +00:00
floatobject.c Marc-Andre's third try at this bulk patch seems to work (except that 2000-04-05 20:11:21 +00:00
frameobject.c Christian Tismer's "trashcan" patch: 2000-03-13 16:01:29 +00:00
funcobject.c Make function objects somewhat mutable -- the members func_code, 1998-05-22 00:55:34 +00:00
intobject.c Marc-Andre's third try at this bulk patch seems to work (except that 2000-04-05 20:11:21 +00:00
listobject.c Christian Tismer's "trashcan" patch: 2000-03-13 16:01:29 +00:00
longobject.c Simple optimization by Christian Tismer, who gives credit to Lenny 2000-04-10 17:31:58 +00:00
methodobject.c The rest of the changes by Trent Mick and Dale Nagata for warning-free 2000-01-20 22:32:56 +00:00
moduleobject.c Patch by Chris Petrilli to display the origin of a module in its 1999-02-15 14:47:16 +00:00
object.c Christian Tismer -- total rewrite on trashcan code. 2000-04-24 15:40:53 +00:00
rangeobject.c Use 'xrange', not 'range', in error messages. Reported by Nathan Sullivan. 1999-01-09 21:40:35 +00:00
sliceobject.c Ellipses -> Ellipsis rename (the dictionary really says that it should 1996-10-11 16:25:41 +00:00
stringobject.c Marc-Andre Lemburg: 2000-04-11 15:39:26 +00:00
tupleobject.c Patch by Charles G Waldman to avoid a sneaky memory leak in 2000-04-21 21:15:05 +00:00
typeobject.c American spelling in doc string. 1997-06-02 14:43:07 +00:00
unicodectype.c Marc-Andre Lemburg: 2000-04-11 15:39:02 +00:00
unicodeobject.c Marc-Andre Lemburg: 2000-04-11 15:38:46 +00:00
xxobject.c Correct typo (Py_MethodDef doesn't exist). Reported by Uwe Zessin. 1999-01-29 14:39:12 +00:00