| Index: src/objects-inl.h
|
| diff --git a/src/objects-inl.h b/src/objects-inl.h
|
| index 6fd03f2aa9d944d14b33ae764486ea37263c257e..eda53920776aeeb86b7a12c898f8c6ff5e03dbcc 100644
|
| --- a/src/objects-inl.h
|
| +++ b/src/objects-inl.h
|
| @@ -6903,8 +6903,18 @@ MaybeHandle<JSTypedArray> JSTypedArray::Validate(Isolate* isolate,
|
| THROW_NEW_ERROR(isolate, NewTypeError(message), JSTypedArray);
|
| }
|
|
|
| - // TODO(caitp): throw if array.[[ViewedArrayBuffer]] is neutered (per v8:4648)
|
| - return Handle<JSTypedArray>::cast(receiver);
|
| + Handle<JSTypedArray> array = Handle<JSTypedArray>::cast(receiver);
|
| + if (V8_UNLIKELY(array->WasNeutered())) {
|
| + const MessageTemplate::Template message =
|
| + MessageTemplate::kDetachedOperation;
|
| + Handle<String> operation =
|
| + isolate->factory()->NewStringFromAsciiChecked(method_name);
|
| + THROW_NEW_ERROR(isolate, NewTypeError(message, operation), JSTypedArray);
|
| + }
|
| +
|
| + // spec describes to return `buffer`, but it may disrupt current
|
| + // implementations, and it's much useful to return array for now.
|
| + return array;
|
| }
|
|
|
| #ifdef VERIFY_HEAP
|
|
|