| Index: src/objects.cc
 | 
| diff --git a/src/objects.cc b/src/objects.cc
 | 
| index b44f11eda7ee38c00f51b336a4b8f95ac02b8618..25971dcd5aa5b8d756d4f61a1e15bdd29539d11a 100644
 | 
| --- a/src/objects.cc
 | 
| +++ b/src/objects.cc
 | 
| @@ -5119,14 +5119,13 @@ MaybeHandle<Object> JSObject::DeletePropertyWithInterceptor(
 | 
|  
 | 
|  
 | 
|  void JSObject::DeleteNormalizedProperty(Handle<JSObject> object,
 | 
| -                                        Handle<Name> name) {
 | 
| +                                        Handle<Name> name, int entry) {
 | 
|    DCHECK(!object->HasFastProperties());
 | 
|    Isolate* isolate = object->GetIsolate();
 | 
|  
 | 
|    if (object->IsGlobalObject()) {
 | 
|      // If we have a global object, invalidate the cell and swap in a new one.
 | 
|      Handle<GlobalDictionary> dictionary(object->global_dictionary());
 | 
| -    int entry = dictionary->FindEntry(name);
 | 
|      DCHECK_NE(GlobalDictionary::kNotFound, entry);
 | 
|  
 | 
|      auto cell = PropertyCell::InvalidateEntry(dictionary, entry);
 | 
| @@ -5136,7 +5135,6 @@ void JSObject::DeleteNormalizedProperty(Handle<JSObject> object,
 | 
|          cell->property_details().set_cell_type(PropertyCellType::kInvalidated));
 | 
|    } else {
 | 
|      Handle<NameDictionary> dictionary(object->property_dictionary());
 | 
| -    int entry = dictionary->FindEntry(name);
 | 
|      DCHECK_NE(NameDictionary::kNotFound, entry);
 | 
|  
 | 
|      NameDictionary::DeleteProperty(dictionary, entry);
 | 
| @@ -5195,16 +5193,12 @@ MaybeHandle<Object> JSReceiver::DeleteProperty(LookupIterator* it,
 | 
|          if (!it->IsConfigurable() || receiver->map()->is_strong()) {
 | 
|            // Fail if the property is not configurable, or on a strong object.
 | 
|            if (is_strict(language_mode)) {
 | 
| -            if (receiver->map()->is_strong()) {
 | 
| -              THROW_NEW_ERROR(
 | 
| -                  isolate, NewTypeError(MessageTemplate::kStrongDeleteProperty,
 | 
| -                                        receiver, it->GetName()),
 | 
| -                  Object);
 | 
| -            }
 | 
| -            THROW_NEW_ERROR(isolate,
 | 
| -                            NewTypeError(MessageTemplate::kStrictDeleteProperty,
 | 
| -                                         it->GetName(), receiver),
 | 
| -                            Object);
 | 
| +            MessageTemplate::Template templ =
 | 
| +                receiver->map()->is_strong()
 | 
| +                    ? MessageTemplate::kStrongDeleteProperty
 | 
| +                    : MessageTemplate::kStrictDeleteProperty;
 | 
| +            THROW_NEW_ERROR(
 | 
| +                isolate, NewTypeError(templ, it->GetName(), receiver), Object);
 | 
|            }
 | 
|            return it->factory()->false_value();
 | 
|          }
 | 
| @@ -5217,18 +5211,7 @@ MaybeHandle<Object> JSReceiver::DeleteProperty(LookupIterator* it,
 | 
|            return it->factory()->true_value();
 | 
|          }
 | 
|  
 | 
| -        if (it->IsElement()) {
 | 
| -          ElementsAccessor* accessor = holder->GetElementsAccessor();
 | 
| -          accessor->Delete(holder, it->index(), language_mode);
 | 
| -        } else {
 | 
| -          PropertyNormalizationMode mode = holder->map()->is_prototype_map()
 | 
| -                                               ? KEEP_INOBJECT_PROPERTIES
 | 
| -                                               : CLEAR_INOBJECT_PROPERTIES;
 | 
| -
 | 
| -          JSObject::NormalizeProperties(holder, mode, 0, "DeletingProperty");
 | 
| -          JSObject::DeleteNormalizedProperty(holder, it->name());
 | 
| -          JSObject::ReoptimizeIfPrototype(holder);
 | 
| -        }
 | 
| +        it->Delete();
 | 
|  
 | 
|          if (is_observed) {
 | 
|            RETURN_ON_EXCEPTION(isolate,
 | 
| 
 |