From 4fce58c5bac3ecc48752704bad91fa9fbf8d8eb0 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 13 Dec 2021 16:35:47 -0800 Subject: [PATCH] Allow fractional timeouts in wasm2js Atomics.wait. Followup to #4385 --- src/wasm2js.h | 2 +- test/wasm2js/atomics_32.2asm.js | 2 +- test/wasm2js/atomics_32.2asm.js.opt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/wasm2js.h b/src/wasm2js.h index 615e47268d9..43f4d520f1e 100644 --- a/src/wasm2js.h +++ b/src/wasm2js.h @@ -2860,7 +2860,7 @@ void Wasm2JSGlue::emitSpecialSupport() { if (timeoutHigh >= 0) { // Convert from nanoseconds to milliseconds // Taken from convertI32PairToI53 in emscripten's library_int53.js - timeout = ((timeoutLow / 1e6) >>> 0) + timeoutHigh * (4294967296 / 1e6); + timeout = ((timeoutLow >>> 0) / 1e6) + timeoutHigh * (4294967296 / 1e6); } var view = new Int32Array(bufferView.buffer); // TODO cache var result = Atomics.wait(view, ptr >> 2, expected, timeout); diff --git a/test/wasm2js/atomics_32.2asm.js b/test/wasm2js/atomics_32.2asm.js index 6eb655e1864..1eb03343c98 100644 --- a/test/wasm2js/atomics_32.2asm.js +++ b/test/wasm2js/atomics_32.2asm.js @@ -34,7 +34,7 @@ memorySegments[1] = base64DecodeToExistingUint8Array(new Uint8Array(6), 0, "d29y if (timeoutHigh >= 0) { // Convert from nanoseconds to milliseconds // Taken from convertI32PairToI53 in emscripten's library_int53.js - timeout = ((timeoutLow / 1e6) >>> 0) + timeoutHigh * (4294967296 / 1e6); + timeout = ((timeoutLow >>> 0) / 1e6) + timeoutHigh * (4294967296 / 1e6); } var view = new Int32Array(bufferView.buffer); // TODO cache var result = Atomics.wait(view, ptr >> 2, expected, timeout); diff --git a/test/wasm2js/atomics_32.2asm.js.opt b/test/wasm2js/atomics_32.2asm.js.opt index f723aaf31e7..8d2a205d1e0 100644 --- a/test/wasm2js/atomics_32.2asm.js.opt +++ b/test/wasm2js/atomics_32.2asm.js.opt @@ -34,7 +34,7 @@ memorySegments[1] = base64DecodeToExistingUint8Array(new Uint8Array(6), 0, "d29y if (timeoutHigh >= 0) { // Convert from nanoseconds to milliseconds // Taken from convertI32PairToI53 in emscripten's library_int53.js - timeout = ((timeoutLow / 1e6) >>> 0) + timeoutHigh * (4294967296 / 1e6); + timeout = ((timeoutLow >>> 0) / 1e6) + timeoutHigh * (4294967296 / 1e6); } var view = new Int32Array(bufferView.buffer); // TODO cache var result = Atomics.wait(view, ptr >> 2, expected, timeout);