mirror of
https://github.com/python/cpython.git
synced 2025-07-24 11:44:31 +00:00
Merged revisions 73750 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r73750 | benjamin.peterson | 2009-07-01 19:45:19 -0400 (Wed, 01 Jul 2009) | 1 line small optimization: avoid popping the current block until we have to ........
This commit is contained in:
parent
7b82b40a47
commit
bfc3099f38
1 changed files with 4 additions and 5 deletions
|
@ -2839,19 +2839,18 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
|
|||
|
||||
fast_block_end:
|
||||
while (why != WHY_NOT && f->f_iblock > 0) {
|
||||
PyTryBlock *b = PyFrame_BlockPop(f);
|
||||
/* Peek at the current block. */
|
||||
PyTryBlock *b = &f->f_blockstack[f->f_iblock - 1];
|
||||
|
||||
assert(why != WHY_YIELD);
|
||||
if (b->b_type == SETUP_LOOP && why == WHY_CONTINUE) {
|
||||
/* For a continue inside a try block,
|
||||
don't pop the block for the loop. */
|
||||
PyFrame_BlockSetup(f, b->b_type, b->b_handler,
|
||||
b->b_level);
|
||||
why = WHY_NOT;
|
||||
JUMPTO(PyLong_AS_LONG(retval));
|
||||
Py_DECREF(retval);
|
||||
break;
|
||||
}
|
||||
/* Now we have to pop the block. */
|
||||
f->f_iblock--;
|
||||
|
||||
if (b->b_type == EXCEPT_HANDLER) {
|
||||
UNWIND_EXCEPT_HANDLER(b);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue