[Patches] [ python-Patches-1145039 ] Remove some invariant conditions and assert in ceval

SourceForge.net noreply at sourceforge.net
Fri May 26 20:41:45 CEST 2006


Patches item #1145039, was opened at 2005-02-20 16:31
Message generated for change (Comment added) made by tim_one
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=1145039&group_id=5470

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: Performance
Group: Python 2.5
Status: Open
>Resolution: Out of Date
Priority: 5
Submitted By: Neal Norwitz (nnorwitz)
Assigned to: Nobody/Anonymous (nobody)
Summary: Remove some invariant conditions and assert in ceval

Initial Comment:
ISTM that if frame->f_exc_type == NULL then exc_value
and exc_traceback will also be NULL.  I didn't see that
this is documented, perhaps I missed it or there is
some case when this can occur.  If it can occur, we
shoul develop a test for it.

Assuming this condition is invariant, some
simplifications can be made in reset_exc_info which is
called once per eval_frame (on function exit).

Also, I think there is currently an extra Py_INCREF on
Py_None.  This occurs when tstate->exc_type == NULL.

This patch seems to have little to no effect on
performance.  I did measure a 0.3% speed improvement.

----------------------------------------------------------------------

>Comment By: Tim Peters (tim_one)
Date: 2006-05-26 14:41

Message:
Logged In: YES 
user_id=31435

Note that the patch is out of date.

I agree the invariant you deduced should hold, but in fact
it doesn't now, at least due to insane initialization
problems in exceptions.c:

http://mail.python.org/pipermail/python-dev/2006-May/065248.html

I'd like to ensure & exploit a stronger invariant:

http://mail.python.org/pipermail/python-dev/2006-May/065231.html

but that's stuck for now.  I put my work in progress on a
new branch:

svn+ssh://svn.python.org/python/branches/tim-exc_sanity

BTW, I don't agree that the incref on Py_None wasn't needed.
 Py_None is getting assigned to two new pointers
(tstate->exc_type and frame->f_exc_type), so should be
incremented twice.

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=1145039&group_id=5470


More information about the Patches mailing list