@@ -7650,6 +7650,10 @@ interface <dfn>DOMStringMap</dfn> {
7650
7650
<span>StructuredCloneWithTransfer</span> abstract operation directly. (Technically, by
7651
7651
<span>IsTransferable</span> and <span>TransferHelper</span>.)</p>
7652
7652
7653
+ <p class="note">SharedArrayBuffer objects are unique in that while they are <span>transferable
7654
+ objects</span>, they are not detached as a result of transfering. Therefore they can be
7655
+ transferred and used again. Only SharedArrayBuffer objects are given this capability.</p>
7656
+
7653
7657
<h4 id="structuredclonewithtransfer"><dfn data-export="">StructuredCloneWithTransfer</dfn> (
7654
7658
<var>input</var>, <var>transferList</var>, <var>targetRealm</var> )</h4>
7655
7659
@@ -8008,6 +8012,9 @@ interface <dfn>DOMStringMap</dfn> {
8008
8012
</ol>
8009
8013
</li>
8010
8014
8015
+ <li><p>Otherwise, if <var>O</var> has a [[SharedArrayBufferData]] internal slot, then return
8016
+ true.</p></li>
8017
+
8011
8018
<li>
8012
8019
<p>Otherwise, if <var>O</var> has a [[<span>Detached</span>]] internal slot, then:</p>
8013
8020
@@ -8035,12 +8042,19 @@ interface <dfn>DOMStringMap</dfn> {
8035
8042
[[ArrayBufferData]] internal slot value of <var>input</var>.</p></li>
8036
8043
8037
8044
<li><p>Perform ! <span>DetachArrayBuffer</span>(<var>input</var>).</p></li>
8038
-
8039
- <li><p>Return <var>output</var>.</p></li>
8040
8045
</ol>
8041
8046
</li>
8042
8047
8043
- <li><p>Return ? <var>input</var>.[[<span>Transfer</span>]](<var>targetRealm</var>).</p></li>
8048
+ <li><p>Otherwise, if <var>input</var> has a [[SharedArrayBufferData]] internal slot, then let
8049
+ <var>output</var> be a new SharedArrayBuffer object in <var>targetRealm</var> whose
8050
+ [[SharedArrayBufferByteLength]] internal slot value is the [[SharedArrayBufferByteLength]]
8051
+ internal slot value of <var>input</var>, and whose [[SharedArrayBufferData]] internal slot value
8052
+ is the [[SharedArrayBufferData]] internal slot value of <var>input</var>.</p></li>
8053
+
8054
+ <li><p>Otherwise, let <var>output</var> be ?
8055
+ <var>input</var>.[[<span>Transfer</span>]](<var>targetRealm</var>).</p></li>
8056
+
8057
+ <li><p>Return <var>output</var>.</p></li>
8044
8058
</ol>
8045
8059
8046
8060
<h4>Monkey patch for <code>Blob</code> and <code>FileList</code> objects</h4>
@@ -117018,6 +117032,7 @@ INSERT INTERFACES HERE
117018
117032
117019
117033
<dt id="refsJAVASCRIPT">[JAVASCRIPT]</dt>
117020
117034
<dd><cite><a href="https://tc39.github.io/ecma262/">ECMAScript Language Specification</a></cite>. Ecma International.</dd>
117035
+ <dd><cite><a href="https://tc39.github.io/ecmascript_sharedmem/shmem.html">ECMAScript Shared Memory and Atomics</a></cite>. Ecma International.</dd>
117021
117036
<dd><cite><a href="https://javascript.spec.whatwg.org/">JavaScript Standard</a></cite>, M. Bynens. WHATWG.</dd>
117022
117037
117023
117038
<dt id="refsJLREQ">[JLREQ]</dt>
0 commit comments