Index: src/ic.cc |
diff --git a/src/ic.cc b/src/ic.cc |
index 9a277d6c0c2afff1f95196f74ba3a7a9029a50cb..a6c8c2ec1776185dbfb5ee4c1d8e18587ea68928 100644 |
--- a/src/ic.cc |
+++ b/src/ic.cc |
@@ -1204,23 +1204,30 @@ 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 = |
+ 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); |
Mads Ager (chromium)
2011/02/01 12:02:12
Four-space indent. Which will probably lead to a l
danno
2011/02/03 12:53:26
Done.
|
- stub = |
+ 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 = |
+ } else if (receiver->HasIndexedInterceptor()) { |
+ stub = indexed_interceptor_stub(); |
+ } else if (receiver->HasPixelElements()) { |
+ MaybeObject* probe = |
+ StubCache::ComputeKeyedLoadPixelArray(*receiver); |
Mads Ager (chromium)
2011/02/01 12:02:12
Four-space indent.
danno
2011/02/03 12:53:26
Done.
|
+ stub = |
probe->IsFailure() ? NULL : Code::cast(probe->ToObjectUnchecked()); |
Mads Ager (chromium)
2011/02/01 12:02:12
Four-space indent.
danno
2011/02/03 12:53:26
Done.
|
+ } else if (key->IsSmi() && |
+ receiver->map()->has_fast_elements()) { |
+ MaybeObject* probe = |
+ StubCache::ComputeKeyedLoadSpecialized(*receiver); |
Mads Ager (chromium)
2011/02/01 12:02:12
Ditto.
danno
2011/02/03 12:53:26
Done.
|
+ stub = |
+ probe->IsFailure() ? NULL : Code::cast(probe->ToObjectUnchecked()); |
Mads Ager (chromium)
2011/02/01 12:02:12
Reindent. We need four-space indent so in this cas
danno
2011/02/03 12:53:26
Done.
|
+ } |
} |
} |
if (stub != NULL) set_target(stub); |