Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: a9510aedf5179f92aa036b67aea7f5f9e8b0a24f
      
https://github.com/WebKit/WebKit/commit/a9510aedf5179f92aa036b67aea7f5f9e8b0a24f
  Author: Yusuke Suzuki <ysuz...@apple.com>
  Date:   2022-11-24 (Thu, 24 Nov 2022)

  Changed paths:
    A LayoutTests/js/dom/resizable-array-buffer-serialization-expected.txt
    A LayoutTests/js/dom/resizable-array-buffer-serialization.html
    A LayoutTests/js/dom/resizable-array-buffer-view-serialization-expected.txt
    A 
LayoutTests/js/dom/resizable-array-buffer-view-serialization-out-of-bounds-expected.txt
    A 
LayoutTests/js/dom/resizable-array-buffer-view-serialization-out-of-bounds-explicit-length-expected.txt
    A 
LayoutTests/js/dom/resizable-array-buffer-view-serialization-out-of-bounds-explicit-length.html
    A 
LayoutTests/js/dom/resizable-array-buffer-view-serialization-out-of-bounds.html
    A LayoutTests/js/dom/resizable-array-buffer-view-serialization.html
    A 
LayoutTests/workers/sab/growable-shared-array-buffer-serialization-expected.txt
    A LayoutTests/workers/sab/growable-shared-array-buffer-serialization.html
    A 
LayoutTests/workers/sab/growable-shared-array-buffer-view-serialization-expected.txt
    A 
LayoutTests/workers/sab/growable-shared-array-buffer-view-serialization-explicit-length-expected.txt
    A 
LayoutTests/workers/sab/growable-shared-array-buffer-view-serialization-explicit-length.html
    A 
LayoutTests/workers/sab/growable-shared-array-buffer-view-serialization.html
    A LayoutTests/workers/sab/postMessage-clones-growable-expected.txt
    A LayoutTests/workers/sab/postMessage-clones-growable.html
    M Source/JavaScriptCore/runtime/ArrayBufferView.cpp
    M Source/JavaScriptCore/runtime/ArrayBufferView.h
    M Source/JavaScriptCore/runtime/DataView.cpp
    M Source/JavaScriptCore/runtime/DataView.h
    M Source/JavaScriptCore/runtime/GenericTypedArrayView.h
    M Source/JavaScriptCore/runtime/GenericTypedArrayViewInlines.h
    M Source/JavaScriptCore/runtime/JSArrayBufferView.cpp
    M Source/JavaScriptCore/runtime/JSDataView.cpp
    M Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h
    M Source/WebCore/bindings/js/SerializedScriptValue.cpp
    M Source/WebCore/bindings/js/StructuredClone.cpp

  Log Message:
  -----------
  Serialize and deserialize resizable ArrayBuffer
https://bugs.webkit.org/show_bug.cgi?id=248209
rdar://102601423

Reviewed by Ross Kirsling.

This patch adds serializing and deserializing of resizable ArrayBuffer and 
TypedArrays.
We add ResizableArrayBufferTag and add a feature serializing resizable 
ArrayBuffer.
But for growable SharedArrayBuffer, nothing is necessary since information is 
carried via
SharedArrayBufferContents already. For TypedArrays, we use UINT64_MAX 
byteLength marker
as a auto-length case. This works since byteLength cannot be UINT64_MAX since 
it exceeds
MAX_ARRAY_BUFFER_SIZE. The other things in TypedArrays are not changed much 
since these
TypedArrays should be resizable / growable ones when the subsequent backing 
serialized
ArrayBuffer is resizable.

We also add wrappedAs methods since normal tryCreate has more additional checks 
for construction.
But these checks can fail if the serialized TypedArrays are having ArrayBuffers 
which is resized
to be smaller after the construction. But this is OK since it just makes 
TypedArrays OOB. wrappedAs
methods do not have this check.

* Source/JavaScriptCore/runtime/ArrayBufferView.h:
(JSC::ArrayBufferView::byteOffsetRaw const):
(JSC::ArrayBufferView::byteOffset const):
(JSC::ArrayBufferView::byteLengthRaw const):
(JSC::ArrayBufferView::byteLength const):
* Source/WebCore/bindings/js/SerializedScriptValue.cpp:
(WebCore::CloneSerializer::dumpArrayBufferView):
(WebCore::CloneSerializer::dumpIfTerminal):
(WebCore::CloneDeserializer::readResizableNonSharedArrayBuffer):
(WebCore::CloneDeserializer::readArrayBufferViewImpl):
(WebCore::CloneDeserializer::readTerminal):

Canonical link: https://commits.webkit.org/256998@main


_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to