Here are the key boundaries: * outside `_PyEval_EvalFrameDefault()` * between start of `_PyEval_EvalFrameDefault()` and top of loop (setting up) * between top of loop and dispatch * handling an opcode * between dispatch and bottom of loop * between bottom of loop and returning (cleaning up)