| Index: src/elements.cc | 
| diff --git a/src/elements.cc b/src/elements.cc | 
| index aedc77918ebba41c1dcc5d45ece80d9900709303..96497408a2213151bd452b3b5fb7cbcb688015aa 100644 | 
| --- a/src/elements.cc | 
| +++ b/src/elements.cc | 
| @@ -669,9 +669,8 @@ class ElementsAccessorBase : public ElementsAccessor { | 
| UNIMPLEMENTED(); | 
| } | 
|  | 
| -  MUST_USE_RESULT virtual MaybeHandle<Object> Delete( | 
| -      Handle<JSObject> obj, uint32_t key, | 
| -      LanguageMode language_mode) override = 0; | 
| +  virtual void Delete(Handle<JSObject> obj, uint32_t key, | 
| +                      LanguageMode language_mode) override = 0; | 
|  | 
| static void CopyElementsImpl(FixedArrayBase* from, uint32_t from_start, | 
| FixedArrayBase* to, ElementsKind from_kind, | 
| @@ -919,17 +918,16 @@ class FastElementsAccessor | 
| return length_object; | 
| } | 
|  | 
| -  static MaybeHandle<Object> DeleteCommon(Handle<JSObject> obj, uint32_t key, | 
| -                                          LanguageMode language_mode) { | 
| +  static void DeleteCommon(Handle<JSObject> obj, uint32_t key, | 
| +                           LanguageMode language_mode) { | 
| DCHECK(obj->HasFastSmiOrObjectElements() || | 
| obj->HasFastDoubleElements() || | 
| obj->HasFastArgumentsElements()); | 
| Isolate* isolate = obj->GetIsolate(); | 
| Heap* heap = obj->GetHeap(); | 
| Handle<FixedArrayBase> elements(obj->elements()); | 
| -    if (*elements == heap->empty_fixed_array()) { | 
| -      return isolate->factory()->true_value(); | 
| -    } | 
| +    if (*elements == heap->empty_fixed_array()) return; | 
| + | 
| Handle<BackingStore> backing_store = Handle<BackingStore>::cast(elements); | 
| bool is_sloppy_arguments_elements_map = | 
| backing_store->map() == heap->sloppy_arguments_elements_map(); | 
| @@ -943,16 +941,6 @@ class FastElementsAccessor | 
| ? Smi::cast(Handle<JSArray>::cast(obj)->length())->value() | 
| : backing_store->length()); | 
| if (key < length) { | 
| -      if (obj->map()->is_strong() && !backing_store->is_the_hole(key)) { | 
| -        if (is_strict(language_mode)) { | 
| -          Handle<Object> name = isolate->factory()->NewNumberFromUint(key); | 
| -          THROW_NEW_ERROR( | 
| -              isolate, | 
| -              NewTypeError(MessageTemplate::kStrongDeleteProperty, obj, name), | 
| -              Object); | 
| -        } | 
| -        return isolate->factory()->false_value(); | 
| -      } | 
| if (!is_sloppy_arguments_elements_map) { | 
| ElementsKind kind = KindTraits::Kind; | 
| if (IsFastPackedElementsKind(kind)) { | 
| @@ -984,12 +972,11 @@ class FastElementsAccessor | 
| } | 
| } | 
| } | 
| -    return isolate->factory()->true_value(); | 
| } | 
|  | 
| -  virtual MaybeHandle<Object> Delete(Handle<JSObject> obj, uint32_t key, | 
| -                                     LanguageMode language_mode) final { | 
| -    return DeleteCommon(obj, key, language_mode); | 
| +  virtual void Delete(Handle<JSObject> obj, uint32_t key, | 
| +                      LanguageMode language_mode) final { | 
| +    DeleteCommon(obj, key, language_mode); | 
| } | 
|  | 
| static bool HasElementImpl( | 
| @@ -1306,10 +1293,9 @@ class TypedElementsAccessor | 
| return obj; | 
| } | 
|  | 
| -  MUST_USE_RESULT virtual MaybeHandle<Object> Delete( | 
| -      Handle<JSObject> obj, uint32_t key, LanguageMode language_mode) final { | 
| +  virtual void Delete(Handle<JSObject> obj, uint32_t key, | 
| +                      LanguageMode language_mode) final { | 
| // External arrays always ignore deletes. | 
| -    return obj->GetIsolate()->factory()->true_value(); | 
| } | 
|  | 
| static bool HasElementImpl(Handle<JSObject> holder, uint32_t key, | 
| @@ -1409,8 +1395,8 @@ class DictionaryElementsAccessor | 
| return length_object; | 
| } | 
|  | 
| -  MUST_USE_RESULT static MaybeHandle<Object> DeleteCommon( | 
| -      Handle<JSObject> obj, uint32_t key, LanguageMode language_mode) { | 
| +  static void DeleteCommon(Handle<JSObject> obj, uint32_t key, | 
| +                           LanguageMode language_mode) { | 
| Isolate* isolate = obj->GetIsolate(); | 
| Handle<FixedArray> backing_store(FixedArray::cast(obj->elements()), | 
| isolate); | 
| @@ -1423,28 +1409,10 @@ class DictionaryElementsAccessor | 
| Handle<SeededNumberDictionary>::cast(backing_store); | 
| int entry = dictionary->FindEntry(key); | 
| if (entry != SeededNumberDictionary::kNotFound) { | 
| -      Handle<Object> result; | 
| -      bool strong = obj->map()->is_strong(); | 
| -      if (!strong) { | 
| -        result = SeededNumberDictionary::DeleteProperty(dictionary, entry); | 
| -      } | 
| -      if (strong || *result == *isolate->factory()->false_value()) { | 
| -        // Fail if the property is not configurable, or on a strong object. | 
| -        if (is_strict(language_mode)) { | 
| -          Handle<Object> name = isolate->factory()->NewNumberFromUint(key); | 
| -          if (strong) { | 
| -            THROW_NEW_ERROR( | 
| -                isolate, | 
| -                NewTypeError(MessageTemplate::kStrongDeleteProperty, obj, name), | 
| -                Object); | 
| -          } | 
| -          THROW_NEW_ERROR( | 
| -              isolate, | 
| -              NewTypeError(MessageTemplate::kStrictDeleteProperty, name, obj), | 
| -              Object); | 
| -        } | 
| -        return isolate->factory()->false_value(); | 
| -      } | 
| +      Handle<Object> result = | 
| +          SeededNumberDictionary::DeleteProperty(dictionary, entry); | 
| +      USE(result); | 
| +      DCHECK(result->IsTrue()); | 
| Handle<FixedArray> new_elements = | 
| SeededNumberDictionary::Shrink(dictionary, key); | 
|  | 
| @@ -1454,7 +1422,6 @@ class DictionaryElementsAccessor | 
| obj->set_elements(*new_elements); | 
| } | 
| } | 
| -    return isolate->factory()->true_value(); | 
| } | 
|  | 
| static void CopyElementsImpl(FixedArrayBase* from, uint32_t from_start, | 
| @@ -1469,9 +1436,9 @@ class DictionaryElementsAccessor | 
| friend class ElementsAccessorBase<DictionaryElementsAccessor, | 
| ElementsKindTraits<DICTIONARY_ELEMENTS> >; | 
|  | 
| -  MUST_USE_RESULT virtual MaybeHandle<Object> Delete( | 
| -      Handle<JSObject> obj, uint32_t key, LanguageMode language_mode) final { | 
| -    return DeleteCommon(obj, key, language_mode); | 
| +  virtual void Delete(Handle<JSObject> obj, uint32_t key, | 
| +                      LanguageMode language_mode) final { | 
| +    DeleteCommon(obj, key, language_mode); | 
| } | 
|  | 
| static Handle<Object> GetImpl(Handle<JSObject> obj, uint32_t key, | 
| @@ -1631,8 +1598,8 @@ class SloppyArgumentsElementsAccessor : public ElementsAccessorBase< | 
| return obj; | 
| } | 
|  | 
| -  MUST_USE_RESULT virtual MaybeHandle<Object> Delete( | 
| -      Handle<JSObject> obj, uint32_t key, LanguageMode language_mode) final { | 
| +  virtual void Delete(Handle<JSObject> obj, uint32_t key, | 
| +                      LanguageMode language_mode) final { | 
| Isolate* isolate = obj->GetIsolate(); | 
| Handle<FixedArray> parameter_map(FixedArray::cast(obj->elements())); | 
| Handle<Object> probe(GetParameterMapArg(*parameter_map, key), isolate); | 
| @@ -1644,17 +1611,14 @@ class SloppyArgumentsElementsAccessor : public ElementsAccessorBase< | 
| } else { | 
| Handle<FixedArray> arguments(FixedArray::cast(parameter_map->get(1))); | 
| if (arguments->IsDictionary()) { | 
| -        return DictionaryElementsAccessor::DeleteCommon(obj, key, | 
| -                                                        language_mode); | 
| +        DictionaryElementsAccessor::DeleteCommon(obj, key, language_mode); | 
| } else { | 
| // It's difficult to access the version of DeleteCommon that is declared | 
| // in the templatized super class, call the concrete implementation in | 
| // the class for the most generalized ElementsKind subclass. | 
| -        return FastHoleyObjectElementsAccessor::DeleteCommon(obj, key, | 
| -                                                             language_mode); | 
| +        FastHoleyObjectElementsAccessor::DeleteCommon(obj, key, language_mode); | 
| } | 
| } | 
| -    return isolate->factory()->true_value(); | 
| } | 
|  | 
| static void CopyElementsImpl(FixedArrayBase* from, uint32_t from_start, | 
|  |