Chromium Code Reviews| 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); |