void QScriptStaticScopeObject::put(JSC::ExecState* exec, const JSC::Identifier& propertyName, JSC::JSValue value, JSC::PutPropertySlot&) { if (symbolTablePut(propertyName, value)) return; Q_ASSERT(d_ptr()->canGrow); addSymbolTableProperty(propertyName, value, /*attributes=*/0); }
void JSStaticScopeObject::put(ExecState*, const Identifier& propertyName, JSValue* value, PutPropertySlot&) { if (symbolTablePut(propertyName, value)) return; ASSERT_NOT_REACHED(); }
void JSGlobalObject::put(ExecState* exec, const Identifier& propertyName, JSValue value, PutPropertySlot& slot) { ASSERT(!Heap::heap(value) || Heap::heap(value) == Heap::heap(this)); if (symbolTablePut(propertyName, value)) return; JSVariableObject::put(exec, propertyName, value, slot); }
void JSGlobalObject::put(JSCell* cell, ExecState* exec, PropertyName propertyName, JSValue value, PutPropertySlot& slot) { JSGlobalObject* thisObject = jsCast<JSGlobalObject*>(cell); ASSERT(!Heap::heap(value) || Heap::heap(value) == Heap::heap(thisObject)); if (symbolTablePut(thisObject, exec, propertyName, value, slot.isStrictMode())) return; Base::put(thisObject, exec, propertyName, value, slot); }
void JSActivation::put(ExecState*, const Identifier& propertyName, JSValue* value) { if (symbolTablePut(propertyName, value)) return; // We don't call through to JSObject because __proto__ and getter/setter // properties are non-standard extensions that other implementations do not // expose in the activation object. ASSERT(!m_propertyMap.hasGetterSetterProperties()); m_propertyMap.put(propertyName, value, 0, true); }
void JSActivation::put(ExecState*, const Identifier& propertyName, JSValue value, PutPropertySlot& slot) { ASSERT(!Heap::heap(value) || Heap::heap(value) == Heap::heap(this)); if (symbolTablePut(propertyName, value)) return; // We don't call through to JSObject because __proto__ and getter/setter // properties are non-standard extensions that other implementations do not // expose in the activation object. ASSERT(!hasGetterSetterProperties()); putDirect(propertyName, value, 0, true, slot); }
void JSNameScope::put(JSCell* cell, ExecState* exec, PropertyName propertyName, JSValue value, PutPropertySlot& slot) { JSNameScope* thisObject = jsCast<JSNameScope*>(cell); if (slot.isStrictMode()) { // Double lookup in strict mode, but this only occurs when // a) indirectly writing to an exception slot // b) writing to a function expression name // (a) is unlikely, and (b) is an error. // Also with a single entry the symbol table lookup should simply be // a pointer compare. PropertySlot slot; bool isWritable = true; symbolTableGet(thisObject, propertyName, slot, isWritable); if (!isWritable) { throwError(exec, createTypeError(exec, StrictModeReadonlyPropertyWriteError)); return; } } if (symbolTablePut(thisObject, exec, propertyName, value, slot.isStrictMode())) return; RELEASE_ASSERT_NOT_REACHED(); }