| Index: src/ic.cc
|
| diff --git a/src/ic.cc b/src/ic.cc
|
| index cd9095be129998145233d06c3d794f241f24355f..168b96016e40389cf916639bb4c228f6c828a627 100644
|
| --- a/src/ic.cc
|
| +++ b/src/ic.cc
|
| @@ -155,26 +155,6 @@ Address IC::OriginalCodeAddress() const {
|
| #endif
|
|
|
|
|
| -static bool HasNormalObjectsInPrototypeChain(Isolate* isolate,
|
| - LookupResult* lookup,
|
| - Object* receiver) {
|
| - Object* end = lookup->IsProperty()
|
| - ? lookup->holder() : Object::cast(isolate->heap()->null_value());
|
| - for (Object* current = receiver;
|
| - current != end;
|
| - current = current->GetPrototype()) {
|
| - if (current->IsJSObject() &&
|
| - !JSObject::cast(current)->HasFastProperties() &&
|
| - !current->IsJSGlobalProxy() &&
|
| - !current->IsJSGlobalObject()) {
|
| - return true;
|
| - }
|
| - }
|
| -
|
| - return false;
|
| -}
|
| -
|
| -
|
| static bool TryRemoveInvalidPrototypeDependentStub(Code* target,
|
| Object* receiver,
|
| Object* name) {
|
| @@ -686,14 +666,6 @@ void CallICBase::UpdateCaches(LookupResult* lookup,
|
| // Bail out if we didn't find a result.
|
| if (!lookup->IsProperty() || !lookup->IsCacheable()) return;
|
|
|
| - if (lookup->holder() != *object &&
|
| - HasNormalObjectsInPrototypeChain(
|
| - isolate(), lookup, object->GetPrototype())) {
|
| - // Suppress optimization for prototype chains with slow properties objects
|
| - // in the middle.
|
| - return;
|
| - }
|
| -
|
| // Compute the number of arguments.
|
| int argc = target()->arguments_count();
|
| Handle<Code> code;
|
| @@ -1009,8 +981,6 @@ void LoadIC::UpdateCaches(LookupResult* lookup,
|
| // deal with non-JS objects here.
|
| if (!object->IsJSObject()) return;
|
|
|
| - if (HasNormalObjectsInPrototypeChain(isolate(), lookup, *object)) return;
|
| -
|
| Handle<JSObject> receiver = Handle<JSObject>::cast(object);
|
| Handle<Code> code;
|
| if (state == UNINITIALIZED) {
|
|
|