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:
parent
f96caea60b
commit
0250c874fd
@ -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>();
|
||||
}
|
||||
|
||||
|
@ -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) {
|
||||
|
@ -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.
|
||||
|
Loading…
Reference in New Issue
Block a user