summaryrefslogtreecommitdiff
path: root/test/wasm2js/atomics_32.2asm.js
diff options
context:
space:
mode:
Diffstat (limited to 'test/wasm2js/atomics_32.2asm.js')
-rw-r--r--test/wasm2js/atomics_32.2asm.js9
1 files changed, 7 insertions, 2 deletions
diff --git a/test/wasm2js/atomics_32.2asm.js b/test/wasm2js/atomics_32.2asm.js
index 89425ac94..6eb655e18 100644
--- a/test/wasm2js/atomics_32.2asm.js
+++ b/test/wasm2js/atomics_32.2asm.js
@@ -30,9 +30,14 @@ memorySegments[1] = base64DecodeToExistingUint8Array(new Uint8Array(6), 0, "d29y
var f64ScratchView = new Float64Array(scratchBuffer);
function wasm2js_atomic_wait_i32(ptr, expected, timeoutLow, timeoutHigh) {
- if (timeoutLow != -1 || timeoutHigh != -1) throw 'unsupported timeout';
+ var timeout = Infinity;
+ if (timeoutHigh >= 0) {
+ // Convert from nanoseconds to milliseconds
+ // Taken from convertI32PairToI53 in emscripten's library_int53.js
+ timeout = ((timeoutLow / 1e6) >>> 0) + timeoutHigh * (4294967296 / 1e6);
+ }
var view = new Int32Array(bufferView.buffer); // TODO cache
- var result = Atomics.wait(view, ptr, expected);
+ var result = Atomics.wait(view, ptr >> 2, expected, timeout);
if (result == 'ok') return 0;
if (result == 'not-equal') return 1;
if (result == 'timed-out') return 2;