[Python-Dev] Memory management in the AST parser & compiler

Neal Norwitz nnorwitz at gmail.com
Tue Nov 29 19:29:07 CET 2005


On 11/29/05, Nick Coghlan <ncoghlan at gmail.com> wrote:
>> When working on the CST->AST parser, there were only a few things I found to
> be seriously painful about the memory management:
>> 1. Remembering which free_* variant to call for AST nodes
> 2. Remembering which asdl_seq_*_free variant to call for ASDL sequences (it
> was worse when the variant I wanted didn't exist, since this was done with
> functions rather than preprocessor macros)
> 3. Remembering to transpose free_* and *_free between freeing a single node
> and freeing a sequence.
> 4. Remembering whether or not a given cleanup function could cope with
> NULL's or not
> 5. The fact that there wasn't a consistent "goto error" exception-alike
> mechanism in use
>> (I had a Spanish Inquisition-esque experience writing that list ;)

:-) I agree all those are existing issues. #3 could be easily fixed.
 #4 I think all cleanup functions can deal with NULLs now. #5
probably ought to be fixed in favor of using gotos.
> Simply switching to PyObjects would solve the first four problems: everything
> becomes a Py_XDECREF.

I'm mostly convinced that using PyObjects would be a good thing. 
However, making the change isn't free as all the types need to be
created and this is likely quite a bit of code. I'd like to hear what
Jeremy thinks about this.
Is anyone interested in creating a patch along these lines (even a
partial patch) to see the benefits?
n


More information about the Python-Dev mailing list

AltStyle によって変換されたページ (->オリジナル) /