[Python-Dev] Re: tp_clear return value (original) (raw)
Tim Peters tim_one@email.msn.com
Thu, 10 Apr 2003 01:03:42 -0400
- Previous message: [Python-Dev] Re: tp_clear return value
- Next message: [Python-Dev] Re: tp_clear return value
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
[Neil Schemenauer]
Could the visit procedure keep track of errors?
[Martin v. L�wis]
No. For getreferrers (as Tim explains), it might be acceptable but less efficient (since traversal should stop when a the object is found to be a referrer). For getreferents, an error in the callback should really abort traversal as the system just went out of memory.
Still, I expect both could be handled by setjmp in the gc module get_ref* driver functions and longjmp (as needed) in the gc module visitor functions. IOW, the tp_traverse slot functions don't really need to cooperate, or even know anything about "early returns".
Why this may be more than just idly interesting: the tp_traverse functions are called a lot by gc. The get_ref* functions are never called except when explicitly asked for, and their speed just doesn't matter. Burdening them with funky control flow would be a real win if eliminating almost-always-useless test/branch constructs in often-called tp_traverse slots sped the latter.
- Previous message: [Python-Dev] Re: tp_clear return value
- Next message: [Python-Dev] Re: tp_clear return value
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]