@@ -2383,24 +2383,19 @@ compiler_async_for(struct compiler *c, stmt_ty s)
23832383 ADDOP (c , DUP_TOP );
23842384 ADDOP_O (c , LOAD_GLOBAL , stop_aiter_error , names );
23852385 ADDOP_I (c , COMPARE_OP , PyCmp_EXC_MATCH );
2386- ADDOP_JABS (c , POP_JUMP_IF_FALSE , try_cleanup );
2387-
2388- ADDOP (c , POP_TOP );
2389- ADDOP (c , POP_TOP );
2390- ADDOP (c , POP_TOP );
2391- ADDOP (c , POP_EXCEPT ); /* for SETUP_EXCEPT */
2392- ADDOP (c , POP_TOP ); /* for correct calculation of stack effect */
2393- ADDOP (c , POP_BLOCK ); /* for SETUP_LOOP */
2394- ADDOP_JABS (c , JUMP_ABSOLUTE , after_loop_else );
2395-
2396-
2397- compiler_use_next_block (c , try_cleanup );
2386+ ADDOP_JABS (c , POP_JUMP_IF_TRUE , try_cleanup );
23982387 ADDOP (c , END_FINALLY );
23992388
24002389 compiler_use_next_block (c , after_try );
24012390 VISIT_SEQ (c , stmt , s -> v .AsyncFor .body );
24022391 ADDOP_JABS (c , JUMP_ABSOLUTE , try );
24032392
2393+ compiler_use_next_block (c , try_cleanup );
2394+ ADDOP (c , POP_TOP );
2395+ ADDOP (c , POP_TOP );
2396+ ADDOP (c , POP_TOP );
2397+ ADDOP (c , POP_EXCEPT ); /* for SETUP_EXCEPT */
2398+ ADDOP (c , POP_TOP ); /* for correct calculation of stack effect */
24042399 ADDOP (c , POP_BLOCK ); /* for SETUP_LOOP */
24052400 compiler_pop_fblock (c , LOOP , try );
24062401
@@ -3890,7 +3885,7 @@ compiler_async_comprehension_generator(struct compiler *c,
38903885 _Py_IDENTIFIER (StopAsyncIteration );
38913886
38923887 comprehension_ty gen ;
3893- basicblock * anchor , * if_cleanup , * try ,
3888+ basicblock * if_cleanup , * try ,
38943889 * after_try , * except , * try_cleanup ;
38953890 Py_ssize_t i , n ;
38963891
@@ -3901,12 +3896,11 @@ compiler_async_comprehension_generator(struct compiler *c,
39013896
39023897 try = compiler_new_block (c );
39033898 after_try = compiler_new_block (c );
3904- try_cleanup = compiler_new_block (c );
39053899 except = compiler_new_block (c );
39063900 if_cleanup = compiler_new_block (c );
3907- anchor = compiler_new_block (c );
3901+ try_cleanup = compiler_new_block (c );
39083902
3909- if (if_cleanup == NULL || anchor == NULL ||
3903+ if (if_cleanup == NULL ||
39103904 try == NULL || after_try == NULL ||
39113905 except == NULL || try_cleanup == NULL ) {
39123906 return 0 ;
@@ -3945,16 +3939,7 @@ compiler_async_comprehension_generator(struct compiler *c,
39453939 ADDOP (c , DUP_TOP );
39463940 ADDOP_O (c , LOAD_GLOBAL , stop_aiter_error , names );
39473941 ADDOP_I (c , COMPARE_OP , PyCmp_EXC_MATCH );
3948- ADDOP_JABS (c , POP_JUMP_IF_FALSE , try_cleanup );
3949-
3950- ADDOP (c , POP_TOP );
3951- ADDOP (c , POP_TOP );
3952- ADDOP (c , POP_TOP );
3953- ADDOP (c , POP_EXCEPT ); /* for SETUP_EXCEPT */
3954- ADDOP_JABS (c , JUMP_ABSOLUTE , anchor );
3955-
3956-
3957- compiler_use_next_block (c , try_cleanup );
3942+ ADDOP_JABS (c , POP_JUMP_IF_TRUE , try_cleanup );
39583943 ADDOP (c , END_FINALLY );
39593944
39603945 compiler_use_next_block (c , after_try );
@@ -4003,7 +3988,12 @@ compiler_async_comprehension_generator(struct compiler *c,
40033988 }
40043989 compiler_use_next_block (c , if_cleanup );
40053990 ADDOP_JABS (c , JUMP_ABSOLUTE , try );
4006- compiler_use_next_block (c , anchor );
3991+
3992+ compiler_use_next_block (c , try_cleanup );
3993+ ADDOP (c , POP_TOP );
3994+ ADDOP (c , POP_TOP );
3995+ ADDOP (c , POP_TOP );
3996+ ADDOP (c , POP_EXCEPT ); /* for SETUP_EXCEPT */
40073997 ADDOP (c , POP_TOP );
40083998
40093999 return 1 ;
0 commit comments