| Index: src/ic.cc | 
| diff --git a/src/ic.cc b/src/ic.cc | 
| index eb0f12a39417dcc6f93429cb5ed69f528ca67ace..f70f75a7f622b664df04244bf3c60449d46a6395 100644 | 
| --- a/src/ic.cc | 
| +++ b/src/ic.cc | 
| @@ -1097,15 +1097,10 @@ void LoadIC::UpdateCaches(LookupResult* lookup, | 
| } | 
|  | 
|  | 
| -MaybeObject* KeyedLoadIC::GetFastElementStubWithoutMapCheck( | 
| -    bool is_js_array) { | 
| -  return KeyedLoadFastElementStub().TryGetCode(); | 
| -} | 
| - | 
| - | 
| -MaybeObject* KeyedLoadIC::GetExternalArrayStubWithoutMapCheck( | 
| +MaybeObject* KeyedLoadIC::GetElementStubWithoutMapCheck( | 
| +    bool is_js_array, | 
| JSObject::ElementsKind elements_kind) { | 
| -  return KeyedLoadExternalArrayStub(elements_kind).TryGetCode(); | 
| +  return KeyedLoadElementStub(elements_kind).TryGetCode(); | 
| } | 
|  | 
|  | 
| @@ -1675,7 +1670,7 @@ MaybeObject* KeyedIC::ComputeStub(JSObject* receiver, | 
| for (int i = 0; i < target_receiver_maps.length(); ++i) { | 
| Map* receiver_map(target_receiver_maps.at(i)); | 
| MaybeObject* maybe_cached_stub = ComputeMonomorphicStubWithoutMapCheck( | 
| -        receiver_map, strict_mode, generic_stub); | 
| +        receiver_map, strict_mode); | 
| Code* cached_stub; | 
| if (!maybe_cached_stub->To(&cached_stub)) return maybe_cached_stub; | 
| handler_ics.Add(cached_stub); | 
| @@ -1694,18 +1689,18 @@ MaybeObject* KeyedIC::ComputeStub(JSObject* receiver, | 
|  | 
| MaybeObject* KeyedIC::ComputeMonomorphicStubWithoutMapCheck( | 
| Map* receiver_map, | 
| -    StrictModeFlag strict_mode, | 
| -    Code* generic_stub) { | 
| +    StrictModeFlag strict_mode) { | 
| if ((receiver_map->instance_type() & kNotStringTag) == 0) { | 
| ASSERT(string_stub() != NULL); | 
| return string_stub(); | 
| -  } else if (receiver_map->has_external_array_elements()) { | 
| -    return GetExternalArrayStubWithoutMapCheck(receiver_map->elements_kind()); | 
| -  } else if (receiver_map->has_fast_elements()) { | 
| -    bool is_js_array = receiver_map->instance_type() == JS_ARRAY_TYPE; | 
| -    return GetFastElementStubWithoutMapCheck(is_js_array); | 
| } else { | 
| -    return generic_stub; | 
| +    ASSERT(receiver_map->has_dictionary_elements() || | 
| +           receiver_map->has_fast_elements() || | 
| +           receiver_map->has_fast_double_elements() || | 
| +           receiver_map->has_external_array_elements()); | 
| +    bool is_js_array = receiver_map->instance_type() == JS_ARRAY_TYPE; | 
| +    return GetElementStubWithoutMapCheck(is_js_array, | 
| +                                         receiver_map->elements_kind()); | 
| } | 
| } | 
|  | 
| @@ -1717,6 +1712,7 @@ MaybeObject* KeyedIC::ComputeMonomorphicStub(JSObject* receiver, | 
| Code* result = NULL; | 
| if (receiver->HasFastElements() || | 
| receiver->HasExternalArrayElements() || | 
| +      receiver->HasFastDoubleElements() || | 
| receiver->HasDictionaryElements()) { | 
| MaybeObject* maybe_stub = | 
| isolate()->stub_cache()->ComputeKeyedLoadOrStoreElement( | 
| @@ -1729,15 +1725,10 @@ MaybeObject* KeyedIC::ComputeMonomorphicStub(JSObject* receiver, | 
| } | 
|  | 
|  | 
| -MaybeObject* KeyedStoreIC::GetFastElementStubWithoutMapCheck( | 
| -    bool is_js_array) { | 
| -  return KeyedStoreFastElementStub(is_js_array).TryGetCode(); | 
| -} | 
| - | 
| - | 
| -MaybeObject* KeyedStoreIC::GetExternalArrayStubWithoutMapCheck( | 
| +MaybeObject* KeyedStoreIC::GetElementStubWithoutMapCheck( | 
| +    bool is_js_array, | 
| JSObject::ElementsKind elements_kind) { | 
| -  return KeyedStoreExternalArrayStub(elements_kind).TryGetCode(); | 
| +  return KeyedStoreElementStub(is_js_array, elements_kind).TryGetCode(); | 
| } | 
|  | 
|  | 
|  |