Ok with a parent scope scripts don't run at all so they need that state. So that makes compiled scripts not shareable over multiply instances Because i can't set it to null and i cant set it constantly to something else because they could use concurrently
thats a shame because on a server you need to run it in interpreted, none optimized mode. Dont know if that is really a performance penalty nowadays johan On Wed, Dec 10, 2008 at 15:15, Johan Compagner <[EMAIL PROTECTED]> wrote: > hmm > > i now checked a compiled script what kind of properties it have. > First problem that i see is that it has a parentScopeObject that is the > scope that it used to compile against > Problem is that that is a scope really specific to one client. > > So it really shouldnt hold on to that one. I can try to set that one to > null i guess. > > besides that it also has the prototype object. And that prototype object > doesnt have really stuff from our own code > But it does have NativeObject that i guess is created when calling > initStandardObject() because i see that that one has for example the > ClassCache property > > also it has some internal variables like: _dcp, _id, _re i really hope > those are not used when executing the function.. > > So i am currently not really convinced that it is really thread save > (concurrent access or sharing of state) > > johan > > > > On Tue, Dec 9, 2008 at 10:55, Attila Szegedi <[EMAIL PROTECTED]> wrote: > >> Script objects are stateless, they only represent a compiled form of the >> JS program. They can safely be shared between threads, and executed >> concurrently. Indeed, you'd probably be better off caching them, as there's >> one Java class being generted per JS function. >> >> Scopes - objects created through cx.initStandardObject() are stateful >> though, you'll need one for each Script.execute() invocation. >> >> Attila. >> >> -- >> home: http://www.szegedi.org >> twitter: http://twitter.com/szegedi >> weblog: http://constc.blogspot.com >> >> >> On 2008.12.09., at 10:26, Johan Compagner wrote: >> >> Hi, >>> >>> We use rhino also on the server and every http session has its own script >>> engine (cx.initStandardObjects(null)) >>> >>> But we notice when we have let the scripts compile >>> (cx.setOptimizationLevel(9)) for very client/http sesssion that we are >>> running out of perm space >>> because of the many classes generated (and maybe not cleared fast enough >>> or >>> hold on to at some point) >>> >>> now i could build that the compile takes place and caches our scripts >>> once >>> for every client/session. >>> But then a (compiled) script can run concurrently with others, so my >>> question is does a script has internal state like a stack pointer or >>> other >>> data? >>> So that this cant really be done? >>> >>> johan >>> >> >> >> >> >> > _______________________________________________ dev-tech-js-engine-rhino mailing list [email protected] https://lists.mozilla.org/listinfo/dev-tech-js-engine-rhino
