Skip to content

Commit 2f4d3cb

Browse files
committed
Preserve ArrayBuffer immutability in Structured{Serialize,Deserialize}
1 parent 06282ff commit 2f4d3cb

File tree

1 file changed

+26
-1
lines changed

1 file changed

+26
-1
lines changed

source

+26-1
Original file line numberDiff line numberDiff line change
@@ -9745,6 +9745,16 @@ interface <dfn interface>DOMStringList</dfn> {
97459745
</ol>
97469746
</li>
97479747

9748+
<li>
9749+
<p>Otherwise, if <span>IsImmutableBuffer</span>(<var>value</var>) is true, then:</p>
9750+
9751+
<ol>
9752+
<li><p>Set <var>serialized</var> to { [[Type]]: "ImmutableArrayBuffer", [[ArrayBufferData]]:
9753+
<var>value</var>.[[ArrayBufferData]], [[ArrayBufferByteLength]]:
9754+
<var>value</var>.[[ArrayBufferByteLength]] }.</p></li>
9755+
</ol>
9756+
</li>
9757+
97489758
<li>
97499759
<p>Otherwise:</p>
97509760

@@ -9792,7 +9802,8 @@ interface <dfn interface>DOMStringList</dfn> {
97929802
<var>memory</var>).</p></li>
97939803

97949804
<li><p><span>Assert</span>: <var>bufferSerialized</var>.[[Type]] is "ArrayBuffer",
9795-
"ResizableArrayBuffer", "SharedArrayBuffer", or "GrowableSharedArrayBuffer".</p></li>
9805+
"ImmutableArrayBuffer", "ResizableArrayBuffer", "SharedArrayBuffer", or
9806+
"GrowableSharedArrayBuffer".</p></li>
97969807

97979808
<li><p>If <var>value</var> has a [[DataView]] internal slot, then set <var>serialized</var> to
97989809
{ [[Type]]: "ArrayBufferView", [[Constructor]]: "DataView", [[ArrayBufferSerialized]]:
@@ -10187,6 +10198,20 @@ o.myself = o;</code></pre>
1018710198
</ol>
1018810199
</li>
1018910200

10201+
<li>
10202+
<p>Otherwise, if <var>serialized</var>.[[Type]] is "ImmutableArrayBuffer", then:</p>
10203+
10204+
<ol>
10205+
<li><p>Set <var>value</var> to a new ArrayBuffer object in <var>targetRealm</var> whose
10206+
[[ArrayBufferData]] internal slot value is <var>serialized</var>.[[ArrayBufferData]], whose
10207+
[[ArrayBufferByteLength]] internal slot value is
10208+
<var>serialized</var>.[[ArrayBufferByteLength]], and whose [[ArrayBufferIsImmutable]] internal
10209+
slot is present.</p></li>
10210+
10211+
<li><p><span>Assert</span>: <span>IsImmutableBuffer</span>(<var>value</var>) is true.</p></li>
10212+
</ol>
10213+
</li>
10214+
1019010215
<li>
1019110216
<p>Otherwise, if <var>serialized</var>.[[Type]] is "ArrayBuffer", then set <var>value</var> to a
1019210217
new ArrayBuffer object in <var>targetRealm</var> whose [[ArrayBufferData]] internal slot value

0 commit comments

Comments
 (0)