setNashornGlobal usage

Tobias Schlottke tobias.schlottke at gmail.com
Wed Jul 17 08:37:26 PDT 2013


Hi there,

I've built a small case where I evaluate a compiled script equipped with a custom bindings.
The script is equipped with some variables and and compiled like this:

      engine.put("shopId", "test");
      runner = (Bindings) engine.compile(ad.getCondition_script().getCode()).eval();

afterwards, I execute the "run" method on the object returned by eval() like this:

    return (MyCustomObject) engine.invokeMethod(runner, "run", attr);

the run method does local compilations but does not change anything so basically the runner is immutable.
I access it from various threads.

When profiling the code I see a lot of time spent in java.security.AccessController.doPrivileged() which is invoked in setNashornGlobal() if the globals changed.
I'm a bit unsure what changed globals really mean because in my case nothing (either context nor bindings) changed and I wonder if it is necessary.

Best,

Tobias


More information about the nashorn-dev mailing list