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

Reply via email to