cpython/Include
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 Added Makefile with clean and clobber targets 1994-01-04 23:24:22 +00:00
Python.h Marc-Andre's third try at this bulk patch seems to work (except that 2000-04-05 20:11:21 +00:00
abstract.h Marc-Andre Lemburg: added declarations for PyObject_AsCharBuffer, 2000-03-10 22:35:06 +00:00
bitset.h New permission notice, includes CNRI. 1996-10-25 14:44:06 +00:00
bufferobject.h Add DL_IMPORT(returntype) for all officially exported functions. 1998-12-04 18:48:25 +00:00
cStringIO.h There's a macro PycString_IMPORT which the documentation listed as 1999-01-25 21:36:13 +00:00
ceval.h Add DLL level b/w compat for PySequence_In and PyEval_CallObject 1999-03-17 18:44:39 +00:00
classobject.h Add DL_IMPORT(returntype) for all officially exported functions. 1998-12-04 18:48:25 +00:00
cobject.h Add DL_IMPORT(returntype) for all officially exported functions. 1998-12-04 18:48:25 +00:00
codecs.h Python Codec Registry and support functions, by Marc-Andre Lemburg. 2000-03-10 22:32:23 +00:00
compile.h Add DL_IMPORT(returntype) for all officially exported functions. 1998-12-04 18:48:25 +00:00
complexobject.h Add DL_IMPORT(returntype) for all officially exported functions. 1998-12-04 18:48:25 +00:00
config.h all: 1994 copyright 1994-01-02 00:11:39 +00:00
dictobject.h Add PyDict_Copy() function to C API for dicts. It returns a new 2000-03-30 22:27:31 +00:00
errcode.h Add E_INDENT -- new error to check for bad indentation 1998-04-09 21:37:20 +00:00
eval.h Add DL_IMPORT(returntype) for all officially exported functions. 1998-12-04 18:48:25 +00:00
fileobject.h Add DL_IMPORT(returntype) for all officially exported functions. 1998-12-04 18:48:25 +00:00
floatobject.h Mainlining the string_methods branch. See branch revision log 1999-10-12 19:54:53 +00:00
frameobject.h Add DL_IMPORT(returntype) for all officially exported functions. 1998-12-04 18:48:25 +00:00
funcobject.h Add DL_IMPORT(returntype) for all officially exported functions. 1998-12-04 18:48:25 +00:00
graminit.h Added assert grammar. 1997-04-02 05:24:08 +00:00
grammar.h Added prototype for PyGrammar_RemoveAccelerators(). 1997-08-12 14:57:08 +00:00
import.h Chris Herborth writes: 1999-01-04 16:39:38 +00:00
intobject.h Marc-Andre's third try at this bulk patch seems to work (except that 2000-04-05 20:11:21 +00:00
intrcheck.h Add DL_IMPORT(returntype) for all officially exported functions. 1998-12-04 18:48:25 +00:00
listobject.h Got rid of silly "123456789-..." lines in comments. 2000-03-01 15:06:53 +00:00
longintrepr.h Add DL_IMPORT(returntype) for all officially exported functions. 1998-12-04 18:48:25 +00:00
longobject.h Marc-Andre's third try at this bulk patch seems to work (except that 2000-04-05 20:11:21 +00:00
marshal.h Add DL_IMPORT(returntype) for all officially exported functions. 1998-12-04 18:48:25 +00:00
metagrammar.h New permission notice, includes CNRI. 1996-10-25 14:44:06 +00:00
methodobject.h Add DL_IMPORT(returntype) for all officially exported functions. 1998-12-04 18:48:25 +00:00
modsupport.h Version updated to 1.6; API version to 1009. 2000-03-29 01:46:45 +00:00
moduleobject.h Add PyModule_GetFilename(). 1999-02-15 14:43:11 +00:00
mymalloc.h Add DL_IMPORT(returntype) for all officially exported functions. 1998-12-04 18:48:25 +00:00
mymath.h Metrowerks PRO4 finally fixes the hypot snafu. (Jack Jansen) 1998-11-02 16:21:39 +00:00
myproto.h Oops, rename2.h was included by some other headers. 1997-05-07 23:50:40 +00:00
myselect.h Jack Jansen: The GUSI 2.0 I/O library (which is used on the Mac) 2000-04-24 15:12:54 +00:00
mytime.h New permission notice, includes CNRI. 1996-10-25 14:44:06 +00:00
node.h Add DL_IMPORT(returntype) for all officially exported functions. 1998-12-04 18:48:25 +00:00
object.h Christian Tismer -- total rewrite on trashcan code. 2000-04-24 15:40:53 +00:00
objimpl.h Got rid of silly "123456789-..." lines in comments. 2000-03-01 15:06:53 +00:00
opcode.h remove reference to CALL_FUNCTION_STAR in comment 2000-03-29 00:10:03 +00:00
osdefs.h Use the proper OS2 test symbol: PYOS_OS2. 1997-12-05 21:39:25 +00:00
parsetok.h Add DL_IMPORT(returntype) for all officially exported functions. 1998-12-04 18:48:25 +00:00
patchlevel.h Bump version to 1.6a2 -- to be released one of these days. 2000-04-06 15:01:30 +00:00
pgenheaders.h Add DL_IMPORT(returntype) for all officially exported functions. 1998-12-04 18:48:25 +00:00
pydebug.h Add DL_IMPORT(returntype) for all officially exported functions. 1998-12-04 18:48:25 +00:00
pyerrors.h Marc-Andre Lemburg: add PyExc_UnicodeError 2000-03-10 22:33:32 +00:00
pyfpe.h Some patches to Lee Busby's fpectl mods that accidentally didn't make it 1997-10-20 23:50:01 +00:00
pystate.h I can't seem to do anything right :-) 1998-12-21 20:21:19 +00:00
pythonrun.h Add DL_IMPORT(returntype) for all officially exported functions. 1998-12-04 18:48:25 +00:00
pythread.h Conform to standard boilerplate. 1999-03-24 19:02:09 +00:00
rangeobject.h Add DL_IMPORT(returntype) for all officially exported functions. 1998-12-04 18:48:25 +00:00
rename1.h __builtins__ mods (and sys_checkinterval for ceval.c) 1995-01-09 17:53:26 +00:00
rename2.h Oops, another forgotten renaming: varobject -> PyVarObject. 1997-05-15 21:31:03 +00:00
sliceobject.h Add DL_IMPORT(returntype) for all officially exported functions. 1998-12-04 18:48:25 +00:00
stringobject.h Add DL_IMPORT(returntype) for all officially exported functions. 1998-12-04 18:48:25 +00:00
structmember.h Add DL_IMPORT(returntype) for all officially exported functions. 1998-12-04 18:48:25 +00:00
sysmodule.h Add DL_IMPORT(returntype) for all officially exported functions. 1998-12-04 18:48:25 +00:00
thread.h Adding thread.h -- unused but for b/w compatibility. 1999-03-22 22:25:39 +00:00
token.h Add DL_IMPORT(returntype) for all officially exported functions. 1998-12-04 18:48:25 +00:00
traceback.h Add DL_IMPORT(returntype) for all officially exported functions. 1998-12-04 18:48:25 +00:00
tupleobject.h Got rid of silly "123456789-..." lines in comments. 2000-03-01 15:06:53 +00:00
unicodeobject.h Marc-Andre Lemburg: 2000-04-11 15:39:46 +00:00