// otherwise, it creates a property with the provided attributes. Semantically, this is performing defineOwnProperty.
bool putDirectIndex(ExecState* exec, unsigned propertyName, JSValue value, unsigned attributes, PutDirectIndexMode mode)
{
+ ASSERT(!value.isCustomGetterSetter());
auto canSetIndexQuicklyForPutDirect = [&] () -> bool {
switch (indexingMode()) {
case ALL_BLANK_INDEXING_TYPES:
ALWAYS_INLINE void JSObject::fillCustomGetterPropertySlot(VM& vm, PropertySlot& slot, CustomGetterSetter* customGetterSetter, unsigned attributes, Structure* structure)
{
+ ASSERT(attributes & PropertyAttribute::CustomAccessorOrValue);
if (customGetterSetter->inherits<DOMAttributeGetterSetter>(vm)) {
auto* domAttribute = jsCast<DOMAttributeGetterSetter*>(customGetterSetter);
if (structure->isUncacheableDictionary())
inline bool JSObject::putDirect(VM& vm, PropertyName propertyName, JSValue value, unsigned attributes)
{
ASSERT(!value.isGetterSetter() && !(attributes & PropertyAttribute::Accessor));
- ASSERT(!value.isCustomGetterSetter());
+ ASSERT(!value.isCustomGetterSetter() && !(attributes & PropertyAttribute::CustomAccessorOrValue));
PutPropertySlot slot(this);
return putDirectInternal<PutModeDefineOwnProperty>(vm, propertyName, value, attributes, slot);
}