Norris -

Thanks for making this happen.

As to the distinction of only making eval.call() work for the global object: 
This occurred because too many script and libraries were depending on this 
behavior - and removing it would cause a serious regression. However taking out 
the eval.call(object, ...) behavior was relatively safe.

I really appreciate this!

--John

----- Original Message -----
From: "Norris Boyd" <[EMAIL PROTECTED]>
To: [email protected]
Sent: Friday, July 4, 2008 2:50:58 PM GMT -05:00 US/Canada Eastern
Subject: Re: Pure-JavaScript Global eval()

On Jul 4, 2:17 pm, Norris Boyd <[EMAIL PROTECTED]> wrote:
> On Jul 2, 1:53 pm, [EMAIL PROTECTED] wrote:
>
>
>
> > On Jul 2, 10:05 am, Attila Szegedi <[EMAIL PROTECTED]> wrote:
>
> > > > So what do we do in this case? It seems like we could extend Rhino to
> > > > handle eval.call specially, much like eval is handled specially. That
> > > > seems like a reasonable approach; would it solve your problem?
>
> > > Don't want to speak in John's name, but I think it would. eval.call
> > > and eval.apply would help him achieve what he wanted, and we could
> > > still keep the optimization. It's aliasing the eval that'd make the
> > > optimization impossible...
>
> > > Attila.
>
> > We have a bug report (in the HtmlUnit project) where someone is
> > complaining about not being able to alias eval (because all of the
> > native browsers allow this). So for us, this partial fix wouldn't
> > work. Any chance we can allow eval aliasing in interpreted mode
> > (possibly subject to some FEATURE_XXX config)?
>
> I tried this on a recent SpiderMonkey build:
>
> js> eval.call(this, "var x = 3;")
> js> x
> 3
> js> var obj = {}
> js> eval.call(obj, "var x = 7")
> typein:6: EvalError: function eval must be called directly, and not by
> way of a
> function of another name
> js> function f() {
>       eval.call(this, "var x = 8")}
>
> js> f()
> js> x
> 8
>
> So eval.call appears only to work on the global scope. Seems like an
> odd distinction. This would work for John's case, but not for the more
> general HtmlUnit case (although I get similar behavior in Firefox 3 as
> you'd expect, so perhaps it's not an issue for HtmlUnit).
>
> --N

I submitted a change to allow indirect calls to eval as long as the
execution scope is the global scope. A build is available at
ftp://ftp.mozilla.org/pub/mozilla.org/js/rhino1_7R2pre.zip.

--N
_______________________________________________
dev-tech-js-engine-rhino mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-js-engine-rhino
_______________________________________________
dev-tech-js-engine-rhino mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-js-engine-rhino

Reply via email to