private ScriptObject globalFromMirror(final ScriptObjectMirror mirror) { ScriptObject sobj = mirror.getScriptObject(); if (sobj instanceof GlobalObject && isOfContext(sobj, nashornContext)) { return sobj; } return null; }
private void setContextVariables(final ScriptObject ctxtGlobal, final ScriptContext ctxt) { // set "context" global variable via contextProperty - because this // property is non-writable contextProperty.setObjectValue(ctxtGlobal, ctxtGlobal, ctxt, false); 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); } }
@Override public GuardedInvocation getGuardedInvocation(final LinkRequest origRequest, final LinkerServices linkerServices) throws Exception { final LinkRequest request = origRequest.withoutRuntimeContext(); // Nashorn has no runtime context final Object self = request.getReceiver(); final GlobalObject global = (GlobalObject) Context.getGlobal(); final NashornCallSiteDescriptor desc = (NashornCallSiteDescriptor) request.getCallSiteDescriptor(); return Bootstrap.asType(global.primitiveLookup(request, self), linkerServices, desc); }
@Override public PropertyDescriptor getDescriptor(final GlobalObject global, final int index) { return global.newDataDescriptor(getObject(index), false, true, false); }
@Override public PropertyDescriptor getDescriptor(final GlobalObject global, final int index) { return global.newDataDescriptor(getObject(index), false, true, true); }
/** * Returns property descriptor for element at a given index * * @param global the global object * @param index the index * * @return property descriptor for element */ public PropertyDescriptor getDescriptor(final GlobalObject global, final int index) { return global.newDataDescriptor(getObject(index), true, true, true); }