| Index: src/objects.cc
 | 
| diff --git a/src/objects.cc b/src/objects.cc
 | 
| index a2dd84066a8fc2b5766376b2672ce2cbf5e5e279..28163662b5dc32885b28ce51158ea8058a6d8a04 100644
 | 
| --- a/src/objects.cc
 | 
| +++ b/src/objects.cc
 | 
| @@ -4902,11 +4902,6 @@
 | 
|    DCHECK(object->HasFastSmiOrObjectElements() ||
 | 
|           object->HasFastDoubleElements() ||
 | 
|           object->HasFastArgumentsElements());
 | 
| -
 | 
| -  // Ensure that notifications fire if the array or object prototypes are
 | 
| -  // normalizing.
 | 
| -  isolate->UpdateArrayProtectorOnNormalizeElements(object);
 | 
| -
 | 
|    // Compute the effective length and allocate a new backing store.
 | 
|    int length = object->IsJSArray()
 | 
|        ? Smi::cast(Handle<JSArray>::cast(object)->length())->value()
 | 
| @@ -5761,7 +5756,6 @@
 | 
|    Handle<SeededNumberDictionary> new_element_dictionary;
 | 
|    if (!object->elements()->IsDictionary()) {
 | 
|      new_element_dictionary = GetNormalizedElementDictionary(object);
 | 
| -    isolate->UpdateArrayProtectorOnNormalizeElements(object);
 | 
|    }
 | 
|  
 | 
|    Handle<Symbol> transition_marker;
 | 
| @@ -12421,6 +12415,8 @@
 | 
|        return "transition";
 | 
|      case kPrototypeCheckGroup:
 | 
|        return "prototype-check";
 | 
| +    case kElementsCantBeAddedGroup:
 | 
| +      return "elements-cant-be-added";
 | 
|      case kPropertyCellChangedGroup:
 | 
|        return "property-cell-changed";
 | 
|      case kFieldTypeGroup:
 | 
| @@ -12518,8 +12514,6 @@
 | 
|  
 | 
|    // Nothing to do if prototype is already set.
 | 
|    if (map->prototype() == *value) return value;
 | 
| -
 | 
| -  isolate->UpdateArrayProtectorOnSetPrototype(real_receiver);
 | 
|  
 | 
|    PrototypeOptimizationMode mode =
 | 
|        from_javascript ? REGULAR_PROTOTYPE : FAST_PROTOTYPE;
 | 
| @@ -12741,7 +12735,11 @@
 | 
|    // Array optimizations rely on the prototype lookups of Array objects always
 | 
|    // returning undefined. If there is a store to the initial prototype object,
 | 
|    // make sure all of these optimizations are invalidated.
 | 
| -  isolate->UpdateArrayProtectorOnSetElement(object);
 | 
| +  if (isolate->is_initial_object_prototype(*object) ||
 | 
| +      isolate->is_initial_array_prototype(*object)) {
 | 
| +    object->map()->dependent_code()->DeoptimizeDependentCodeGroup(isolate,
 | 
| +        DependentCode::kElementsCantBeAddedGroup);
 | 
| +  }
 | 
|  
 | 
|    Handle<FixedArray> backing_store(FixedArray::cast(object->elements()));
 | 
|    if (backing_store->map() ==
 | 
| @@ -17099,15 +17097,4 @@
 | 
|    return value;
 | 
|  }
 | 
|  
 | 
| -
 | 
| -// static
 | 
| -void PropertyCell::SetValueWithInvalidation(Handle<PropertyCell> cell,
 | 
| -                                            Handle<Object> new_value) {
 | 
| -  if (cell->value() != *new_value) {
 | 
| -    cell->set_value(*new_value);
 | 
| -    Isolate* isolate = cell->GetIsolate();
 | 
| -    cell->dependent_code()->DeoptimizeDependentCodeGroup(
 | 
| -        isolate, DependentCode::kPropertyCellChangedGroup);
 | 
| -  }
 | 
| -}
 | 
|  } }  // namespace v8::internal
 | 
| 
 |