Skip to content

Commit fe559d1

Browse files
committed
Copy ArrayBuffers at serialization time
See #936 (comment)
1 parent 6ab096e commit fe559d1

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

source

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2901,8 +2901,9 @@ a.setAttribute('href', 'https://example.com/'); // change the content attribute
29012901

29022902
<li>The <dfn data-x-href="https://tc39.github.io/ecma262/#sec-arraycreate">ArrayCreate</dfn> abstract operation</li>
29032903
<li>The <dfn data-x-href="https://tc39.github.io/ecma262/#sec-call">Call</dfn> abstract operation</li>
2904-
<li>The <dfn data-x-href="https://tc39.github.io/ecma262/#sec-clonearraybuffer">CloneArrayBuffer</dfn> abstract operation</li>
29052904
<li>The <dfn data-x-href="https://tc39.github.io/ecma262/#sec-construct">Construct</dfn> abstract operation</li>
2905+
<li>The <dfn data-x-href="https://tc39.github.io/ecma262/#sec-copydatablockbytes">CopyDataBlockBytes</dfn> abstract operation</li>
2906+
<li>The <dfn data-x-href="https://tc39.github.io/ecma262/#sec-createbytedatablock">CreateByteDataBlock</dfn> abstract operation</li>
29062907
<li>The <dfn data-x-href="https://tc39.github.io/ecma262/#sec-createdataproperty">CreateDataProperty</dfn> abstract operation</li>
29072908
<li>The <dfn data-x-href="https://tc39.github.io/ecma262/#sec-detacharraybuffer">DetachArrayBuffer</dfn> abstract operation</li>
29082909
<li>The <dfn data-x="js-EnqueueJob" data-x-href="https://tc39.github.io/ecma262/#sec-enqueuejob">EnqueueJob</dfn> abstract operation</li>
@@ -7886,9 +7887,20 @@ interface <dfn>DOMStringList</dfn> {
78867887
<li><p>If <span>IsDetachedBuffer</span>(<var>value</var>) is true, then throw a
78877888
<span>"<code>DataCloneError</code>"</span> <code>DOMException</code>.</p></li>
78887889

7890+
<li><p>Let <var>size</var> be <var>value</var>.[[ArrayBufferByteLength]].</p></li>
7891+
7892+
<li>
7893+
<p>Let <var>dataCopy</var> be ? <span>CreateByteDataBlock</span>(<var>size</var>).</p>
7894+
7895+
<p class="note">This can throw a <code data-x="js-RangeError">RangeError</code> exception upon
7896+
allocation failure.</p>
7897+
</li>
7898+
7899+
<li><p>Perform ! <span>CopyDataBlockBytes</span>(<var>dataCopy</var>, 0,
7900+
<var>value</var>.[[ArrayBufferData]], 0, <var>size</var>).</p></li>
7901+
78897902
<li><p>Set <var>serialized</var> to { [[Type]]: "ArrayBuffer", [[ArrayBufferData]]:
7890-
<var>value</var>.[[ArrayBufferData]], [[ArrayBufferByteLength]]:
7891-
<var>value</var>.[[ArrayBufferByteLength]] }.</p></li>
7903+
<var>dataCopy</var>, [[ArrayBufferByteLength]]: <var>size</var> }.</p></li>
78927904
</ol>
78937905
</li>
78947906

@@ -8664,7 +8676,7 @@ interface <dfn>DOMStringList</dfn> {
86648676
<li><p>Let <var>outputArrayBuffer</var> be the <span>%ArrayBuffer%</span> intrinsic object in
86658677
<var>targetRealm</var>.
86668678

8667-
<li><p>Let <var>output</var> be ? <span>CloneArrayBuffer</span>(<var>input</var>, 0,
8679+
<li><p>Let <var>output</var> be ? CloneArrayBuffer(<var>input</var>, 0,
86688680
<var>outputArrayBuffer</var>).</p></li>
86698681
</ol>
86708682
</li>

0 commit comments

Comments
 (0)