mirror of https://github.com/tc39/test262.git
Atomics: corrections
This commit is contained in:
parent
7e603ae236
commit
529cff8ee6
|
@ -6,7 +6,6 @@ description: |
|
||||||
defines:
|
defines:
|
||||||
- TypedArray
|
- TypedArray
|
||||||
- testWithBigIntTypedArrayConstructors
|
- testWithBigIntTypedArrayConstructors
|
||||||
- testWithNonShareableBigIntTypedArrayConstructors
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -39,12 +38,3 @@ function testWithBigIntTypedArrayConstructors(f, selected) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Calls the provided function for every NON SHARABLE bigint typed array constructor.
|
|
||||||
*
|
|
||||||
* @param {typedArrayConstructorCallback} f - the function to call for each typed array constructor.
|
|
||||||
*/
|
|
||||||
function testWithNonShareableBigIntTypedArrayConstructors(f) {
|
|
||||||
testWithBigIntTypedArrayConstructors(f, [BigUint64Array]);
|
|
||||||
}
|
|
||||||
|
|
|
@ -9,7 +9,8 @@ defines:
|
||||||
- intArrayConstructors
|
- intArrayConstructors
|
||||||
- TypedArray
|
- TypedArray
|
||||||
- testWithTypedArrayConstructors
|
- testWithTypedArrayConstructors
|
||||||
- testWithNonShareableTypedArrayConstructors
|
- testWithAtomicsFriendlyTypedArrayConstructors
|
||||||
|
- testWithNonAtomicsFriendlyTypedArrayConstructors
|
||||||
- testTypedArrayConversions
|
- testTypedArrayConversions
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
|
@ -63,21 +64,33 @@ function testWithTypedArrayConstructors(f, selected) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calls the provided function for every NON SHARABLE typed array constructor.
|
* Calls the provided function for every non-"Atomics Friendly" typed array constructor.
|
||||||
*
|
*
|
||||||
* @param {typedArrayConstructorCallback} f - the function to call for each typed array constructor.
|
* @param {typedArrayConstructorCallback} f - the function to call for each typed array constructor.
|
||||||
* @param {Array} selected - An optional Array with filtered typed arrays
|
* @param {Array} selected - An optional Array with filtered typed arrays
|
||||||
*/
|
*/
|
||||||
function testWithNonShareableTypedArrayConstructors(f) {
|
function testWithNonAtomicsFriendlyTypedArrayConstructors(f) {
|
||||||
testWithTypedArrayConstructors(f, [
|
testWithTypedArrayConstructors(f, [
|
||||||
Float64Array,
|
Float64Array,
|
||||||
Float32Array,
|
Float32Array,
|
||||||
|
Uint8ClampedArray
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calls the provided function for every "Atomics Friendly" typed array constructor.
|
||||||
|
*
|
||||||
|
* @param {typedArrayConstructorCallback} f - the function to call for each typed array constructor.
|
||||||
|
* @param {Array} selected - An optional Array with filtered typed arrays
|
||||||
|
*/
|
||||||
|
function testWithAtomicsFriendlyTypedArrayConstructors(f) {
|
||||||
|
testWithTypedArrayConstructors(f, [
|
||||||
|
Int32Array,
|
||||||
Int16Array,
|
Int16Array,
|
||||||
Int8Array,
|
Int8Array,
|
||||||
Uint32Array,
|
Uint32Array,
|
||||||
Uint16Array,
|
Uint16Array,
|
||||||
Uint8Array,
|
Uint8Array,
|
||||||
Uint8ClampedArray
|
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,8 +4,12 @@
|
||||||
esid: sec-atomics.add
|
esid: sec-atomics.add
|
||||||
description: >
|
description: >
|
||||||
Atomics.add will operate on TA when TA.buffer is not a SharedArrayBuffer
|
Atomics.add will operate on TA when TA.buffer is not a SharedArrayBuffer
|
||||||
|
includes: [testBigIntTypedArray.js]
|
||||||
features: [ArrayBuffer, Atomics, BigInt, TypedArray]
|
features: [ArrayBuffer, Atomics, BigInt, TypedArray]
|
||||||
---*/
|
---*/
|
||||||
const i64a = new BigInt64Array(new ArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 4));
|
testWithBigIntTypedArrayConstructors(TA => {
|
||||||
assert.sameValue(Atomics.add(i64a, 0, 1n), 0n, 'Atomics.add(i64a, 0, 1n) returns 0n');
|
const buffer = new ArrayBuffer(TA.BYTES_PER_ELEMENT * 4);
|
||||||
assert.sameValue(Atomics.load(i64a, 0), 1n, 'Atomics.load(i64a, 0) returns 1n');
|
const view = new TA(buffer);
|
||||||
|
assert.sameValue(Atomics.add(view, 0, 1n), 0n, 'Atomics.add(view, 0, 1n) returns 0n');
|
||||||
|
assert.sameValue(Atomics.load(view, 0), 1n, 'Atomics.load(view, 0) returns 1n');
|
||||||
|
});
|
||||||
|
|
|
@ -1,18 +0,0 @@
|
||||||
// Copyright (C) 2020 Rick Waldron. All rights reserved.
|
|
||||||
// This code is governed by the BSD license found in the LICENSE file.
|
|
||||||
/*---
|
|
||||||
esid: sec-atomics.add
|
|
||||||
description: >
|
|
||||||
Atomics.add throws when operating on non-sharable integer TypedArrays
|
|
||||||
includes: [testBigIntTypedArray.js]
|
|
||||||
features: [ArrayBuffer, Atomics, BigInt, TypedArray]
|
|
||||||
---*/
|
|
||||||
const buffer = new ArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 4);
|
|
||||||
|
|
||||||
testWithNonShareableBigIntTypedArrayConstructors(function(TA) {
|
|
||||||
const view = new TA(buffer);
|
|
||||||
|
|
||||||
assert.throws(TypeError, function() {
|
|
||||||
Atomics.add(view, 0, 1n);
|
|
||||||
}, `Atomics.add(new ${TA.name}(buffer), 0, 1n) throws TypeError`);
|
|
||||||
});
|
|
|
@ -5,13 +5,14 @@
|
||||||
esid: sec-atomics.add
|
esid: sec-atomics.add
|
||||||
description: >
|
description: >
|
||||||
Atomics.add will operate on TA when TA.buffer is not a SharedArrayBuffer
|
Atomics.add will operate on TA when TA.buffer is not a SharedArrayBuffer
|
||||||
|
includes: [testTypedArray.js]
|
||||||
features: [ArrayBuffer, Atomics, TypedArray]
|
features: [ArrayBuffer, Atomics, TypedArray]
|
||||||
---*/
|
---*/
|
||||||
|
testWithAtomicsFriendlyTypedArrayConstructors(TA => {
|
||||||
|
const view = new TA(
|
||||||
|
new ArrayBuffer(TA.BYTES_PER_ELEMENT * 4)
|
||||||
|
);
|
||||||
|
|
||||||
const i32a = new Int32Array(
|
assert.sameValue(Atomics.add(view, 0, 1), 0, 'Atomics.add(view, 0, 1) returns 0');
|
||||||
new ArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4)
|
assert.sameValue(Atomics.load(view, 0), 1, 'Atomics.load(view, 0) returns 1');
|
||||||
);
|
});
|
||||||
|
|
||||||
assert.sameValue(Atomics.add(i32a, 0, 1), 0, 'Atomics.add(i32a, 0, 1) returns 0');
|
|
||||||
assert.sameValue(Atomics.load(i32a, 0), 1, 'Atomics.load(i32a, 0) returns 1');
|
|
||||||
|
|
||||||
|
|
|
@ -8,10 +8,8 @@ description: >
|
||||||
includes: [testTypedArray.js]
|
includes: [testTypedArray.js]
|
||||||
features: [ArrayBuffer, Atomics, TypedArray]
|
features: [ArrayBuffer, Atomics, TypedArray]
|
||||||
---*/
|
---*/
|
||||||
|
testWithNonAtomicsFriendlyTypedArrayConstructors(TA => {
|
||||||
const buffer = new ArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4);
|
const buffer = new ArrayBuffer(TA.BYTES_PER_ELEMENT * 4);
|
||||||
|
|
||||||
testWithNonShareableTypedArrayConstructors(function(TA) {
|
|
||||||
const view = new TA(buffer);
|
const view = new TA(buffer);
|
||||||
|
|
||||||
assert.throws(TypeError, function() {
|
assert.throws(TypeError, function() {
|
||||||
|
|
|
@ -4,8 +4,12 @@
|
||||||
esid: sec-atomics.and
|
esid: sec-atomics.and
|
||||||
description: >
|
description: >
|
||||||
Atomics.and will operate on TA when TA.buffer is not a SharedArrayBuffer
|
Atomics.and will operate on TA when TA.buffer is not a SharedArrayBuffer
|
||||||
|
includes: [testBigIntTypedArray.js]
|
||||||
features: [ArrayBuffer, Atomics, BigInt, TypedArray]
|
features: [ArrayBuffer, Atomics, BigInt, TypedArray]
|
||||||
---*/
|
---*/
|
||||||
const i64a = new BigInt64Array(new ArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 4));
|
testWithBigIntTypedArrayConstructors(TA => {
|
||||||
assert.sameValue(Atomics.and(i64a, 0, 1n), 0n, 'Atomics.and(i64a, 0, 1n) returns 0n');
|
const buffer = new ArrayBuffer(TA.BYTES_PER_ELEMENT * 4);
|
||||||
assert.sameValue(Atomics.load(i64a, 0), 0n, 'Atomics.load(i64a, 0) returns 0n');
|
const view = new TA(buffer);
|
||||||
|
assert.sameValue(Atomics.and(view, 0, 1n), 0n, 'Atomics.and(view, 0, 1n) returns 0n');
|
||||||
|
assert.sameValue(Atomics.load(view, 0), 0n, 'Atomics.load(view, 0) returns 0n');
|
||||||
|
});
|
||||||
|
|
|
@ -1,18 +0,0 @@
|
||||||
// Copyright (C) 2020 Rick Waldron. All rights reserved.
|
|
||||||
// This code is governed by the BSD license found in the LICENSE file.
|
|
||||||
/*---
|
|
||||||
esid: sec-atomics.and
|
|
||||||
description: >
|
|
||||||
Atomics.and throws when operating on non-sharable integer TypedArrays
|
|
||||||
includes: [testBigIntTypedArray.js]
|
|
||||||
features: [ArrayBuffer, Atomics, BigInt, TypedArray]
|
|
||||||
---*/
|
|
||||||
const buffer = new ArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 4);
|
|
||||||
|
|
||||||
testWithNonShareableBigIntTypedArrayConstructors(function(TA) {
|
|
||||||
const view = new TA(buffer);
|
|
||||||
|
|
||||||
assert.throws(TypeError, function() {
|
|
||||||
Atomics.and(view, 0, 1n);
|
|
||||||
}, `Atomics.and(new ${TA.name}(buffer), 0, 1n) throws TypeError`);
|
|
||||||
});
|
|
|
@ -5,13 +5,14 @@
|
||||||
esid: sec-atomics.and
|
esid: sec-atomics.and
|
||||||
description: >
|
description: >
|
||||||
Atomics.and will operate on TA when TA.buffer is not a SharedArrayBuffer
|
Atomics.and will operate on TA when TA.buffer is not a SharedArrayBuffer
|
||||||
|
includes: [testTypedArray.js]
|
||||||
features: [ArrayBuffer, Atomics, TypedArray]
|
features: [ArrayBuffer, Atomics, TypedArray]
|
||||||
---*/
|
---*/
|
||||||
|
testWithAtomicsFriendlyTypedArrayConstructors(TA => {
|
||||||
|
const view = new TA(
|
||||||
|
new ArrayBuffer(TA.BYTES_PER_ELEMENT * 4)
|
||||||
|
);
|
||||||
|
|
||||||
const i32a = new Int32Array(
|
assert.sameValue(Atomics.and(view, 0, 1), 0, 'Atomics.and(view, 0, 1) returns 0');
|
||||||
new ArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4)
|
assert.sameValue(Atomics.load(view, 0), 0, 'Atomics.load(view, 0) returns 0');
|
||||||
);
|
});
|
||||||
|
|
||||||
assert.sameValue(Atomics.and(i32a, 0, 1), 0, 'Atomics.and(i32a, 0, 1) returns 0');
|
|
||||||
assert.sameValue(Atomics.load(i32a, 0), 0, 'Atomics.load(i32a, 0) returns 0');
|
|
||||||
|
|
||||||
|
|
|
@ -8,10 +8,8 @@ description: >
|
||||||
includes: [testTypedArray.js]
|
includes: [testTypedArray.js]
|
||||||
features: [ArrayBuffer, Atomics, TypedArray]
|
features: [ArrayBuffer, Atomics, TypedArray]
|
||||||
---*/
|
---*/
|
||||||
|
testWithNonAtomicsFriendlyTypedArrayConstructors(TA => {
|
||||||
const buffer = new ArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4);
|
const buffer = new ArrayBuffer(TA.BYTES_PER_ELEMENT * 4);
|
||||||
|
|
||||||
testWithNonShareableTypedArrayConstructors(function(TA) {
|
|
||||||
const view = new TA(buffer);
|
const view = new TA(buffer);
|
||||||
|
|
||||||
assert.throws(TypeError, function() {
|
assert.throws(TypeError, function() {
|
||||||
|
|
|
@ -4,8 +4,12 @@
|
||||||
esid: sec-atomics.compareExchange
|
esid: sec-atomics.compareExchange
|
||||||
description: >
|
description: >
|
||||||
Atomics.compareExchange will operate on TA when TA.buffer is not a SharedArrayBuffer
|
Atomics.compareExchange will operate on TA when TA.buffer is not a SharedArrayBuffer
|
||||||
|
includes: [testBigIntTypedArray.js]
|
||||||
features: [ArrayBuffer, Atomics, BigInt, TypedArray]
|
features: [ArrayBuffer, Atomics, BigInt, TypedArray]
|
||||||
---*/
|
---*/
|
||||||
const i64a = new BigInt64Array(new ArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 4));
|
testWithBigIntTypedArrayConstructors(TA => {
|
||||||
assert.sameValue(Atomics.compareExchange(i64a, 0, 0n, 1n), 0n, 'Atomics.compareExchange(i64a, 0, 0n, 1n) returns 0n');
|
const buffer = new ArrayBuffer(TA.BYTES_PER_ELEMENT * 4);
|
||||||
assert.sameValue(Atomics.load(i64a, 0), 1n, 'Atomics.load(i64a, 0) returns 1n');
|
const view = new TA(buffer);
|
||||||
|
assert.sameValue(Atomics.compareExchange(view, 0, 0n, 1n), 0n, 'Atomics.compareExchange(view, 0, 0n, 1n) returns 0n');
|
||||||
|
assert.sameValue(Atomics.load(view, 0), 1n, 'Atomics.load(view, 0) returns 1n');
|
||||||
|
});
|
||||||
|
|
|
@ -1,18 +0,0 @@
|
||||||
// Copyright (C) 2020 Rick Waldron. All rights reserved.
|
|
||||||
// This code is governed by the BSD license found in the LICENSE file.
|
|
||||||
/*---
|
|
||||||
esid: sec-atomics.compareExchange
|
|
||||||
description: >
|
|
||||||
Atomics.compareExchange throws when operating on non-sharable integer TypedArrays
|
|
||||||
includes: [testBigIntTypedArray.js]
|
|
||||||
features: [ArrayBuffer, Atomics, BigInt, TypedArray]
|
|
||||||
---*/
|
|
||||||
const buffer = new ArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 4);
|
|
||||||
|
|
||||||
testWithNonShareableBigIntTypedArrayConstructors(function(TA) {
|
|
||||||
const view = new TA(buffer);
|
|
||||||
|
|
||||||
assert.throws(TypeError, function() {
|
|
||||||
Atomics.compareExchange(view, 0, 0n, 0n);
|
|
||||||
}, `Atomics.compareExchange(new ${TA.name}(buffer), 0, 0n, 0n) throws TypeError`);
|
|
||||||
});
|
|
|
@ -5,13 +5,14 @@
|
||||||
esid: sec-atomics.compareExchange
|
esid: sec-atomics.compareExchange
|
||||||
description: >
|
description: >
|
||||||
Atomics.compareExchange will operate on TA when TA.buffer is not a SharedArrayBuffer
|
Atomics.compareExchange will operate on TA when TA.buffer is not a SharedArrayBuffer
|
||||||
|
includes: [testTypedArray.js]
|
||||||
features: [ArrayBuffer, Atomics, TypedArray]
|
features: [ArrayBuffer, Atomics, TypedArray]
|
||||||
---*/
|
---*/
|
||||||
|
testWithAtomicsFriendlyTypedArrayConstructors(TA => {
|
||||||
|
const view = new TA(
|
||||||
|
new ArrayBuffer(TA.BYTES_PER_ELEMENT * 4)
|
||||||
|
);
|
||||||
|
|
||||||
const i32a = new Int32Array(
|
assert.sameValue(Atomics.compareExchange(view, 0, 0, 1), 0, 'Atomics.compareExchange(view, 0, 0, 1) returns 0');
|
||||||
new ArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4)
|
assert.sameValue(Atomics.load(view, 0), 1, 'Atomics.load(view, 0) returns 1');
|
||||||
);
|
});
|
||||||
|
|
||||||
assert.sameValue(Atomics.compareExchange(i32a, 0, 0, 1), 0, 'Atomics.compareExchange(i32a, 0, 0, 1) returns 0');
|
|
||||||
assert.sameValue(Atomics.load(i32a, 0), 1, 'Atomics.load(i32a, 0) returns 1');
|
|
||||||
|
|
||||||
|
|
|
@ -8,10 +8,8 @@ description: >
|
||||||
includes: [testTypedArray.js]
|
includes: [testTypedArray.js]
|
||||||
features: [ArrayBuffer, Atomics, TypedArray]
|
features: [ArrayBuffer, Atomics, TypedArray]
|
||||||
---*/
|
---*/
|
||||||
|
testWithNonAtomicsFriendlyTypedArrayConstructors(TA => {
|
||||||
const buffer = new ArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4);
|
const buffer = new ArrayBuffer(TA.BYTES_PER_ELEMENT * 4);
|
||||||
|
|
||||||
testWithNonShareableTypedArrayConstructors(function(TA) {
|
|
||||||
const view = new TA(buffer);
|
const view = new TA(buffer);
|
||||||
|
|
||||||
assert.throws(TypeError, function() {
|
assert.throws(TypeError, function() {
|
||||||
|
|
|
@ -4,8 +4,12 @@
|
||||||
esid: sec-atomics.exchange
|
esid: sec-atomics.exchange
|
||||||
description: >
|
description: >
|
||||||
Atomics.exchange will operate on TA when TA.buffer is not a SharedArrayBuffer
|
Atomics.exchange will operate on TA when TA.buffer is not a SharedArrayBuffer
|
||||||
|
includes: [testBigIntTypedArray.js]
|
||||||
features: [ArrayBuffer, Atomics, BigInt, TypedArray]
|
features: [ArrayBuffer, Atomics, BigInt, TypedArray]
|
||||||
---*/
|
---*/
|
||||||
const i64a = new BigInt64Array(new ArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 4));
|
testWithBigIntTypedArrayConstructors(TA => {
|
||||||
assert.sameValue(Atomics.exchange(i64a, 0, 1n), 0n, 'Atomics.exchange(i64a, 0, 1n) returns 0n');
|
const buffer = new ArrayBuffer(TA.BYTES_PER_ELEMENT * 4);
|
||||||
assert.sameValue(Atomics.load(i64a, 0), 1n, 'Atomics.load(i64a, 0) returns 1n');
|
const view = new TA(buffer);
|
||||||
|
assert.sameValue(Atomics.exchange(view, 0, 1n), 0n, 'Atomics.exchange(view, 0, 1n) returns 0n');
|
||||||
|
assert.sameValue(Atomics.load(view, 0), 1n, 'Atomics.load(view, 0) returns 1n');
|
||||||
|
});
|
||||||
|
|
|
@ -1,18 +0,0 @@
|
||||||
// Copyright (C) 2020 Rick Waldron. All rights reserved.
|
|
||||||
// This code is governed by the BSD license found in the LICENSE file.
|
|
||||||
/*---
|
|
||||||
esid: sec-atomics.exchange
|
|
||||||
description: >
|
|
||||||
Atomics.exchange throws when operating on non-sharable integer TypedArrays
|
|
||||||
includes: [testBigIntTypedArray.js]
|
|
||||||
features: [ArrayBuffer, Atomics, BigInt, TypedArray]
|
|
||||||
---*/
|
|
||||||
const buffer = new ArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 4);
|
|
||||||
|
|
||||||
testWithNonShareableBigIntTypedArrayConstructors(function(TA) {
|
|
||||||
const view = new TA(buffer);
|
|
||||||
|
|
||||||
assert.throws(TypeError, function() {
|
|
||||||
Atomics.exchange(view, 0, 0n);
|
|
||||||
}, `Atomics.exchange(new ${TA.name}(buffer), 0, 0n) throws TypeError`);
|
|
||||||
});
|
|
|
@ -5,13 +5,14 @@
|
||||||
esid: sec-atomics.exchange
|
esid: sec-atomics.exchange
|
||||||
description: >
|
description: >
|
||||||
Atomics.exchange will operate on TA when TA.buffer is not a SharedArrayBuffer
|
Atomics.exchange will operate on TA when TA.buffer is not a SharedArrayBuffer
|
||||||
|
includes: [testTypedArray.js]
|
||||||
features: [ArrayBuffer, Atomics, TypedArray]
|
features: [ArrayBuffer, Atomics, TypedArray]
|
||||||
---*/
|
---*/
|
||||||
|
testWithAtomicsFriendlyTypedArrayConstructors(TA => {
|
||||||
|
const view = new TA(
|
||||||
|
new ArrayBuffer(TA.BYTES_PER_ELEMENT * 4)
|
||||||
|
);
|
||||||
|
|
||||||
const i32a = new Int32Array(
|
assert.sameValue(Atomics.exchange(view, 0, 1), 0, 'Atomics.exchange(view, 0, 1) returns 0');
|
||||||
new ArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4)
|
assert.sameValue(Atomics.load(view, 0), 1, 'Atomics.load(view, 0) returns 1');
|
||||||
);
|
});
|
||||||
|
|
||||||
assert.sameValue(Atomics.exchange(i32a, 0, 1), 0, 'Atomics.exchange(i32a, 0, 1) returns 0');
|
|
||||||
assert.sameValue(Atomics.load(i32a, 0), 1, 'Atomics.load(i32a, 0) returns 1');
|
|
||||||
|
|
||||||
|
|
|
@ -8,12 +8,9 @@ description: >
|
||||||
includes: [testTypedArray.js]
|
includes: [testTypedArray.js]
|
||||||
features: [ArrayBuffer, Atomics, TypedArray]
|
features: [ArrayBuffer, Atomics, TypedArray]
|
||||||
---*/
|
---*/
|
||||||
|
testWithNonAtomicsFriendlyTypedArrayConstructors(TA => {
|
||||||
const buffer = new ArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4);
|
const buffer = new ArrayBuffer(TA.BYTES_PER_ELEMENT * 4);
|
||||||
|
|
||||||
testWithNonShareableTypedArrayConstructors(function(TA) {
|
|
||||||
const view = new TA(buffer);
|
const view = new TA(buffer);
|
||||||
|
|
||||||
assert.throws(TypeError, function() {
|
assert.throws(TypeError, function() {
|
||||||
Atomics.add(view, 0, 1);
|
Atomics.add(view, 0, 1);
|
||||||
}, `Atomics.add(new ${TA.name}(buffer), 0, 1) throws TypeError`);
|
}, `Atomics.add(new ${TA.name}(buffer), 0, 1) throws TypeError`);
|
||||||
|
|
|
@ -4,7 +4,11 @@
|
||||||
esid: sec-atomics.load
|
esid: sec-atomics.load
|
||||||
description: >
|
description: >
|
||||||
Atomics.load will operate on TA when TA.buffer is not a SharedArrayBuffer
|
Atomics.load will operate on TA when TA.buffer is not a SharedArrayBuffer
|
||||||
|
includes: [testBigIntTypedArray.js]
|
||||||
features: [ArrayBuffer, Atomics, BigInt, TypedArray]
|
features: [ArrayBuffer, Atomics, BigInt, TypedArray]
|
||||||
---*/
|
---*/
|
||||||
const i64a = new BigInt64Array(new ArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 4));
|
testWithBigIntTypedArrayConstructors(TA => {
|
||||||
assert.sameValue(Atomics.load(i64a, 0), 0n, 'Atomics.load(i64a, 0) returns 0n');
|
const buffer = new ArrayBuffer(TA.BYTES_PER_ELEMENT * 4);
|
||||||
|
const view = new TA(buffer);
|
||||||
|
assert.sameValue(Atomics.load(view, 0), 0n, 'Atomics.load(view, 0) returns 0n');
|
||||||
|
});
|
||||||
|
|
|
@ -1,19 +0,0 @@
|
||||||
// Copyright (C) 2020 Rick Waldron. All rights reserved.
|
|
||||||
// This code is governed by the BSD license found in the LICENSE file.
|
|
||||||
|
|
||||||
/*---
|
|
||||||
esid: sec-atomics.load
|
|
||||||
description: >
|
|
||||||
Atomics.load throws when operating on non-sharable integer TypedArrays
|
|
||||||
includes: [testBigIntTypedArray.js]
|
|
||||||
features: [ArrayBuffer, Atomics, BigInt, TypedArray]
|
|
||||||
---*/
|
|
||||||
|
|
||||||
const buffer = new ArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 4);
|
|
||||||
|
|
||||||
testWithNonShareableBigIntTypedArrayConstructors(function(TA) {
|
|
||||||
const view = new TA(buffer);
|
|
||||||
assert.throws(TypeError, function() {
|
|
||||||
Atomics.load(view, 0);
|
|
||||||
}, `Atomics.load(new ${TA.name}(buffer), 0) throws TypeError`);
|
|
||||||
});
|
|
|
@ -5,11 +5,13 @@
|
||||||
esid: sec-atomics.load
|
esid: sec-atomics.load
|
||||||
description: >
|
description: >
|
||||||
Atomics.load will operate on TA when TA.buffer is not a SharedArrayBuffer
|
Atomics.load will operate on TA when TA.buffer is not a SharedArrayBuffer
|
||||||
|
includes: [testTypedArray.js]
|
||||||
features: [ArrayBuffer, Atomics, TypedArray]
|
features: [ArrayBuffer, Atomics, TypedArray]
|
||||||
---*/
|
---*/
|
||||||
|
testWithAtomicsFriendlyTypedArrayConstructors(TA => {
|
||||||
|
const view = new TA(
|
||||||
|
new ArrayBuffer(TA.BYTES_PER_ELEMENT * 4)
|
||||||
|
);
|
||||||
|
|
||||||
const i32a = new Int32Array(
|
assert.sameValue(Atomics.load(view, 0), 0, 'Atomics.load(view, 0) returns 0');
|
||||||
new ArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4)
|
});
|
||||||
);
|
|
||||||
|
|
||||||
assert.sameValue(Atomics.load(i32a, 0), 0, 'Atomics.load(i32a, 0) returns 0');
|
|
||||||
|
|
|
@ -8,10 +8,8 @@ description: >
|
||||||
includes: [testTypedArray.js]
|
includes: [testTypedArray.js]
|
||||||
features: [ArrayBuffer, Atomics, TypedArray]
|
features: [ArrayBuffer, Atomics, TypedArray]
|
||||||
---*/
|
---*/
|
||||||
|
testWithNonAtomicsFriendlyTypedArrayConstructors(TA => {
|
||||||
const buffer = new ArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4);
|
const buffer = new ArrayBuffer(TA.BYTES_PER_ELEMENT * 4);
|
||||||
|
|
||||||
testWithNonShareableTypedArrayConstructors(function(TA) {
|
|
||||||
const view = new TA(buffer);
|
const view = new TA(buffer);
|
||||||
assert.throws(TypeError, function() {
|
assert.throws(TypeError, function() {
|
||||||
Atomics.load(view, 0);
|
Atomics.load(view, 0);
|
||||||
|
|
|
@ -31,5 +31,3 @@ const poisoned = {
|
||||||
assert.throws(Test262Error, function() {
|
assert.throws(Test262Error, function() {
|
||||||
Atomics.notify(i64a, poisoned, 0);
|
Atomics.notify(i64a, poisoned, 0);
|
||||||
}, '`Atomics.notify(i64a, poisoned, 0)` throws Test262Error');
|
}, '`Atomics.notify(i64a, poisoned, 0)` throws Test262Error');
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
esid: sec-atomics.notify
|
esid: sec-atomics.notify
|
||||||
description: >
|
description: >
|
||||||
Atomics.notify throws on non-shared integer TypedArrays
|
Atomics.notify throws on non-shared integer TypedArrays
|
||||||
features: [ArrayBuffer, Atomics, BigInt TypedArray]
|
features: [ArrayBuffer, Atomics, BigInt, TypedArray]
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
const nonsab = new ArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 8);
|
const nonsab = new ArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 8);
|
||||||
|
|
|
@ -4,8 +4,12 @@
|
||||||
esid: sec-atomics.or
|
esid: sec-atomics.or
|
||||||
description: >
|
description: >
|
||||||
Atomics.or will operate on TA when TA.buffer is not a SharedArrayBuffer
|
Atomics.or will operate on TA when TA.buffer is not a SharedArrayBuffer
|
||||||
|
includes: [testBigIntTypedArray.js]
|
||||||
features: [ArrayBuffer, Atomics, BigInt, TypedArray]
|
features: [ArrayBuffer, Atomics, BigInt, TypedArray]
|
||||||
---*/
|
---*/
|
||||||
const i64a = new BigInt64Array(new ArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 4));
|
testWithBigIntTypedArrayConstructors(TA => {
|
||||||
assert.sameValue(Atomics.or(i64a, 0, 1n), 0n, 'Atomics.or(i64a, 0, 1n) returns 0n');
|
const buffer = new ArrayBuffer(TA.BYTES_PER_ELEMENT * 4);
|
||||||
assert.sameValue(Atomics.load(i64a, 0), 1n, 'Atomics.load(i64a, 0) returns 1n');
|
const view = new TA(buffer);
|
||||||
|
assert.sameValue(Atomics.or(view, 0, 1n), 0n, 'Atomics.or(view, 0, 1n) returns 0n');
|
||||||
|
assert.sameValue(Atomics.load(view, 0), 1n, 'Atomics.load(view, 0) returns 1n');
|
||||||
|
});
|
||||||
|
|
|
@ -1,18 +0,0 @@
|
||||||
// Copyright (C) 2020 Rick Waldron. All rights reserved.
|
|
||||||
// This code is governed by the BSD license found in the LICENSE file.
|
|
||||||
/*---
|
|
||||||
esid: sec-atomics.or
|
|
||||||
description: >
|
|
||||||
Atomics.or throws when operating on non-sharable integer TypedArrays
|
|
||||||
includes: [testBigIntTypedArray.js]
|
|
||||||
features: [ArrayBuffer, Atomics, BigInt, TypedArray]
|
|
||||||
---*/
|
|
||||||
const buffer = new ArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 4);
|
|
||||||
|
|
||||||
testWithNonShareableBigIntTypedArrayConstructors(function(TA) {
|
|
||||||
const view = new TA(buffer);
|
|
||||||
|
|
||||||
assert.throws(TypeError, function() {
|
|
||||||
Atomics.or(view, 0, 1n);
|
|
||||||
}, `Atomics.or(new ${TA.name}(buffer), 0, 1n) throws TypeError`);
|
|
||||||
});
|
|
|
@ -5,13 +5,14 @@
|
||||||
esid: sec-atomics.or
|
esid: sec-atomics.or
|
||||||
description: >
|
description: >
|
||||||
Atomics.or will operate on TA when TA.buffer is not a SharedArrayBuffer
|
Atomics.or will operate on TA when TA.buffer is not a SharedArrayBuffer
|
||||||
|
includes: [testTypedArray.js]
|
||||||
features: [ArrayBuffer, Atomics, TypedArray]
|
features: [ArrayBuffer, Atomics, TypedArray]
|
||||||
---*/
|
---*/
|
||||||
|
testWithAtomicsFriendlyTypedArrayConstructors(TA => {
|
||||||
|
const view = new TA(
|
||||||
|
new ArrayBuffer(TA.BYTES_PER_ELEMENT * 4)
|
||||||
|
);
|
||||||
|
|
||||||
const i32a = new Int32Array(
|
assert.sameValue(Atomics.or(view, 0, 1), 0, 'Atomics.or(view, 0, 1) returns 0');
|
||||||
new ArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4)
|
assert.sameValue(Atomics.load(view, 0), 1, 'Atomics.load(view, 0) returns 1');
|
||||||
);
|
});
|
||||||
|
|
||||||
assert.sameValue(Atomics.or(i32a, 0, 1), 0, 'Atomics.or(i32a, 0, 1) returns 0');
|
|
||||||
assert.sameValue(Atomics.load(i32a, 0), 1, 'Atomics.load(i32a, 0) returns 1');
|
|
||||||
|
|
||||||
|
|
|
@ -8,10 +8,8 @@ description: >
|
||||||
includes: [testTypedArray.js]
|
includes: [testTypedArray.js]
|
||||||
features: [ArrayBuffer, Atomics, TypedArray]
|
features: [ArrayBuffer, Atomics, TypedArray]
|
||||||
---*/
|
---*/
|
||||||
|
testWithNonAtomicsFriendlyTypedArrayConstructors(TA => {
|
||||||
const buffer = new ArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4);
|
const buffer = new ArrayBuffer(TA.BYTES_PER_ELEMENT * 4);
|
||||||
|
|
||||||
testWithNonShareableTypedArrayConstructors(function(TA) {
|
|
||||||
const view = new TA(buffer);
|
const view = new TA(buffer);
|
||||||
|
|
||||||
assert.throws(TypeError, function() {
|
assert.throws(TypeError, function() {
|
||||||
|
|
|
@ -9,7 +9,7 @@ features: [ArrayBuffer, Atomics, BigInt, DataView, SharedArrayBuffer, Symbol, Ty
|
||||||
---*/
|
---*/
|
||||||
const buffer = new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 2);
|
const buffer = new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 2);
|
||||||
|
|
||||||
testWithBigIntTypedArrayConstructors(function(TA) {
|
testWithBigIntTypedArrayConstructors(TA => {
|
||||||
const view = new TA(buffer);
|
const view = new TA(buffer);
|
||||||
|
|
||||||
testWithAtomicsOutOfBoundsIndices(function(IdxGen) {
|
testWithAtomicsOutOfBoundsIndices(function(IdxGen) {
|
||||||
|
|
|
@ -4,8 +4,12 @@
|
||||||
esid: sec-atomics.store
|
esid: sec-atomics.store
|
||||||
description: >
|
description: >
|
||||||
Atomics.store will operate on TA when TA.buffer is not a SharedArrayBuffer
|
Atomics.store will operate on TA when TA.buffer is not a SharedArrayBuffer
|
||||||
|
includes: [testBigIntTypedArray.js]
|
||||||
features: [ArrayBuffer, Atomics, BigInt, TypedArray]
|
features: [ArrayBuffer, Atomics, BigInt, TypedArray]
|
||||||
---*/
|
---*/
|
||||||
const i64a = new BigInt64Array(new ArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 4));
|
testWithBigIntTypedArrayConstructors(TA => {
|
||||||
assert.sameValue(Atomics.store(i64a, 0, 1n), 1n, 'Atomics.store(i64a, 0, 1n) returns 1n');
|
const buffer = new ArrayBuffer(TA.BYTES_PER_ELEMENT * 4);
|
||||||
assert.sameValue(Atomics.load(i64a, 0), 1n, 'Atomics.load(i64a, 0) returns 1n');
|
const view = new TA(buffer);
|
||||||
|
assert.sameValue(Atomics.store(view, 0, 1n), 1n, 'Atomics.store(view, 0, 1n) returns 1n');
|
||||||
|
assert.sameValue(Atomics.load(view, 0), 1n, 'Atomics.load(view, 0) returns 1n');
|
||||||
|
});
|
||||||
|
|
|
@ -1,18 +0,0 @@
|
||||||
// Copyright (C) 2020 Rick Waldron. All rights reserved.
|
|
||||||
// This code is governed by the BSD license found in the LICENSE file.
|
|
||||||
/*---
|
|
||||||
esid: sec-atomics.store
|
|
||||||
description: >
|
|
||||||
Atomics.store throws when operating on non-sharable integer TypedArrays
|
|
||||||
includes: [testBigIntTypedArray.js]
|
|
||||||
features: [ArrayBuffer, Atomics, BigInt, TypedArray]
|
|
||||||
---*/
|
|
||||||
const buffer = new ArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 4);
|
|
||||||
|
|
||||||
testWithNonShareableBigIntTypedArrayConstructors(function(TA) {
|
|
||||||
const view = new TA(buffer);
|
|
||||||
|
|
||||||
assert.throws(TypeError, function() {
|
|
||||||
Atomics.store(view, 0, 1n);
|
|
||||||
}, `Atomics.store(new ${TA.name}(buffer), 0, 1n) throws TypeError`);
|
|
||||||
});
|
|
|
@ -5,13 +5,14 @@
|
||||||
esid: sec-atomics.store
|
esid: sec-atomics.store
|
||||||
description: >
|
description: >
|
||||||
Atomics.store will operate on TA when TA.buffer is not a SharedArrayBuffer
|
Atomics.store will operate on TA when TA.buffer is not a SharedArrayBuffer
|
||||||
|
includes: [testTypedArray.js]
|
||||||
features: [ArrayBuffer, Atomics, TypedArray]
|
features: [ArrayBuffer, Atomics, TypedArray]
|
||||||
---*/
|
---*/
|
||||||
|
testWithAtomicsFriendlyTypedArrayConstructors(TA => {
|
||||||
|
const view = new TA(
|
||||||
|
new ArrayBuffer(TA.BYTES_PER_ELEMENT * 4)
|
||||||
|
);
|
||||||
|
|
||||||
const i32a = new Int32Array(
|
assert.sameValue(Atomics.store(view, 0, 1), 1, 'Atomics.store(view, 0, 1) returns 1');
|
||||||
new ArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4)
|
assert.sameValue(Atomics.load(view, 0), 1, 'Atomics.load(view, 0) returns 1');
|
||||||
);
|
});
|
||||||
|
|
||||||
assert.sameValue(Atomics.store(i32a, 0, 1), 1, 'Atomics.store(i32a, 0, 1) returns 1');
|
|
||||||
assert.sameValue(Atomics.load(i32a, 0), 1, 'Atomics.load(i32a, 0) returns 1');
|
|
||||||
|
|
||||||
|
|
|
@ -8,10 +8,8 @@ description: >
|
||||||
includes: [testTypedArray.js]
|
includes: [testTypedArray.js]
|
||||||
features: [ArrayBuffer, Atomics, TypedArray]
|
features: [ArrayBuffer, Atomics, TypedArray]
|
||||||
---*/
|
---*/
|
||||||
|
testWithNonAtomicsFriendlyTypedArrayConstructors(TA => {
|
||||||
const buffer = new ArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4);
|
const buffer = new ArrayBuffer(TA.BYTES_PER_ELEMENT * 4);
|
||||||
|
|
||||||
testWithNonShareableTypedArrayConstructors(function(TA) {
|
|
||||||
const view = new TA(buffer);
|
const view = new TA(buffer);
|
||||||
|
|
||||||
assert.throws(TypeError, function() {
|
assert.throws(TypeError, function() {
|
||||||
|
|
|
@ -4,9 +4,13 @@
|
||||||
esid: sec-atomics.sub
|
esid: sec-atomics.sub
|
||||||
description: >
|
description: >
|
||||||
Atomics.sub will operate on TA when TA.buffer is not a SharedArrayBuffer
|
Atomics.sub will operate on TA when TA.buffer is not a SharedArrayBuffer
|
||||||
|
includes: [testBigIntTypedArray.js]
|
||||||
features: [ArrayBuffer, Atomics, BigInt, TypedArray]
|
features: [ArrayBuffer, Atomics, BigInt, TypedArray]
|
||||||
---*/
|
---*/
|
||||||
const i64a = new BigInt64Array(new ArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 4));
|
testWithBigIntTypedArrayConstructors(TA => {
|
||||||
assert.sameValue(Atomics.store(i64a, 0, 1n), 1n, 'Atomics.store(i64a, 0, 1n) returns 1n');
|
const buffer = new ArrayBuffer(TA.BYTES_PER_ELEMENT * 4);
|
||||||
assert.sameValue(Atomics.sub(i64a, 0, 1n), 1n, 'Atomics.sub(i64a, 0, 1n) returns 1n');
|
const view = new TA(buffer);
|
||||||
assert.sameValue(Atomics.load(i64a, 0), 0n, 'Atomics.load(i64a, 0) returns 0n');
|
assert.sameValue(Atomics.store(view, 0, 1n), 1n, 'Atomics.store(view, 0, 1n) returns 1n');
|
||||||
|
assert.sameValue(Atomics.sub(view, 0, 1n), 1n, 'Atomics.sub(view, 0, 1n) returns 1n');
|
||||||
|
assert.sameValue(Atomics.load(view, 0), 0n, 'Atomics.load(view, 0) returns 0n');
|
||||||
|
});
|
||||||
|
|
|
@ -1,18 +0,0 @@
|
||||||
// Copyright (C) 2020 Rick Waldron. All rights reserved.
|
|
||||||
// This code is governed by the BSD license found in the LICENSE file.
|
|
||||||
/*---
|
|
||||||
esid: sec-atomics.sub
|
|
||||||
description: >
|
|
||||||
Atomics.sub throws when operating on non-sharable integer TypedArrays
|
|
||||||
includes: [testBigIntTypedArray.js]
|
|
||||||
features: [ArrayBuffer, Atomics, BigInt, TypedArray]
|
|
||||||
---*/
|
|
||||||
const buffer = new ArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 4);
|
|
||||||
|
|
||||||
testWithNonShareableBigIntTypedArrayConstructors(function(TA) {
|
|
||||||
const view = new TA(buffer);
|
|
||||||
|
|
||||||
assert.throws(TypeError, function() {
|
|
||||||
Atomics.sub(view, 0, 1n);
|
|
||||||
}, `Atomics.sub(new ${TA.name}(buffer), 0, 1n) throws TypeError`);
|
|
||||||
});
|
|
|
@ -5,14 +5,15 @@
|
||||||
esid: sec-atomics.sub
|
esid: sec-atomics.sub
|
||||||
description: >
|
description: >
|
||||||
Atomics.sub will operate on TA when TA.buffer is not a SharedArrayBuffer
|
Atomics.sub will operate on TA when TA.buffer is not a SharedArrayBuffer
|
||||||
|
includes: [testTypedArray.js]
|
||||||
features: [ArrayBuffer, Atomics, TypedArray]
|
features: [ArrayBuffer, Atomics, TypedArray]
|
||||||
---*/
|
---*/
|
||||||
|
testWithAtomicsFriendlyTypedArrayConstructors(TA => {
|
||||||
|
const view = new TA(
|
||||||
|
new ArrayBuffer(TA.BYTES_PER_ELEMENT * 4)
|
||||||
|
);
|
||||||
|
|
||||||
const i32a = new Int32Array(
|
assert.sameValue(Atomics.store(view, 0, 1), 1, 'Atomics.store(view, 0, 1) returns 1');
|
||||||
new ArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4)
|
assert.sameValue(Atomics.sub(view, 0, 1), 0, 'Atomics.sub(view, 0, 1) returns 0');
|
||||||
);
|
assert.sameValue(Atomics.load(view, 0), 0, 'Atomics.load(view, 0) returns 0');
|
||||||
|
});
|
||||||
assert.sameValue(Atomics.store(i32a, 0, 1), 1, 'Atomics.store(i32a, 0, 1) returns 1');
|
|
||||||
assert.sameValue(Atomics.sub(i32a, 0, 1), 0, 'Atomics.sub(i32a, 0, 1) returns 0');
|
|
||||||
assert.sameValue(Atomics.load(i32a, 0), 0, 'Atomics.load(i32a, 0) returns 0');
|
|
||||||
|
|
||||||
|
|
|
@ -8,10 +8,8 @@ description: >
|
||||||
includes: [testTypedArray.js]
|
includes: [testTypedArray.js]
|
||||||
features: [ArrayBuffer, Atomics, TypedArray]
|
features: [ArrayBuffer, Atomics, TypedArray]
|
||||||
---*/
|
---*/
|
||||||
|
testWithNonAtomicsFriendlyTypedArrayConstructors(TA => {
|
||||||
const buffer = new ArrayBuffer(16);
|
const buffer = new ArrayBuffer(16);
|
||||||
|
|
||||||
testWithNonShareableTypedArrayConstructors(function(TA) {
|
|
||||||
const view = new TA(buffer);
|
const view = new TA(buffer);
|
||||||
|
|
||||||
assert.throws(TypeError, function() {
|
assert.throws(TypeError, function() {
|
||||||
|
|
|
@ -4,8 +4,12 @@
|
||||||
esid: sec-atomics.xor
|
esid: sec-atomics.xor
|
||||||
description: >
|
description: >
|
||||||
Atomics.xor will operate on TA when TA.buffer is not a SharedArrayBuffer
|
Atomics.xor will operate on TA when TA.buffer is not a SharedArrayBuffer
|
||||||
|
includes: [testBigIntTypedArray.js]
|
||||||
features: [ArrayBuffer, Atomics, BigInt, TypedArray]
|
features: [ArrayBuffer, Atomics, BigInt, TypedArray]
|
||||||
---*/
|
---*/
|
||||||
const i64a = new BigInt64Array(new ArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 4));
|
testWithBigIntTypedArrayConstructors(TA => {
|
||||||
assert.sameValue(Atomics.xor(i64a, 0, 1n), 0n, 'Atomics.xor(i64a, 0, 1n) returns 0n');
|
const buffer = new ArrayBuffer(TA.BYTES_PER_ELEMENT * 4);
|
||||||
assert.sameValue(Atomics.load(i64a, 0), 1n, 'Atomics.load(i64a, 0) returns 1n');
|
const view = new TA(buffer);
|
||||||
|
assert.sameValue(Atomics.xor(view, 0, 1n), 0n, 'Atomics.xor(view, 0, 1n) returns 0n');
|
||||||
|
assert.sameValue(Atomics.load(view, 0), 1n, 'Atomics.load(view, 0) returns 1n');
|
||||||
|
});
|
||||||
|
|
|
@ -1,18 +0,0 @@
|
||||||
// Copyright (C) 2020 Rick Waldron. All rights reserved.
|
|
||||||
// This code is governed by the BSD license found in the LICENSE file.
|
|
||||||
/*---
|
|
||||||
esid: sec-atomics.xor
|
|
||||||
description: >
|
|
||||||
Atomics.xor throws when operating on non-sharable integer TypedArrays
|
|
||||||
includes: [testBigIntTypedArray.js]
|
|
||||||
features: [ArrayBuffer, Atomics, BigInt, TypedArray]
|
|
||||||
---*/
|
|
||||||
const buffer = new ArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT * 4);
|
|
||||||
|
|
||||||
testWithNonShareableBigIntTypedArrayConstructors(function(TA) {
|
|
||||||
const view = new TA(buffer);
|
|
||||||
|
|
||||||
assert.throws(TypeError, function() {
|
|
||||||
Atomics.xor(view, 0, 1n);
|
|
||||||
}, `Atomics.xor(new ${TA.name}(buffer), 0, 1n) throws TypeError`);
|
|
||||||
});
|
|
|
@ -5,13 +5,14 @@
|
||||||
esid: sec-atomics.and
|
esid: sec-atomics.and
|
||||||
description: >
|
description: >
|
||||||
Atomics.and will operate on TA when TA.buffer is not a SharedArrayBuffer
|
Atomics.and will operate on TA when TA.buffer is not a SharedArrayBuffer
|
||||||
|
includes: [testTypedArray.js]
|
||||||
features: [ArrayBuffer, Atomics, TypedArray]
|
features: [ArrayBuffer, Atomics, TypedArray]
|
||||||
---*/
|
---*/
|
||||||
|
testWithAtomicsFriendlyTypedArrayConstructors(TA => {
|
||||||
|
const view = new TA(
|
||||||
|
new ArrayBuffer(TA.BYTES_PER_ELEMENT * 4)
|
||||||
|
);
|
||||||
|
|
||||||
const i32a = new Int32Array(
|
assert.sameValue(Atomics.and(view, 0, 1), 0, 'Atomics.and(view, 0, 1) returns 0');
|
||||||
new ArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4)
|
assert.sameValue(Atomics.load(view, 0), 0, 'Atomics.load(view, 0) returns 0');
|
||||||
);
|
});
|
||||||
|
|
||||||
assert.sameValue(Atomics.and(i32a, 0, 1), 0, 'Atomics.and(i32a, 0, 1) returns 0');
|
|
||||||
assert.sameValue(Atomics.load(i32a, 0), 0, 'Atomics.load(i32a, 0) returns 0');
|
|
||||||
|
|
||||||
|
|
|
@ -8,10 +8,8 @@ description: >
|
||||||
includes: [testTypedArray.js]
|
includes: [testTypedArray.js]
|
||||||
features: [ArrayBuffer, Atomics, TypedArray]
|
features: [ArrayBuffer, Atomics, TypedArray]
|
||||||
---*/
|
---*/
|
||||||
|
testWithNonAtomicsFriendlyTypedArrayConstructors(TA => {
|
||||||
const buffer = new ArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4);
|
const buffer = new ArrayBuffer(TA.BYTES_PER_ELEMENT * 4);
|
||||||
|
|
||||||
testWithNonShareableTypedArrayConstructors(function(TA) {
|
|
||||||
const view = new TA(buffer);
|
const view = new TA(buffer);
|
||||||
|
|
||||||
assert.throws(TypeError, function() {
|
assert.throws(TypeError, function() {
|
||||||
|
|
Loading…
Reference in New Issue