| // Copyright (C) 2017 Mozilla Corporation. All rights reserved. |
| // This code is governed by the BSD license found in the LICENSE file. |
| |
| /*--- |
| esid: sec-atomics.islockfree |
| description: > |
| Test isLockFree on nonnegative integer arguments |
| ---*/ |
| |
| var sizes = [ 1, 2, 3, 4, 5, 6, 7, 8, |
| 9, 10, 11, 12]; |
| var answers = [ {}, {}, false, true, false, false, false, false, |
| false, false, false, false]; |
| |
| function testIsLockFree() { |
| var saved = {}; |
| |
| // This should defeat most optimizations. |
| |
| for ( var i=0 ; i < sizes.length ; i++ ) { |
| var v = Atomics.isLockFree(sizes[i]); |
| var a = answers[i]; |
| assert.sameValue(typeof v, 'boolean'); |
| if (typeof a == 'boolean') |
| assert.sameValue(v, a); |
| else |
| saved[sizes[i]] = v; |
| } |
| |
| // This ought to be optimizable. Make sure the answers are the same |
| // as for the unoptimized case. |
| |
| assert.sameValue(Atomics.isLockFree(1), saved[1]); |
| assert.sameValue(Atomics.isLockFree(2), saved[2]); |
| assert.sameValue(Atomics.isLockFree(3), false); |
| assert.sameValue(Atomics.isLockFree(4), true); |
| assert.sameValue(Atomics.isLockFree(5), false); |
| assert.sameValue(Atomics.isLockFree(6), false); |
| assert.sameValue(Atomics.isLockFree(7), false); |
| assert.sameValue(Atomics.isLockFree(8), false); |
| assert.sameValue(Atomics.isLockFree(9), false); |
| assert.sameValue(Atomics.isLockFree(10), false); |
| assert.sameValue(Atomics.isLockFree(11), false); |
| assert.sameValue(Atomics.isLockFree(12), false); |
| } |
| |
| testIsLockFree(); |