bool JSArrayBufferView::put( JSCell* cell, ExecState* exec, PropertyName propertyName, JSValue value, PutPropertySlot& slot) { JSArrayBufferView* thisObject = jsCast<JSArrayBufferView*>(cell); if (UNLIKELY(isThisValueAltered(slot, thisObject))) return ordinarySetSlow(exec, thisObject, propertyName, value, slot.thisValue(), slot.isStrictMode()); return Base::put(thisObject, exec, propertyName, value, slot); }
bool JSArrayBuffer::put( JSCell* cell, ExecState* exec, PropertyName propertyName, JSValue value, PutPropertySlot& slot) { JSArrayBuffer* thisObject = jsCast<JSArrayBuffer*>(cell); if (UNLIKELY(isThisValueAltered(slot, thisObject))) return ordinarySetSlow(exec, thisObject, propertyName, value, slot.thisValue(), slot.isStrictMode()); if (propertyName == exec->propertyNames().byteLength) return reject(exec, slot.isStrictMode(), "Attempting to write to a read-only array buffer property."); return Base::put(thisObject, exec, propertyName, value, slot); }
bool RegExpObject::put(JSCell* cell, ExecState* exec, PropertyName propertyName, JSValue value, PutPropertySlot& slot) { RegExpObject* thisObject = jsCast<RegExpObject*>(cell); if (UNLIKELY(isThisValueAltered(slot, thisObject))) return ordinarySetSlow(exec, thisObject, propertyName, value, slot.thisValue(), slot.isStrictMode()); if (propertyName == exec->propertyNames().lastIndex) { bool result = asRegExpObject(cell)->setLastIndex(exec, value, slot.isStrictMode()); slot.setCustomValue(asRegExpObject(cell), slot.isStrictMode() ? regExpObjectSetLastIndexStrict : regExpObjectSetLastIndexNonStrict); return result; } return Base::put(cell, exec, propertyName, value, slot); }
bool StringObject::put(JSCell* cell, ExecState* exec, PropertyName propertyName, JSValue value, PutPropertySlot& slot) { VM& vm = exec->vm(); auto scope = DECLARE_THROW_SCOPE(vm); StringObject* thisObject = jsCast<StringObject*>(cell); if (UNLIKELY(isThisValueAltered(slot, thisObject))) return ordinarySetSlow(exec, thisObject, propertyName, value, slot.thisValue(), slot.isStrictMode()); if (propertyName == vm.propertyNames->length) return typeError(exec, scope, slot.isStrictMode(), ASCIILiteral(ReadonlyPropertyWriteError)); if (Optional<uint32_t> index = parseIndex(propertyName)) return putByIndex(cell, exec, index.value(), value, slot.isStrictMode()); return JSObject::put(cell, exec, propertyName, value, slot); }