| Index: src/ic.cc
|
| diff --git a/src/ic.cc b/src/ic.cc
|
| index 194b188585ad370703835a0239fa245acf017214..9a277d6c0c2afff1f95196f74ba3a7a9029a50cb 100644
|
| --- a/src/ic.cc
|
| +++ b/src/ic.cc
|
| @@ -1204,27 +1204,23 @@ MaybeObject* KeyedLoadIC::Load(State state,
|
|
|
| if (use_ic) {
|
| Code* stub = generic_stub();
|
| - if (state == UNINITIALIZED) {
|
| - if (object->IsString() && key->IsNumber()) {
|
| - stub = string_stub();
|
| - } else if (object->IsJSObject()) {
|
| - Handle<JSObject> receiver = Handle<JSObject>::cast(object);
|
| - if (receiver->HasExternalArrayElements()) {
|
| - MaybeObject* probe =
|
| + if (object->IsString() && key->IsNumber()) {
|
| + stub = string_stub();
|
| + } else if (object->IsJSObject()) {
|
| + Handle<JSObject> receiver = Handle<JSObject>::cast(object);
|
| + if (receiver->HasExternalArrayElements()) {
|
| + MaybeObject* probe =
|
| StubCache::ComputeKeyedLoadOrStoreExternalArray(*receiver, false);
|
| - stub =
|
| + stub =
|
| probe->IsFailure() ? NULL : Code::cast(probe->ToObjectUnchecked());
|
| - } else if (receiver->HasPixelElements()) {
|
| - stub = pixel_array_stub();
|
| - } else if (receiver->HasIndexedInterceptor()) {
|
| - stub = indexed_interceptor_stub();
|
| - } else if (key->IsSmi() &&
|
| - receiver->map()->has_fast_elements()) {
|
| - MaybeObject* probe =
|
| - StubCache::ComputeKeyedLoadSpecialized(*receiver);
|
| - stub =
|
| + } else if (receiver->HasIndexedInterceptor()) {
|
| + stub = indexed_interceptor_stub();
|
| + } else if (state == UNINITIALIZED &&
|
| + key->IsSmi() &&
|
| + receiver->map()->has_fast_elements()) {
|
| + MaybeObject* probe = StubCache::ComputeKeyedLoadSpecialized(*receiver);
|
| + stub =
|
| probe->IsFailure() ? NULL : Code::cast(probe->ToObjectUnchecked());
|
| - }
|
| }
|
| }
|
| if (stub != NULL) set_target(stub);
|
|
|