Skip to content
Snippets Groups Projects
Commit 7ec0cdba authored by Rick Waldron's avatar Rick Waldron
Browse files

Atomics: more fixes for review

parent 84f448f0
No related branches found
No related tags found
No related merge requests found
...@@ -29,14 +29,16 @@ features: [Atomics, SharedArrayBuffer, TypedArray] ...@@ -29,14 +29,16 @@ features: [Atomics, SharedArrayBuffer, TypedArray]
var buffer = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT); var buffer = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT);
var i32a = new Int32Array(buffer); var i32a = new Int32Array(buffer);
var value = 0b00000001000000001000000010000001; var initial = 0b00000001000000001000000010000001;
var other = 0b00000001111111111000000011111111; var other = 0b00000001111111111000000011111111;
var anded = 0b00000001000000001000000010000001;
i32a[0] = value; i32a[0] = initial;
assert.sameValue( assert.sameValue(
Atomics.and(i32a, 0, value), Atomics.and(i32a, 0, other),
value, initial,
'Atomics.and(i32a, 0, value) equals the value of value (0b00000001000000001000000010000001)' 'Atomics.and(i32a, 0, other) equals the value of `initial` (0b00000001000000001000000010000001)'
); );
assert.sameValue(i32a[0], value & other, 'The value of i32a[0] is value & other');
assert.sameValue(i32a[0], anded, 'The value of i32a[0] equals the value of `anded` (0b00000001000000001000000010000001)');
...@@ -27,8 +27,7 @@ $262.agent.start(` ...@@ -27,8 +27,7 @@ $262.agent.start(`
const i32a = new Int32Array(sab); const i32a = new Int32Array(sab);
// Wait on index 0 // Wait on index 0
Atomics.wait(i32a, 0, 0, 200); $262.agent.report(Atomics.wait(i32a, 0, 0, Infinity));
$262.agent.report(0);
$262.agent.leaving(); $262.agent.leaving();
}); });
`); `);
...@@ -38,23 +37,27 @@ $262.agent.start(` ...@@ -38,23 +37,27 @@ $262.agent.start(`
const i32a = new Int32Array(sab); const i32a = new Int32Array(sab);
// Wait on index 2 // Wait on index 2
Atomics.wait(i32a, 2, 0, 200); $262.agent.report(Atomics.wait(i32a, 2, 0, Infinity));
$262.agent.report(2);
$262.agent.leaving(); $262.agent.leaving();
}); });
`); `);
const i32a = new Int32Array( const i32a = new Int32Array(
new SharedArrayBuffer(4 * Int32Array.BYTES_PER_ELEMENT) new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 4)
); );
$262.agent.broadcast(i32a.buffer); $262.agent.broadcast(i32a.buffer);
$262.agent.sleep(10); $262.agent.sleep(10);
// Wake index 2 // Wake index 1, wakes nothing
Atomics.wake(i32a, 2, 1); assert.sameValue(Atomics.wake(i32a, 1), 0, 'Atomics.wake(i32a, 1) returns 0');
assert.sameValue(getReport(), '2'); // Wake index 3, wakes nothing
assert.sameValue(Atomics.wake(i32a, 3), 0, 'Atomics.wake(i32a, 3) returns 0');
// Wake index 0 // Wake index 2, wakes 1
Atomics.wake(i32a, 0, 1); assert.sameValue(Atomics.wake(i32a, 2), 1, 'Atomics.wake(i32a, 2) returns 1');
assert.sameValue(getReport(), '0'); assert.sameValue(getReport(), 'ok', 'getReport() returns "ok"');
// Wake index 0, wakes 1
assert.sameValue(Atomics.wake(i32a, 0), 1, 'Atomics.wake(i32a, 0) returns 1');
assert.sameValue(getReport(), 'ok', 'getReport() returns "ok"');
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment