From 1bde14c253d074abab26c32e50b305b9021e93e3 Mon Sep 17 00:00:00 2001 From: Sam Clegg Date: Mon, 12 Feb 2024 14:02:29 -0800 Subject: [PATCH] Fix wasm worker tests in high memory modes (#21319) --- .circleci/config.yml | 2 ++ src/library_wasm_worker.js | 8 ++++---- test/test_browser.py | 2 ++ 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 021a46e963cc..dcf143e3a19f 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -822,6 +822,7 @@ jobs: browser_2gb.test_webgl2_* browser_2gb.test_webgl_* browser_2gb.test_sdl_image + browser_2gb.test_wasm_worker* " test-browser-chrome-wasm64-4gb: executor: bionic @@ -839,6 +840,7 @@ jobs: browser64_4gb.test_fulles2_sdlproc browser64_4gb.test_html5_webgl_create_context* browser64_4gb.test_sdl_image + browser64_4gb.test_wasm_worker* " test-browser-firefox: executor: bionic diff --git a/src/library_wasm_worker.js b/src/library_wasm_worker.js index fa58a20df8b2..753055059437 100644 --- a/src/library_wasm_worker.js +++ b/src/library_wasm_worker.js @@ -278,9 +278,9 @@ if (ENVIRONMENT_IS_WASM_WORKER) { }; let tryAcquireLock = () => { do { - var val = Atomics.compareExchange(HEAP32, lock >> 2, 0/*zero represents lock being free*/, 1/*one represents lock being acquired*/); + var val = Atomics.compareExchange(HEAP32, {{{ getHeapOffset('lock', 'i32') }}}, 0/*zero represents lock being free*/, 1/*one represents lock being acquired*/); if (!val) return dispatch(0, 0/*'ok'*/); - var wait = Atomics.waitAsync(HEAP32, lock >> 2, val, maxWaitMilliseconds); + var wait = Atomics.waitAsync(HEAP32, {{{ getHeapOffset('lock', 'i32') }}}, val, maxWaitMilliseconds); } while (wait.value === 'not-equal'); #if ASSERTIONS assert(wait.async || wait.value === 'timed-out'); @@ -301,12 +301,12 @@ if (ENVIRONMENT_IS_WASM_WORKER) { let tryAcquireSemaphore = () => { let val = num; do { - let ret = Atomics.compareExchange(HEAP32, sem >> 2, + let ret = Atomics.compareExchange(HEAP32, {{{ getHeapOffset('sem', 'i32') }}}, val, /* We expect this many semaphore resoures to be available*/ val - num /* Acquire 'num' of them */); if (ret == val) return dispatch(ret/*index of resource acquired*/, 0/*'ok'*/); val = ret; - let wait = Atomics.waitAsync(HEAP32, sem >> 2, ret, maxWaitMilliseconds); + let wait = Atomics.waitAsync(HEAP32, {{{ getHeapOffset('sem', 'i32') }}}, ret, maxWaitMilliseconds); } while (wait.value === 'not-equal'); #if ASSERTIONS assert(wait.async || wait.value === 'timed-out'); diff --git a/test/test_browser.py b/test/test_browser.py index 896a46af15a1..3d625ee03748 100644 --- a/test/test_browser.py +++ b/test/test_browser.py @@ -236,6 +236,8 @@ def setUp(self): def require_wasm2js(self): if self.is_wasm64(): self.skipTest('wasm2js is not compatible with MEMORY64') + if self.is_2gb() or self.is_4gb(): + self.skipTest('wasm2js does not support over 2gb of memory') def require_jspi(self): if not is_chrome():