| 1234567891011121314151617181920212223242526272829303132333435 |
- //-------------------------------------------------------------------------------------------------------
- // Copyright (C) Microsoft Corporation and contributors. All rights reserved.
- // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
- //-------------------------------------------------------------------------------------------------------
- function makeSharedArrayBuffer(length) {
- const pages = ((length / (64 * 1024))|0) + 1;
- const mem = new WebAssembly.Memory({initial: pages, maximum: pages, shared: true});
- if (!(mem.buffer instanceof SharedArrayBuffer)) {
- throw new Error("WebAssembly.Memory::buffer is not a SharedArrayBuffer");
- }
- return mem.buffer;
- }
- function modifyTests(tests) {
- return tests.map(test => {
- if (test.name !== "Atomics.wait index test") {
- return test;
- }
- test.body = () => {
- const length = ((64 * 1024)|0) / 4;
- var view = new Int32Array(makeSharedArrayBuffer(1));
- assert.doesNotThrow(() => Atomics.wait(view, 0, 0, 0), "Atomics.wait is allowed on the index 0, where the view's length is 2");
- assert.doesNotThrow(() => Atomics.wait(view, "0", 0, 0), "ToNumber : Atomics.wait is allowed on the index 0, where the view's length is 2");
- assert.throws(() => Atomics.wait(view, length, 0, 0), RangeError, "Index is greater than the view's length", "Access index is out of range");
- assert.throws(() => Atomics.wait(view, -1, 0, 0), RangeError, "Negative index is not allowed", "Access index is out of range");
- };
- return test;
- });
- }
- // Test to make sure we are able to create the WebAssemblySharedArrayBuffer
- makeSharedArrayBuffer(0);
- WScript.LoadScriptFile("../es7/atomics_test.js");
|