| Index: src/ic/keyed-store-generic.cc
 | 
| diff --git a/src/ic/keyed-store-generic.cc b/src/ic/keyed-store-generic.cc
 | 
| index cf1c49f0c897304788c7134572b5413eb062fa05..33ac58fafb6eae885290f542da4d778af5c2b1d7 100644
 | 
| --- a/src/ic/keyed-store-generic.cc
 | 
| +++ b/src/ic/keyed-store-generic.cc
 | 
| @@ -225,6 +225,15 @@ void KeyedStoreGenericAssembler::StoreElementWithCapacity(
 | 
|    if (update_length != kDontChangeLength) {
 | 
|      CSA_ASSERT(this, Word32Equal(LoadMapInstanceType(receiver_map),
 | 
|                                   Int32Constant(JS_ARRAY_TYPE)));
 | 
| +    // Check if the length property is writable. The fast check is only
 | 
| +    // supported for fast properties.
 | 
| +    GotoIf(IsDictionaryMap(receiver_map), slow);
 | 
| +    // The length property is non-configurable, so it's guaranteed to always
 | 
| +    // be the first property.
 | 
| +    Node* descriptors = LoadMapDescriptors(receiver_map);
 | 
| +    Node* details =
 | 
| +        LoadFixedArrayElement(descriptors, DescriptorArray::ToDetailsIndex(0));
 | 
| +    GotoIf(IsSetSmi(details, PropertyDetails::kAttributesReadOnlyMask), slow);
 | 
|    }
 | 
|    STATIC_ASSERT(FixedArray::kHeaderSize == FixedDoubleArray::kHeaderSize);
 | 
|    const int kHeaderSize = FixedArray::kHeaderSize - kHeapObjectTag;
 | 
| 
 |