diff --git a/source b/source index 2f6d690e48d..4184cf3b7eb 100644 --- a/source +++ b/source @@ -3047,6 +3047,7 @@ a.setAttribute('href', 'https://example.com/'); // change the content attribute
  • The IsConstructor abstract operation
  • The IsDataDescriptor abstract operation
  • The IsDetachedBuffer abstract operation
  • +
  • The IsImmutableBuffer abstract operation
  • The IsSharedArrayBuffer abstract operation
  • The NewObjectEnvironment abstract operation
  • The NormalCompletion abstract operation
  • @@ -9744,6 +9745,23 @@ interface DOMStringList { +
  • +

    Otherwise, if IsImmutableBuffer(value) is true, then:

    + +
      +
    1. +

      Set serialized to { [[Type]]: "ImmutableArrayBuffer", [[ArrayBufferData]]: + value.[[ArrayBufferData]], [[ArrayBufferByteLength]]: + value.[[ArrayBufferByteLength]] }.

      + +

      To support deserialization by independent processes at arbitrary points in + the future, the contents of value.[[ArrayBufferData]] need to be + preserved when forStorage is true. But otherwise, a pointer referencing + value.[[ArrayBufferData]] is expected to suffice.

      +
    2. +
    +
  • +
  • Otherwise:

    @@ -9791,7 +9809,8 @@ interface DOMStringList { memory).

  • Assert: bufferSerialized.[[Type]] is "ArrayBuffer", - "ResizableArrayBuffer", "SharedArrayBuffer", or "GrowableSharedArrayBuffer".

  • + "ImmutableArrayBuffer", "ResizableArrayBuffer", "SharedArrayBuffer", or + "GrowableSharedArrayBuffer".

  • If value has a [[DataView]] internal slot, then set serialized to { [[Type]]: "ArrayBufferView", [[Constructor]]: "DataView", [[ArrayBufferSerialized]]: @@ -10186,6 +10205,20 @@ o.myself = o;

  • +
  • +

    Otherwise, if serialized.[[Type]] is "ImmutableArrayBuffer", then:

    + +
      +
    1. Set value to a new ArrayBuffer object in targetRealm whose + [[ArrayBufferData]] internal slot value is serialized.[[ArrayBufferData]], whose + [[ArrayBufferByteLength]] internal slot value is + serialized.[[ArrayBufferByteLength]], and whose [[ArrayBufferIsImmutable]] internal + slot value is undefined.

    2. + +
    3. Assert: IsImmutableBuffer(value) is true.

    4. +
    +
  • +
  • Otherwise, if serialized.[[Type]] is "ArrayBuffer", then set value to a new ArrayBuffer object in targetRealm whose [[ArrayBufferData]] internal slot value @@ -10462,8 +10495,9 @@ o.myself = o; [[Detached]] internal slot, then throw a "DataCloneError" DOMException.

  • -
  • If transferable has an [[ArrayBufferData]] internal slot and - IsSharedArrayBuffer(transferable) is true, then throw a +

  • If transferable has an [[ArrayBufferData]] internal slot and either + IsSharedArrayBuffer(transferable) is true or + IsImmutableBuffer(transferable) is true, then throw a "DataCloneError" DOMException.

  • If memory[transferable] exists,