@@ -603,6 +603,9 @@ do { \
603
603
assert(SLP_FRAME_EXECUTING_VALUE == f->f_executing); \
604
604
if (frame_func != SLP_FRAME_EXECUTING_VALUE) { \
605
605
f->f_executing = (frame_func); \
606
+ /* check argument: must be an executing frame with retval */ \
607
+ assert (frame_func != SLP_FRAME_EXECUTING_NOVAL ); \
608
+ assert (SLP_FRAME_IS_EXECUTING (f )); \
606
609
} \
607
610
/* keep the reference to the frame to be called. */ \
608
611
f -> f_stacktop = stack_pointer ; \
@@ -622,9 +625,7 @@ do { \
622
625
(retval__ ) = CALL_FRAME_FUNCTION (f2 , 0 , (retval__ )); \
623
626
Py_DECREF (f2 ); \
624
627
if (SLP_PEEK_NEXT_FRAME (tstate ) != f ) { \
625
- assert (SLP_FRAME_IS_EXECUTING (f )); \
626
- if (f -> f_executing == SLP_FRAME_EXECUTING_NOVAL ) \
627
- f -> f_executing = SLP_FRAME_EXECUTING_VALUE ; \
628
+ assert (f -> f_executing == (frame_func )); \
628
629
LLTRACE_HANDLE_UNWINDING (STACKLESS_RETVAL ((tstate ), (retval__ )), "handle_unwinding return from next frame:" );\
629
630
return (retval__ ); \
630
631
} \
@@ -635,12 +636,7 @@ do { \
635
636
if (STACKLESS_UNWINDING (retval__ )) \
636
637
STACKLESS_UNPACK (tstate , (retval__ )); \
637
638
f -> f_stacktop = NULL ; \
638
- if (frame_func != SLP_FRAME_EXECUTING_VALUE ) { \
639
- assert (f -> f_executing == (frame_func )); \
640
- } \
641
- else { \
642
- assert (f -> f_executing == SLP_FRAME_EXECUTING_VALUE || f -> f_executing == SLP_FRAME_EXECUTING_NOVAL ); \
643
- } \
639
+ assert (f -> f_executing == (frame_func )); \
644
640
f -> f_executing = SLP_FRAME_EXECUTING_VALUE ; \
645
641
if (has_opcode ) \
646
642
next_instr += 1 + EXTENDED_ARG_OFFSET (oparg ); \
0 commit comments