@@ -506,6 +506,7 @@ dummy_func(
506506new_frame -> localsplus [0 ]= container ;
507507new_frame -> localsplus [1 ]= sub ;
508508JUMPBY (INLINE_CACHE_ENTRIES_BINARY_SUBSCR );
509+ frame -> return_offset = 0 ;
509510DISPATCH_INLINED (new_frame );
510511 }
511512
@@ -637,6 +638,7 @@ dummy_func(
637638_PyInterpreterFrame * dying = frame ;
638639frame = cframe .current_frame = dying -> previous ;
639640_PyEvalFrameClearAndPop (tstate ,dying );
641+ frame -> prev_instr += frame -> return_offset ;
640642_PyFrame_StackPush (frame ,retval );
641643 gotoresume_frame ;
642644 }
@@ -655,6 +657,7 @@ dummy_func(
655657_PyInterpreterFrame * dying = frame ;
656658frame = cframe .current_frame = dying -> previous ;
657659_PyEvalFrameClearAndPop (tstate ,dying );
660+ frame -> prev_instr += frame -> return_offset ;
658661_PyFrame_StackPush (frame ,retval );
659662 gotoresume_frame ;
660663 }
@@ -670,6 +673,7 @@ dummy_func(
670673_PyInterpreterFrame * dying = frame ;
671674frame = cframe .current_frame = dying -> previous ;
672675_PyEvalFrameClearAndPop (tstate ,dying );
676+ frame -> prev_instr += frame -> return_offset ;
673677_PyFrame_StackPush (frame ,retval );
674678 gotoresume_frame ;
675679 }
@@ -689,6 +693,7 @@ dummy_func(
689693_PyInterpreterFrame * dying = frame ;
690694frame = cframe .current_frame = dying -> previous ;
691695_PyEvalFrameClearAndPop (tstate ,dying );
696+ frame -> prev_instr += frame -> return_offset ;
692697_PyFrame_StackPush (frame ,retval );
693698 gotoresume_frame ;
694699 }
@@ -823,13 +828,13 @@ dummy_func(
823828 {
824829PyGenObject * gen = (PyGenObject * )receiver ;
825830_PyInterpreterFrame * gen_frame = (_PyInterpreterFrame * )gen -> gi_iframe ;
826- frame -> yield_offset = oparg ;
831+ frame -> return_offset = oparg ;
827832STACK_SHRINK (1 );
828833_PyFrame_StackPush (gen_frame ,v );
829834gen -> gi_frame_state = FRAME_EXECUTING ;
830835gen -> gi_exc_state .previous_item = tstate -> exc_info ;
831836tstate -> exc_info = & gen -> gi_exc_state ;
832- JUMPBY (INLINE_CACHE_ENTRIES_SEND + oparg );
837+ JUMPBY (INLINE_CACHE_ENTRIES_SEND );
833838DISPATCH_INLINED (gen_frame );
834839 }
835840if (Py_IsNone (v )&& PyIter_Check (receiver )) {
@@ -861,13 +866,13 @@ dummy_func(
861866DEOPT_IF (gen -> gi_frame_state >=FRAME_EXECUTING ,SEND );
862867STAT_INC (SEND ,hit );
863868_PyInterpreterFrame * gen_frame = (_PyInterpreterFrame * )gen -> gi_iframe ;
864- frame -> yield_offset = oparg ;
869+ frame -> return_offset = oparg ;
865870STACK_SHRINK (1 );
866871_PyFrame_StackPush (gen_frame ,v );
867872gen -> gi_frame_state = FRAME_EXECUTING ;
868873gen -> gi_exc_state .previous_item = tstate -> exc_info ;
869874tstate -> exc_info = & gen -> gi_exc_state ;
870- JUMPBY (INLINE_CACHE_ENTRIES_SEND + oparg );
875+ JUMPBY (INLINE_CACHE_ENTRIES_SEND );
871876DISPATCH_INLINED (gen_frame );
872877 }
873878
@@ -886,7 +891,6 @@ dummy_func(
886891_PyInterpreterFrame * gen_frame = frame ;
887892frame = cframe .current_frame = frame -> previous ;
888893gen_frame -> previous = NULL ;
889- frame -> prev_instr -= frame -> yield_offset ;
890894_PyFrame_StackPush (frame ,retval );
891895 gotoresume_frame ;
892896 }
@@ -905,7 +909,6 @@ dummy_func(
905909_PyInterpreterFrame * gen_frame = frame ;
906910frame = cframe .current_frame = frame -> previous ;
907911gen_frame -> previous = NULL ;
908- frame -> prev_instr -= frame -> yield_offset ;
909912_PyFrame_StackPush (frame ,retval );
910913 gotoresume_frame ;
911914 }
@@ -1724,6 +1727,7 @@ dummy_func(
17241727STACK_SHRINK (shrink_stack );
17251728new_frame -> localsplus [0 ]= owner ;
17261729JUMPBY (INLINE_CACHE_ENTRIES_LOAD_ATTR );
1730+ frame -> return_offset = 0 ;
17271731DISPATCH_INLINED (new_frame );
17281732 }
17291733
@@ -1751,6 +1755,7 @@ dummy_func(
17511755new_frame -> localsplus [0 ]= owner ;
17521756new_frame -> localsplus [1 ]= Py_NewRef (name );
17531757JUMPBY (INLINE_CACHE_ENTRIES_LOAD_ATTR );
1758+ frame -> return_offset = 0 ;
17541759DISPATCH_INLINED (new_frame );
17551760 }
17561761
@@ -2259,14 +2264,14 @@ dummy_func(
22592264DEOPT_IF (gen -> gi_frame_state >=FRAME_EXECUTING ,FOR_ITER );
22602265STAT_INC (FOR_ITER ,hit );
22612266_PyInterpreterFrame * gen_frame = (_PyInterpreterFrame * )gen -> gi_iframe ;
2262- frame -> yield_offset = oparg ;
2267+ frame -> return_offset = oparg ;
22632268_PyFrame_StackPush (gen_frame ,Py_NewRef (Py_None ));
22642269gen -> gi_frame_state = FRAME_EXECUTING ;
22652270gen -> gi_exc_state .previous_item = tstate -> exc_info ;
22662271tstate -> exc_info = & gen -> gi_exc_state ;
2267- JUMPBY (INLINE_CACHE_ENTRIES_FOR_ITER + oparg );
2268- assert (next_instr -> op .code == END_FOR ||
2269- next_instr -> op .code == INSTRUMENTED_END_FOR );
2272+ JUMPBY (INLINE_CACHE_ENTRIES_FOR_ITER );
2273+ assert (next_instr [ oparg ]. op .code == END_FOR ||
2274+ next_instr [ oparg ]. op .code == INSTRUMENTED_END_FOR );
22702275DISPATCH_INLINED (gen_frame );
22712276 }
22722277
@@ -2521,6 +2526,7 @@ dummy_func(
25212526 gotoerror ;
25222527 }
25232528JUMPBY (INLINE_CACHE_ENTRIES_CALL );
2529+ frame -> return_offset = 0 ;
25242530DISPATCH_INLINED (new_frame );
25252531 }
25262532/* Callable is not a normal Python function */
@@ -2594,6 +2600,7 @@ dummy_func(
25942600// Manipulate stack directly since we leave using DISPATCH_INLINED().
25952601STACK_SHRINK (oparg + 2 );
25962602JUMPBY (INLINE_CACHE_ENTRIES_CALL );
2603+ frame -> return_offset = 0 ;
25972604DISPATCH_INLINED (new_frame );
25982605 }
25992606
@@ -2631,6 +2638,7 @@ dummy_func(
26312638// Manipulate stack and cache directly since we leave using DISPATCH_INLINED().
26322639STACK_SHRINK (oparg + 2 );
26332640JUMPBY (INLINE_CACHE_ENTRIES_CALL );
2641+ frame -> return_offset = 0 ;
26342642DISPATCH_INLINED (new_frame );
26352643 }
26362644