Index: test/mjsunit/harmony/atomics.js |
diff --git a/test/mjsunit/harmony/atomics.js b/test/mjsunit/harmony/atomics.js |
index 664b46d1219bd0a251aad334ddd7a44410e94516..dbd372fa6d909297a78c469ab37cf97bc88fd592 100644 |
--- a/test/mjsunit/harmony/atomics.js |
+++ b/test/mjsunit/harmony/atomics.js |
@@ -38,11 +38,6 @@ var IntegerTypedArrayConstructors = [ |
makeConstructorObject(Uint32Array, 0, 0xffffffff, toRangeWrapped), |
]; |
-var TypedArrayConstructors = IntegerTypedArrayConstructors.concat([ |
- {constr: Float32Array}, |
- {constr: Float64Array}, |
-]); |
- |
(function TestBadArray() { |
var ab = new ArrayBuffer(16); |
var u32a = new Uint32Array(16); |
@@ -50,8 +45,8 @@ var TypedArrayConstructors = IntegerTypedArrayConstructors.concat([ |
var sf32a = new Float32Array(sab); |
var sf64a = new Float64Array(sab); |
- // Atomic ops required shared typed arrays |
- [undefined, 1, 'hi', 3.4, ab, u32a, sab].forEach(function(o) { |
+ // Atomic ops required integer shared typed arrays |
+ [undefined, 1, 'hi', 3.4, ab, u32a, sab, sf32a, sf64a].forEach(function(o) { |
assertThrows(function() { Atomics.compareExchange(o, 0, 0, 0); }, |
TypeError); |
assertThrows(function() { Atomics.load(o, 0); }, TypeError); |
@@ -63,16 +58,6 @@ var TypedArrayConstructors = IntegerTypedArrayConstructors.concat([ |
assertThrows(function() { Atomics.xor(o, 0, 0); }, TypeError); |
assertThrows(function() { Atomics.exchange(o, 0, 0); }, TypeError); |
}); |
- |
- // Arithmetic atomic ops require integer shared arrays |
- [sab, sf32a, sf64a].forEach(function(o) { |
- assertThrows(function() { Atomics.add(o, 0, 0); }, TypeError); |
- assertThrows(function() { Atomics.sub(o, 0, 0); }, TypeError); |
- assertThrows(function() { Atomics.and(o, 0, 0); }, TypeError); |
- assertThrows(function() { Atomics.or(o, 0, 0); }, TypeError); |
- assertThrows(function() { Atomics.xor(o, 0, 0); }, TypeError); |
- assertThrows(function() { Atomics.exchange(o, 0, 0); }, TypeError); |
- }); |
})(); |
function testAtomicOp(op, ia, index, expectedIndex, name) { |
@@ -163,7 +148,7 @@ function testAtomicOp(op, ia, index, expectedIndex, name) { |
})(); |
(function TestCompareExchange() { |
- TypedArrayConstructors.forEach(function(t) { |
+ IntegerTypedArrayConstructors.forEach(function(t) { |
var sab = new SharedArrayBuffer(10 * t.constr.BYTES_PER_ELEMENT); |
var sta = new t.constr(sab); |
var name = Object.prototype.toString.call(sta); |
@@ -177,32 +162,10 @@ function testAtomicOp(op, ia, index, expectedIndex, name) { |
assertEquals(50, sta[i], name); |
} |
}); |
- |
- // * Exact float values should be OK |
- // * Infinity, -Infinity should be OK (has exact representation) |
- // * NaN is not OK, it has many representations, cannot ensure successful CAS |
- // because it does a bitwise compare |
- [1.5, 4.25, -1e8, -Infinity, Infinity].forEach(function(v) { |
- var sab = new SharedArrayBuffer(10 * Float32Array.BYTES_PER_ELEMENT); |
- var sf32a = new Float32Array(sab); |
- sf32a[0] = 0; |
- assertEquals(0, Atomics.compareExchange(sf32a, 0, 0, v)); |
- assertEquals(v, sf32a[0]); |
- assertEquals(v, Atomics.compareExchange(sf32a, 0, v, 0)); |
- assertEquals(0, sf32a[0]); |
- |
- var sab2 = new SharedArrayBuffer(10 * Float64Array.BYTES_PER_ELEMENT); |
- var sf64a = new Float64Array(sab2); |
- sf64a[0] = 0; |
- assertEquals(0, Atomics.compareExchange(sf64a, 0, 0, v)); |
- assertEquals(v, sf64a[0]); |
- assertEquals(v, Atomics.compareExchange(sf64a, 0, v, 0)); |
- assertEquals(0, sf64a[0]); |
- }); |
})(); |
(function TestLoad() { |
- TypedArrayConstructors.forEach(function(t) { |
+ IntegerTypedArrayConstructors.forEach(function(t) { |
var sab = new SharedArrayBuffer(10 * t.constr.BYTES_PER_ELEMENT); |
var sta = new t.constr(sab); |
var name = Object.prototype.toString.call(sta); |
@@ -216,7 +179,7 @@ function testAtomicOp(op, ia, index, expectedIndex, name) { |
})(); |
(function TestStore() { |
- TypedArrayConstructors.forEach(function(t) { |
+ IntegerTypedArrayConstructors.forEach(function(t) { |
var sab = new SharedArrayBuffer(10 * t.constr.BYTES_PER_ELEMENT); |
var sta = new t.constr(sab); |
var name = Object.prototype.toString.call(sta); |
@@ -228,20 +191,6 @@ function testAtomicOp(op, ia, index, expectedIndex, name) { |
assertEquals(100, sta[i], name); |
} |
}); |
- |
- [1.5, 4.25, -1e8, -Infinity, Infinity, NaN].forEach(function(v) { |
- var sab = new SharedArrayBuffer(10 * Float32Array.BYTES_PER_ELEMENT); |
- var sf32a = new Float32Array(sab); |
- sf32a[0] = 0; |
- assertEquals(v, Atomics.store(sf32a, 0, v)); |
- assertEquals(v, sf32a[0]); |
- |
- var sab2 = new SharedArrayBuffer(10 * Float64Array.BYTES_PER_ELEMENT); |
- var sf64a = new Float64Array(sab2); |
- sf64a[0] = 0; |
- assertEquals(v, Atomics.store(sf64a, 0, v)); |
- assertEquals(v, sf64a[0]); |
- }); |
})(); |
(function TestAdd() { |
@@ -348,7 +297,7 @@ function testAtomicOp(op, ia, index, expectedIndex, name) { |
// Sizes that aren't equal to a typedarray BYTES_PER_ELEMENT always return |
// false. |
var validSizes = {}; |
- TypedArrayConstructors.forEach(function(t) { |
+ IntegerTypedArrayConstructors.forEach(function(t) { |
validSizes[t.constr.BYTES_PER_ELEMENT] = true; |
}); |