From d666035c328e8304e24895dede0a0c7807a82264 Mon Sep 17 00:00:00 2001 From: Sam Clegg Date: Tue, 13 Feb 2024 09:41:41 -0800 Subject: [PATCH] [wasm64] Fix makeHEAPView for addresses over 4gb (#21324) This enables all the cubegeom tests to pass --- .circleci/config.yml | 2 ++ src/parseTools.js | 11 ++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 0662351a969b..61b2526b0c1b 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -829,6 +829,8 @@ jobs: browser64_4gb.test_html5_webgl_create_context* browser64_4gb.test_sdl_image browser64_4gb.test_wasm_worker* + browser64_4gb.test_cube_explosion + browser64_4gb.test_cubegeom_* " test-browser-firefox: executor: bionic diff --git a/src/parseTools.js b/src/parseTools.js index 6dfe78b60569..44caef31b6e4 100644 --- a/src/parseTools.js +++ b/src/parseTools.js @@ -429,7 +429,16 @@ function makeSetValueImpl(ptr, pos, value, type) { function makeHEAPView(which, start, end) { const size = parseInt(which.replace('U', '').replace('F', '')) / 8; const shift = Math.log2(size); - const mod = size == 1 ? '' : (CAN_ADDRESS_2GB || MEMORY64) ? ('>>>' + shift) : ('>>' + shift); + let mod = ''; + if (size != 1) { + if (MEMORY64) { + mod = '/' + size; + } else if (CAN_ADDRESS_2GB) { + mod = '>>>' + shift; + } else { + mod = '>>' + shift; + } + } return `HEAP${which}.subarray((${start})${mod}, (${end})${mod})`; }