using Jint.Runtime; namespace Jint.Native; /// /// https://tc39.es/ecma262/#sec-sharedarraybuffer-objects /// internal sealed class JsSharedArrayBuffer : JsArrayBuffer { private readonly int _arrayBufferByteLengthData; internal JsSharedArrayBuffer( Engine engine, byte[] data, uint? arrayBufferMaxByteLength, uint arrayBufferByteLengthData) : base(engine, data, arrayBufferMaxByteLength) { if (arrayBufferByteLengthData > int.MaxValue) { Throw.RangeError(engine.Realm, "arrayBufferByteLengthData cannot be larger than int32.MaxValue"); } this._arrayBufferByteLengthData = (int) arrayBufferByteLengthData; } internal override int ArrayBufferByteLength => _arrayBufferByteLengthData; /// /// https://tc39.es/ecma262/#sec-createsharedbytedatablock /// internal static byte[] CreateSharedByteDataBlock(Realm realm, ulong byteLength) { if (byteLength > int.MaxValue) { Throw.RangeError(realm, "Array buffer allocation failed"); } return new byte[byteLength]; } internal override bool IsSharedArrayBuffer => true; }