Revert "[serialize] copy bytes for non detachable array_buffer"

This reverts commit 6e2c9bb265.

Reason for revert: Fails layout test: external/wpt/wasm/serialization/arraybuffer/transfer.window.html

Original change's description:
> [serialize] copy bytes for non detachable array_buffer
> in WriteJSArrayBuffer when array_buffer is not in
> array_buffer_transfer_map_
>
> According to https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal
> steps 13.3.2-4, should normally serialize array buffer which
> is not detachable
>
> Bug: v8:12703
> Change-Id: I4554c5d07ae85e1a96a728ebba04c6a071575f6f
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3518910
> Reviewed-by: Marja Hölttä <marja@chromium.org>
> Commit-Queue: Marja Hölttä <marja@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#79466}

Bug: v8:12703
Change-Id: I548ab191ab7d0f8fa699958396a5e32e34d39568
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3524742
Auto-Submit: Clemens Backes <clemensb@chromium.org>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#79474}
This commit is contained in:
Clemens Backes 2022-03-15 08:24:07 +00:00 committed by V8 LUCI CQ
parent f96caea60b
commit 0250c874fd
3 changed files with 6 additions and 9 deletions

View File

@ -5003,8 +5003,7 @@ class Serializer : public ValueSerializer::Delegate {
Local<ArrayBuffer> array_buffer =
Local<ArrayBuffer>::New(isolate_, global_array_buffer);
if (!array_buffer->IsDetachable()) {
isolate_->ThrowError(
"ArrayBuffer is not detachable and could not be transferred");
isolate_->ThrowError("ArrayBuffer could not be transferred");
return Nothing<bool>();
}

View File

@ -907,6 +907,10 @@ Maybe<bool> ValueSerializer::WriteJSArrayBuffer(
WriteVarint(index.FromJust());
return ThrowIfOutOfMemory();
}
if (!array_buffer->is_detachable()) {
return ThrowDataCloneError(
MessageTemplate::kDataCloneErrorNonDetachableArrayBuffer);
}
uint32_t* transfer_entry = array_buffer_transfer_map_.Find(array_buffer);
if (transfer_entry) {

View File

@ -15,13 +15,7 @@
let worker = new Worker('', {type: 'string'});
let memory = new WebAssembly.Memory({initial: 1, maximum: 2});
worker.postMessage(memory.buffer);
assertThrows(() => {
worker.postMessage(memory.buffer, [memory.buffer])
}, Error)
assertThrows(() => {
worker.postMessage(undefined, [memory.buffer])
}, Error)
assertThrows(() => worker.postMessage(memory.buffer), Error);
})();
// Can't use assert in a worker.