| Index: src/ic.cc | 
| diff --git a/src/ic.cc b/src/ic.cc | 
| index 7f4d1cd27046644f266fa33f61a45d0c378eabee..f1e3c5539d64fbd9f74cc0de671edc62a2cb3db6 100644 | 
| --- a/src/ic.cc | 
| +++ b/src/ic.cc | 
| @@ -1599,7 +1599,10 @@ KeyedAccessStoreMode KeyedStoreIC::GetStoreMode(Handle<JSObject> receiver, | 
| key->ToSmi()->To(&smi_key); | 
| int index = smi_key->value(); | 
| bool oob_access = IsOutOfBoundsAccess(receiver, index); | 
| -  bool allow_growth = receiver->IsJSArray() && oob_access; | 
| +  // Don't consider this a growing store if the store would send the receiver to | 
| +  // dictionary mode. | 
| +  bool allow_growth = receiver->IsJSArray() && oob_access && | 
| +      !receiver->WouldConvertToSlowElements(key); | 
| if (allow_growth) { | 
| // Handle growing array in stub if necessary. | 
| if (receiver->HasFastSmiElements()) { | 
| @@ -1724,12 +1727,7 @@ MaybeObject* KeyedStoreIC::Store(Handle<Object> object, | 
| if (!(receiver->map()->DictionaryElementsInPrototypeChainOnly())) { | 
| KeyedAccessStoreMode store_mode = | 
| GetStoreMode(receiver, key, value); | 
| -            // Use the generic stub if the store would send the receiver to | 
| -            // dictionary mode. | 
| -            if (!IsGrowStoreMode(store_mode) || | 
| -                !receiver->WouldConvertToSlowElements(key)) { | 
| -              stub = StoreElementStub(receiver, store_mode); | 
| -            } | 
| +            stub = StoreElementStub(receiver, store_mode); | 
| } | 
| } | 
| } | 
|  |