mirror of https://github.com/tc39/test262.git
48 lines
1.6 KiB
JavaScript
48 lines
1.6 KiB
JavaScript
// 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();
|