Skip to content

Commit 5b13d12

Browse files
committed
Don't RESUME after throw
1 parent cdf7fc4 commit 5b13d12

File tree

3 files changed

+10
-14
lines changed

3 files changed

+10
-14
lines changed

Lib/test/test_dis.py

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -508,29 +508,26 @@ async def _asyncwith(c):
508508
RETURN_VALUE
509509
510510
%3d >> THROW_BACKWARD 23 (to 114)
511-
RESUME 3
512-
JUMP_BACKWARD_NO_INTERRUPT 28 (to 16)
513-
>> THROW_BACKWARD 9 (to 92)
514-
RESUME 3
515-
JUMP_BACKWARD_NO_INTERRUPT 14 (to 50)
511+
JUMP_BACKWARD_NO_INTERRUPT 27 (to 16)
512+
>> THROW_BACKWARD 8 (to 88)
513+
JUMP_BACKWARD_NO_INTERRUPT 12 (to 50)
516514
>> PUSH_EXC_INFO
517515
WITH_EXCEPT_START
518516
GET_AWAITABLE 2
519517
LOAD_CONST 0 (None)
520-
>> SEND 6 (to 100)
518+
>> SEND 5 (to 94)
521519
>> YIELD_VALUE 6
522520
RESUME 3
523-
>> JUMP_BACKWARD_NO_INTERRUPT 4 (to 86)
524-
>> THROW_FORWARD 2 (to 100)
525-
RESUME 3
526-
JUMP_BACKWARD_NO_INTERRUPT 6 (to 88)
527-
>> POP_JUMP_FORWARD_IF_TRUE 1 (to 104)
521+
>> JUMP_BACKWARD_NO_INTERRUPT 4 (to 82)
522+
>> THROW_FORWARD 1 (to 94)
523+
JUMP_BACKWARD_NO_INTERRUPT 5 (to 84)
524+
>> POP_JUMP_FORWARD_IF_TRUE 1 (to 98)
528525
RERAISE 2
529526
>> POP_TOP
530527
POP_EXCEPT
531528
POP_TOP
532529
POP_TOP
533-
JUMP_BACKWARD 28 (to 58)
530+
JUMP_BACKWARD 25 (to 58)
534531
>> COPY 3
535532
POP_EXCEPT
536533
RERAISE 1

Python/ceval.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2671,7 +2671,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, _PyInterpreterFrame *frame, int
26712671
if (found < 0) {
26722672
if (PyErr_GivenExceptionMatches(exc_value, PyExc_GeneratorExit))
26732673
{
2674-
PyErr_Clear();
2674+
_PyErr_Clear(tstate);
26752675
_PyErr_Restore(tstate, exc_type, exc_value, exc_traceback);
26762676
}
26772677
goto exception_unwind;

Python/compile.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1984,7 +1984,6 @@ compiler_add_yield_from(struct compiler *c, int await)
19841984

19851985
USE_LABEL(c, thrown);
19861986
ADDOP_JUMP(c, THROW, stop);
1987-
ADDOP_I(c, RESUME, await ? 3 : 2);
19881987
ADDOP_JUMP(c, JUMP_NO_INTERRUPT, yield);
19891988

19901989
USE_LABEL(c, stop);

0 commit comments

Comments
 (0)