| Index: src/accessors.cc
|
| diff --git a/src/accessors.cc b/src/accessors.cc
|
| index 502dc4c1b256e1027dd2cf8234534da35b38a89e..31139b79614aaecb47559a3928fd299071be3d26 100644
|
| --- a/src/accessors.cc
|
| +++ b/src/accessors.cc
|
| @@ -204,6 +204,19 @@ void Accessors::ArrayLengthSetter(
|
| if (JSArray::ObservableSetLength(array, length).is_null()) {
|
| isolate->OptionalRescheduleException(false);
|
| }
|
| +
|
| + if (info.ShouldThrowOnError()) {
|
| + uint32_t actual_new_len = 0;
|
| + CHECK(array->length()->ToArrayLength(&actual_new_len));
|
| + // Throw TypeError if there were non-deletable elements.
|
| + if (actual_new_len != length) {
|
| + Factory* factory = isolate->factory();
|
| + isolate->Throw(*factory->NewTypeError(
|
| + MessageTemplate::kStrictDeleteProperty,
|
| + factory->NewNumberFromUint(actual_new_len - 1), array));
|
| + isolate->OptionalRescheduleException(false);
|
| + }
|
| + }
|
| }
|
|
|
|
|
| @@ -1404,6 +1417,7 @@ static void ModuleGetExport(v8::Local<v8::Name> property,
|
| static void ModuleSetExport(v8::Local<v8::Name> property,
|
| v8::Local<v8::Value> value,
|
| const v8::PropertyCallbackInfo<void>& info) {
|
| + if (!info.ShouldThrowOnError()) return;
|
| Handle<Name> name = v8::Utils::OpenHandle(*property);
|
| Isolate* isolate = name->GetIsolate();
|
| Handle<Object> exception =
|
|
|