Chromium Code Reviews| Index: src/lookup.cc |
| diff --git a/src/lookup.cc b/src/lookup.cc |
| index 716622b475de66d098dfa587ad8b467f47d01f6d..1b2d35e335344275c534bbe8a4a371edb0452552 100644 |
| --- a/src/lookup.cc |
| +++ b/src/lookup.cc |
| @@ -228,6 +228,28 @@ void LookupIterator::ApplyTransitionToDataProperty() { |
| } |
| +void LookupIterator::Delete() { |
| + Handle<JSObject> holder = Handle<JSObject>::cast(holder_); |
| + if (IsElement()) { |
| + ElementsAccessor* accessor = holder->GetElementsAccessor(); |
| + accessor->Delete(holder, number_); |
| + } else { |
| + PropertyNormalizationMode mode = holder->map()->is_prototype_map() |
| + ? KEEP_INOBJECT_PROPERTIES |
| + : CLEAR_INOBJECT_PROPERTIES; |
| + |
| + if (holder->HasFastProperties()) { |
| + JSObject::NormalizeProperties(holder, mode, 0, "DeletingProperty"); |
| + holder_map_ = handle(holder->map(), isolate_); |
| + ReloadPropertyInformation(); |
| + } |
| + // TODO(verwaest): Get rid of the name_ argument. |
| + JSObject::DeleteNormalizedProperty(holder, name_, number_); |
| + JSObject::ReoptimizeIfPrototype(holder); |
|
Igor Sheludko
2015/07/03 15:09:02
Shouldn't you call NotFound() here?
|
| + } |
| +} |
| + |
| + |
| void LookupIterator::TransitionToAccessorProperty( |
| AccessorComponent component, Handle<Object> accessor, |
| PropertyAttributes attributes) { |