On 4/29/05, Brian Sabbey
Jim Jewett wrote:
The only members that need special attention are (f_code, f_lasti) and possibly (f_blockstack, f_iblock).
You don't even need to take care of f_code. The thunk and its surrounding function can share the same code. The thunk gets compiled into the function the same way the body of a for loop would.
This only works if you already know what the thunk's code will be when you compile the function. (Just splicing it in messes up jump targets.)
One also needs to store f_back, and, to avoid exception weirdness, f_exc_XXX.
f_back lists the previous stack frame (which shouldn't change during a thunk[1]), and f_exc_XXX is for the most recent exception -- I don't see any reason to treat thunks differently from loop bodies in that regard. [1] If the thunk calls another function (that needs its own frame), then that is handled the same as any regular function call. -jJ