On Thu, Dec 9, 2010 at 1:46 AM, Stefan Behnel <[email protected]> wrote: > Vitja Makarov, 08.12.2010 22:45: >> Please review this patch. It's not yet finished, and mostly doesn't work. >> But you can take a look at patch and generated code. > > *Way* cool, thanks! I'll take a close look ASAP. Please feel free to send > in a new patch when you have it. If you use hg, you can use "hg bundle" to > collect commit series. Don't know about git. > > BTW, why not set up a github branch for this?
That's exactly what I was thinking. It'll make it easier to review as well, and for others to contribute without disturbing the main line. >> - Temps are saved/restored/allocated inside YieldExprNode using >> helper ClosureTempAllocator >> - PyxGenerator methods are defined via declare_var > > Should we call that "CyGenerator" ? :) > > >> - Send, __next__(), __iter__() are implemented while close(), throw() >> aren't >> - YieldExprNode doesn't handle exceptions > > Ok, sure, that's why close() and throw() don't work yet. I think that's > fine for now. The first three are the most interesting ones. However, > adding exception support shouldn't be hard at all, AFAICT, but they may > benefit from a cdef function for the generator body in order to properly > pass in the exception propagation trigger. > > >> - I don't know how to make refnanny work, should refnanny context be >> stored in closure? > > Good call. That's a tricky question. > > What about generating a GIVEREF for every Python temp you store in the > closure, a GOTREF for everything you take back out, and finish/restart the > refnanny context around the yield? That's what I would do as well. - Robert _______________________________________________ Cython-dev mailing list [email protected] http://codespeak.net/mailman/listinfo/cython-dev
