Stackless Python introduces the concept of a FrameDispatcher. But the interpreter may signal the FrameDispatcher that a new frame has been swapped in, and the new frame should be executed. So Stackless transforms recursions into a loop, but it is not the FrameDispatcher that manages the frames. The general idea is that where C code needs to execute Python code, it creates a frame for the Python code, setting its back pointer to the current frame. Then it swaps in the frame, signals the FrameDispatcher and gets out of the way.
Many situations present another level of difficulty, however.
The map builtin function involves two obstacles to this approach. In order to play well with others, Stackless constructs a frame object for map itself. Stackless does not fix these situations because of amount of code changes required. Instead, Stackless prohibits transfers out of a nested interpreter. Advantages For normal Python, the advantage to this approach is that C stack usage becomes much smaller and more predictable.