Index: src/ic.cc |
diff --git a/src/ic.cc b/src/ic.cc |
index 62ab0f213e9302a7d182ffd406bcfb9ea0482b3e..968b45d0b61f4ac27c102cdc8dae927cc8c51ff2 100644 |
--- a/src/ic.cc |
+++ b/src/ic.cc |
@@ -1632,19 +1632,25 @@ MaybeObject* KeyedStoreIC::Store(State state, |
if (use_ic) { |
Code* stub = generic_stub(); |
- if (object->IsJSObject()) { |
- Handle<JSObject> receiver = Handle<JSObject>::cast(object); |
- if (receiver->HasExternalArrayElements()) { |
- MaybeObject* probe = |
- StubCache::ComputeKeyedLoadOrStoreExternalArray(*receiver, true); |
- stub = |
- probe->IsFailure() ? NULL : Code::cast(probe->ToObjectUnchecked()); |
- } else if (state == UNINITIALIZED && |
- key->IsSmi() && |
- receiver->map()->has_fast_elements()) { |
- MaybeObject* probe = StubCache::ComputeKeyedStoreSpecialized(*receiver); |
- stub = |
- probe->IsFailure() ? NULL : Code::cast(probe->ToObjectUnchecked()); |
+ if (state == UNINITIALIZED) { |
+ if (object->IsJSObject()) { |
+ Handle<JSObject> receiver = Handle<JSObject>::cast(object); |
+ if (receiver->HasExternalArrayElements()) { |
+ MaybeObject* probe = |
+ StubCache::ComputeKeyedLoadOrStoreExternalArray(*receiver, true); |
+ stub = probe->IsFailure() ? |
+ NULL : Code::cast(probe->ToObjectUnchecked()); |
+ } else if (receiver->HasPixelElements()) { |
+ MaybeObject* probe = |
+ StubCache::ComputeKeyedStorePixelArray(*receiver); |
+ stub = probe->IsFailure() ? |
+ NULL : Code::cast(probe->ToObjectUnchecked()); |
+ } else if (key->IsSmi() && receiver->map()->has_fast_elements()) { |
+ MaybeObject* probe = |
+ StubCache::ComputeKeyedStoreSpecialized(*receiver); |
+ stub = probe->IsFailure() ? |
+ NULL : Code::cast(probe->ToObjectUnchecked()); |
+ } |
} |
} |
if (stub != NULL) set_target(stub); |