src/jdk/nashorn/api/scripting/NashornScriptEngine.java
Print this page
@@ -319,12 +319,13 @@
}
private ScriptObject getNashornGlobalFrom(final ScriptContext ctxt) {
final Bindings bindings = ctxt.getBindings(ScriptContext.ENGINE_SCOPE);
if (bindings instanceof ScriptObjectMirror) {
+ final ScriptObjectMirror mirror = (ScriptObjectMirror)bindings;
ScriptObject sobj = ((ScriptObjectMirror)bindings).getScriptObject();
- if (sobj instanceof GlobalObject) {
+ if (sobj instanceof GlobalObject && sobj.isOfContext(nashornContext)) {
return sobj;
}
}
// didn't find global object from context given - return the engine-wide global
@@ -400,13 +401,15 @@
Object args = ScriptObjectMirror.unwrap(ctxt.getAttribute("arguments"), ctxtGlobal);
if (args == null || args == UNDEFINED) {
args = ScriptRuntime.EMPTY_ARRAY;
}
// if no arguments passed, expose it
+ if (! (args instanceof ScriptObject)) {
args = ((GlobalObject)ctxtGlobal).wrapAsObject(args);
ctxtGlobal.set("arguments", args, false);
}
+ }
private Object invokeImpl(final Object selfObject, final String name, final Object... args) throws ScriptException, NoSuchMethodException {
name.getClass(); // null check
ScriptObjectMirror selfMirror = null;