]> granicus.if.org Git - python/commit
SF patch #578297:
authorAndrew MacIntyre <andymac@bullseye.apana.org.au>
Sun, 4 Aug 2002 06:28:21 +0000 (06:28 +0000)
committerAndrew MacIntyre <andymac@bullseye.apana.org.au>
Sun, 4 Aug 2002 06:28:21 +0000 (06:28 +0000)
commit80d4e2acf58433fb2e84ee55d183a7995dc44d0e
treee4c33fd6d334c9f5bf5fd5260249fd650202c445
parent4104db39b8c8a85b884bbba051d21b7ea1d21ee1
SF patch #578297:

Change the parser and compiler to use PyMalloc.

Only the files implementing processes that will request memory
allocations small enough for PyMalloc to be a win have been
changed, which are:-
 - Python/compile.c
 - Parser/acceler.c
 - Parser/node.c
 - Parser/parsetok.c

This augments the aggressive overallocation strategy implemented by
Tim Peters in PyNode_AddChild() [Parser/node.c], in reducing the
impact of platform malloc()/realloc()/free() corner case behaviour.
Such corner cases are known to be triggered by test_longexp and
test_import.

Jeremy Hylton, in accepting this patch, recommended this as a
bugfix candidate for 2.2.  While the changes to Python/compile.c
and Parser/node.c backport easily (and could go in), the changes
to Parser/acceler.c and Parser/parsetok.c require other not
insignificant changes as a result of the differences in the memory
APIs between 2.3 and 2.2, which I'm not in a position to work
through at the moment.  This is a pity, as the Parser/parsetok.c
changes are the most important after the Parser/node.c changes, due
to the size of the memory requests involved and their frequency.
Parser/acceler.c
Parser/node.c
Parser/parsetok.c
Python/compile.c