| Index: src/ic.cc | 
| diff --git a/src/ic.cc b/src/ic.cc | 
| index b77cb7d681c93b96e1da744913dd1e90cdbb1d09..67c322ebeb8d5717ac7fa6968a6abf5372c2f4e8 100644 | 
| --- a/src/ic.cc | 
| +++ b/src/ic.cc | 
| @@ -1771,6 +1771,26 @@ Handle<Code> KeyedStoreIC::StoreElementStub(Handle<JSObject> receiver, | 
| } | 
| } | 
|  | 
| +  // If the store mode isn't the standard mode, make sure that all polymorphic | 
| +  // receivers are either external arrays, or all "normal" arrays. Otherwise, | 
| +  // use the generic stub. | 
| +  if (store_mode != STANDARD_STORE) { | 
| +    int external_arrays = 0; | 
| +    for (int i = 0; i < target_receiver_maps.length(); ++i) { | 
| +      if (target_receiver_maps[i]->has_external_array_elements()) { | 
| +        external_arrays++; | 
| +      } | 
| +    } | 
| +    if (external_arrays != 0 && | 
| +        external_arrays != target_receiver_maps.length()) { | 
| +      TRACE_GENERIC_IC(isolate(), "KeyedIC", | 
| +          "unsupported combination of external and normal arrays"); | 
| +      return strict_mode == kStrictMode | 
| +          ? generic_stub_strict() | 
| +          : generic_stub(); | 
| +    } | 
| +  } | 
| + | 
| return isolate()->stub_cache()->ComputeStoreElementPolymorphic( | 
| &target_receiver_maps, store_mode, strict_mode); | 
| } | 
|  |