Dear Attila Sure, nothing is bug free and I really appreciate the effort you put into Rhino. Good to know that there are people already having experience with continuations and serialization - I'm just starting to look into the challenge of adding persistence support to my application. Again, thanks for shedding light on this.
Regards, Thomas "Attila Szegedi" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > > On 2007.11.22., at 18:01, Thomas wrote: > >> Thanks! This explains the strange behavior. >> Anyhow, it should be documented somewhere that the implementation of >> continuations in Rhino is only half done and only works on a language >> subset. I mean, how can a normal user know that. > > He can't and is not expected to. This is clearly a bug, one we didn't > realize was there before. If we did, we wouldn't have documented it, we > would have fixed it. It's true that I immediately figured out what's > wrong with it when you reported the problem, but that doesn't mean I was > consciously aware of this before. I wasn't. > > I have a production system myself that heavily uses continuations, and > you can imagine I did run into a fair amount of problems myself; I'm > fixing them when I can. I.e. there was an issue that capturing a > continuation in a loop and then trying to serialize it bombed because the > loop iterator wasn't serializable. Then we had a similar problem where > capturing a continuation in a catch() block or in a with() block and > trying to serialize it also bombed because - you guessed - the object > used for representing the catch and with scopes wasn't serializable. And > so on. > > We're making things better on the go, as we can afford to spend our spare > time on it. I'm sorry for your inconvenience (and everyone else's who > runs into a Rhino bug), but it's a fact that not everything is always bug > free. > > Attila. > > >> It took me quite a while >> just to find out what causes the problem. Also, why leaving the >> interpreter >> loop at this point? What's so different to a normal function call (other >> than the explicitely defined this object)? >> >> Thanks for your help! >> Cheers, Thomas >> >> "Attila Szegedi" <[EMAIL PROTECTED]> wrote in message >> news:[EMAIL PROTECTED] >> ... >>> Hm... that's indeed a problem. Without looking at the code, I actually >>> have an idea why it doesn't work. Continuations work only within a >>> single >>> invocation of Rhino's stackless interpreter loop. If you call out of >>> the >>> interpreter loop into Java code (which call() and apply() will do), >>> and >>> then back into a new instance of interpreter loop (which an >>> interpreted >>> function will do to run its implementation), a continuation will not >>> work >>> correctly. It can only capture/unwind within the current interpreter >>> loop >>> invocation. >>> >>> It'd be possible to apply a bit of a trickery in interpreter loop to >>> detect when call/apply is invoked for an InterpretedFunction instance, >>> and run it in the current interpreter loop. >>> >>> Attila. >>> >>> -- >>> home: http://www.szegedi.org >>> weblog: http://constc.blogspot.com >>> >>> On 2007.11.22., at 17:03, Thomas wrote: >>> >>>> I'm heavily using continuations and noticed that they don't work >>>> correctly >>>> if my code uses the call() or apply() functions on Function objectes >>>> to >>>> invoke a function. Just wondering if anybody had similar experience? _______________________________________________ dev-tech-js-engine-rhino mailing list [email protected] https://lists.mozilla.org/listinfo/dev-tech-js-engine-rhino
