Index: src/ic.cc |
diff --git a/src/ic.cc b/src/ic.cc |
index 9a277d6c0c2afff1f95196f74ba3a7a9029a50cb..0eb24c50d7f37e00e10ce4d94f5fdda2ad11468e 100644 |
--- a/src/ic.cc |
+++ b/src/ic.cc |
@@ -1204,23 +1204,31 @@ MaybeObject* KeyedLoadIC::Load(State state, |
if (use_ic) { |
Code* stub = generic_stub(); |
- 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 = |
- probe->IsFailure() ? NULL : Code::cast(probe->ToObjectUnchecked()); |
- } 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 (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 = |
+ StubCache::ComputeKeyedLoadOrStoreExternalArray(*receiver, |
+ false); |
+ stub = probe->IsFailure() ? |
+ NULL : Code::cast(probe->ToObjectUnchecked()); |
+ } else if (receiver->HasIndexedInterceptor()) { |
+ stub = indexed_interceptor_stub(); |
+ } else if (receiver->HasPixelElements()) { |
+ MaybeObject* probe = |
+ StubCache::ComputeKeyedLoadPixelArray(*receiver); |
+ stub = probe->IsFailure() ? |
+ NULL : Code::cast(probe->ToObjectUnchecked()); |
+ } else if (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); |