// 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();