@@ -2808,7 +2808,7 @@ dummy_func(
28082808 start -- ;
28092809 }
28102810 _PyExecutorObject * executor ;
2811- int optimized = _PyOptimizer_Optimize (frame , start , stack_pointer , & executor , 0 );
2811+ int optimized = _PyOptimizer_Optimize (frame , start , & executor , 0 );
28122812 if (optimized <= 0 ) {
28132813 this_instr [1 ].counter = restart_backoff_counter (counter );
28142814 ERROR_IF (optimized < 0 , error );
@@ -5033,7 +5033,7 @@ dummy_func(
50335033 }
50345034 else {
50355035 int chain_depth = current_executor -> vm_data .chain_depth + 1 ;
5036- int optimized = _PyOptimizer_Optimize (frame , target , stack_pointer , & executor , chain_depth );
5036+ int optimized = _PyOptimizer_Optimize (frame , target , & executor , chain_depth );
50375037 if (optimized <= 0 ) {
50385038 exit -> temperature = restart_backoff_counter (temperature );
50395039 if (optimized < 0 ) {
@@ -5134,7 +5134,7 @@ dummy_func(
51345134 exit -> temperature = advance_backoff_counter (exit -> temperature );
51355135 GOTO_TIER_ONE (target );
51365136 }
5137- int optimized = _PyOptimizer_Optimize (frame , target , stack_pointer , & executor , 0 );
5137+ int optimized = _PyOptimizer_Optimize (frame , target , & executor , 0 );
51385138 if (optimized <= 0 ) {
51395139 exit -> temperature = restart_backoff_counter (exit -> temperature );
51405140 if (optimized < 0 ) {
@@ -5242,48 +5242,49 @@ dummy_func(
52425242 goto exception_unwind ;
52435243 }
52445244
5245- label (exception_unwind ) {
5245+ spilled label (exception_unwind ) {
52465246 /* We can't use frame->instr_ptr here, as RERAISE may have set it */
52475247 int offset = INSTR_OFFSET ()- 1 ;
52485248 int level , handler , lasti ;
5249- if (get_exception_handler (_PyFrame_GetCode (frame ), offset , & level , & handler , & lasti ) == 0 ) {
5249+ int handled = get_exception_handler (_PyFrame_GetCode (frame ), offset , & level , & handler , & lasti );
5250+ if (handled == 0 ) {
52505251 // No handlers, so exit.
52515252 assert (_PyErr_Occurred (tstate ));
5252-
52535253 /* Pop remaining stack entries. */
52545254 _PyStackRef * stackbase = _PyFrame_Stackbase (frame );
5255- while (stack_pointer > stackbase ) {
5256- PyStackRef_XCLOSE (POP ());
5255+ while (frame -> stackpointer > stackbase ) {
5256+ _PyStackRef ref = _PyFrame_StackPop (frame );
5257+ PyStackRef_XCLOSE (ref );
52575258 }
5258- assert (STACK_LEVEL () == 0 );
5259- _PyFrame_SetStackPointer (frame , stack_pointer );
52605259 monitor_unwind (tstate , frame , next_instr - 1 );
52615260 goto exit_unwind ;
52625261 }
5263-
52645262 assert (STACK_LEVEL () >= level );
52655263 _PyStackRef * new_top = _PyFrame_Stackbase (frame ) + level ;
5266- while (stack_pointer > new_top ) {
5267- PyStackRef_XCLOSE (POP ());
5264+ assert (frame -> stackpointer >= new_top );
5265+ while (frame -> stackpointer > new_top ) {
5266+ _PyStackRef ref = _PyFrame_StackPop (frame );
5267+ PyStackRef_XCLOSE (ref );
52685268 }
52695269 if (lasti ) {
52705270 int frame_lasti = _PyInterpreterFrame_LASTI (frame );
52715271 PyObject * lasti = PyLong_FromLong (frame_lasti );
52725272 if (lasti == NULL ) {
52735273 goto exception_unwind ;
52745274 }
5275- PUSH ( PyStackRef_FromPyObjectSteal (lasti ));
5275+ _PyFrame_StackPush ( frame , PyStackRef_FromPyObjectSteal (lasti ));
52765276 }
52775277
52785278 /* Make the raw exception data
52795279 available to the handler,
52805280 so a program can emulate the
52815281 Python main loop. */
52825282 PyObject * exc = _PyErr_GetRaisedException (tstate );
5283- PUSH ( PyStackRef_FromPyObjectSteal (exc ));
5283+ _PyFrame_StackPush ( frame , PyStackRef_FromPyObjectSteal (exc ));
52845284 next_instr = _PyFrame_GetBytecode (frame ) + handler ;
52855285
5286- if (monitor_handled (tstate , frame , next_instr , exc ) < 0 ) {
5286+ int err = monitor_handled (tstate , frame , next_instr , exc );
5287+ if (err < 0 ) {
52875288 goto exception_unwind ;
52885289 }
52895290 /* Resume normal execution */
@@ -5292,10 +5293,11 @@ dummy_func(
52925293 lltrace_resume_frame (frame );
52935294 }
52945295#endif
5296+ RELOAD_STACK ();
52955297 DISPATCH ();
52965298 }
52975299
5298- label (exit_unwind ) {
5300+ spilled label (exit_unwind ) {
52995301 assert (_PyErr_Occurred (tstate ));
53005302 _Py_LeaveRecursiveCallPy (tstate );
53015303 assert (frame -> owner != FRAME_OWNED_BY_INTERPRETER );
@@ -5311,16 +5313,16 @@ dummy_func(
53115313 return NULL ;
53125314 }
53135315 next_instr = frame -> instr_ptr ;
5314- stack_pointer = _PyFrame_GetStackPointer ( frame );
5316+ RELOAD_STACK ( );
53155317 goto error ;
53165318 }
53175319
5318- label (start_frame ) {
5319- if (_Py_EnterRecursivePy (tstate )) {
5320+ spilled label (start_frame ) {
5321+ int too_deep = _Py_EnterRecursivePy (tstate );
5322+ if (too_deep ) {
53205323 goto exit_unwind ;
53215324 }
53225325 next_instr = frame -> instr_ptr ;
5323- stack_pointer = _PyFrame_GetStackPointer (frame );
53245326
53255327 #ifdef LLTRACE
53265328 {
@@ -5339,6 +5341,7 @@ dummy_func(
53395341 assert (!_PyErr_Occurred (tstate ));
53405342 #endif
53415343
5344+ RELOAD_STACK ();
53425345 DISPATCH ();
53435346 }
53445347
0 commit comments