Chromium Code Reviews| Index: src/objects.cc |
| diff --git a/src/objects.cc b/src/objects.cc |
| index ecb5bf1b5164265ae48d7f4be04d01181a7c8c65..9505800246f849e035de242fb5d874c27d32c833 100644 |
| --- a/src/objects.cc |
| +++ b/src/objects.cc |
| @@ -5513,6 +5513,17 @@ MaybeHandle<Object> JSObject::DeleteProperty(Handle<JSObject> object, |
| MaybeHandle<Object> JSReceiver::DeleteElement(Handle<JSReceiver> object, |
| uint32_t index, |
| LanguageMode language_mode) { |
| + if (object->map()->is_strong()) { |
| + Isolate* isolate = object->GetIsolate(); |
| + if (is_strict(language_mode)) { |
| + THROW_NEW_ERROR( |
|
rossberg
2015/05/22 11:34:50
Why do we need to throw here? Returning false shou
conradw
2015/05/22 13:37:56
Discussed offline, throw is needed but is in wrong
|
| + isolate, |
| + NewTypeError(MessageTemplate::kStrongDeleteProperty, |
| + isolate->factory()->NewNumberFromUint(index), object), |
| + Object); |
| + } |
| + return isolate->factory()->false_value(); |
| + } |
| if (object->IsJSProxy()) { |
| return JSProxy::DeleteElementWithHandler(Handle<JSProxy>::cast(object), |
| index, language_mode); |
| @@ -5525,6 +5536,16 @@ MaybeHandle<Object> JSReceiver::DeleteElement(Handle<JSReceiver> object, |
| MaybeHandle<Object> JSReceiver::DeleteProperty(Handle<JSReceiver> object, |
| Handle<Name> name, |
| LanguageMode language_mode) { |
| + if (object->map()->is_strong()) { |
| + Isolate* isolate = object->GetIsolate(); |
| + if (is_strict(language_mode)) { |
| + THROW_NEW_ERROR( |
|
rossberg
2015/05/22 11:34:50
Same here.
conradw
2015/05/22 13:37:56
See above.
|
| + isolate, |
| + NewTypeError(MessageTemplate::kStrongDeleteProperty, name, object), |
| + Object); |
| + } |
| + return isolate->factory()->false_value(); |
| + } |
| if (object->IsJSProxy()) { |
| return JSProxy::DeletePropertyWithHandler(Handle<JSProxy>::cast(object), |
| name, language_mode); |