1234567891011121314151617181920212223242526272829303132333435363738394041 |
- using Jint.Runtime;
- namespace Jint.Native;
- /// <summary>
- /// https://tc39.es/ecma262/#sec-sharedarraybuffer-objects
- /// </summary>
- 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;
- /// <summary>
- /// https://tc39.es/ecma262/#sec-createsharedbytedatablock
- /// </summary>
- 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;
- }
|