Are you determined to do this with a single thread? I had good results implementing a fiber API in with v8 where I used a separate pthread for each fiber. I assume that you could support continuations that way too.
On Sat, Sep 11, 2010 at 21:29, Michael Carter <[email protected]>wrote: > Hello, > > I have been trying to implement coroutines in v8 based on Gary Hai's > work, js-coroutine ( http://code.google.com/p/js-coroutine/ ) which > uses libpcl to provide the coroutine support. This method seems to > work very well but for exceptions which cause segfaults. > > I took a look at how exception handling is implemented in v8, and as > far as I can tell there is basically a stack of TryCatch objects > attached to a per-thread singleton. I believe this causes a problem > when more than one coroutine yields/enters a try/catch block within > the same thread. > > For instance, consider coro1 which enters a try/catch block, then > yields to coro2 which subsequently enters a try/catch block and yields > back to coro1. Now, when an error is thrown in coro1, I believe that > it's the coro2 try/catch that actually is used to handle the error. > > Incidentally, the Error constructor also seems to cause a segfault in > this instance. Perhaps it is related, but I haven't really > investigated that. > > I am not particularly familiar with the v8 code base, but I want to > learn enough to solve this problem. I am incredibly excited about the > prospect of true coroutines in the JavaScript, and I feel like it's > really close. Any pointers or advice would be very helpful. > > Thanks! > > Michael Carter > > -- > v8-users mailing list > [email protected] > http://groups.google.com/group/v8-users > -- v8-users mailing list [email protected] http://groups.google.com/group/v8-users
