| Index: src/ic/ic.cc
|
| diff --git a/src/ic/ic.cc b/src/ic/ic.cc
|
| index 17b7dcaf5a6e4da4277e44b83d892e9b8f799b99..2d2899ec7da5deaa3145842318c943710bf4d35c 100644
|
| --- a/src/ic/ic.cc
|
| +++ b/src/ic/ic.cc
|
| @@ -1109,14 +1109,6 @@ static Handle<Object> TryConvertKey(Handle<Object> key, Isolate* isolate) {
|
|
|
|
|
| Handle<Code> KeyedLoadIC::LoadElementStub(Handle<JSObject> receiver) {
|
| - // Don't handle megamorphic property accesses for INTERCEPTORS or CALLBACKS
|
| - // via megamorphic stubs, since they don't have a map in their relocation info
|
| - // and so the stubs can't be harvested for the object needed for a map check.
|
| - if (target()->type() != Code::NORMAL) {
|
| - TRACE_GENERIC_IC(isolate(), "KeyedIC", "non-NORMAL target type");
|
| - return generic_stub();
|
| - }
|
| -
|
| Handle<Map> receiver_map(receiver->map(), isolate());
|
| MapHandleList target_receiver_maps;
|
| if (target().is_identical_to(string_stub())) {
|
| @@ -1189,13 +1181,9 @@ MaybeHandle<Object> KeyedLoadIC::Load(Handle<Object> object,
|
| if (state() == UNINITIALIZED) stub = string_stub();
|
| } else if (object->IsJSObject()) {
|
| Handle<JSObject> receiver = Handle<JSObject>::cast(object);
|
| - if (receiver->elements()->map() ==
|
| - isolate()->heap()->sloppy_arguments_elements_map()) {
|
| - stub = sloppy_arguments_stub();
|
| - } else if (receiver->HasIndexedInterceptor()) {
|
| + if (receiver->HasIndexedInterceptor()) {
|
| stub = indexed_interceptor_stub();
|
| - } else if (!Object::ToSmi(isolate(), key).is_null() &&
|
| - (!target().is_identical_to(sloppy_arguments_stub()))) {
|
| + } else if (!Object::ToSmi(isolate(), key).is_null()) {
|
| stub = LoadElementStub(receiver);
|
| }
|
| }
|
|
|