diff --git a/src/parseTools.js b/src/parseTools.js index 44caef31b6e43..0831adcb16978 100644 --- a/src/parseTools.js +++ b/src/parseTools.js @@ -297,14 +297,17 @@ function getNativeTypeSize(type) { function getHeapOffset(offset, type) { const sz = getNativeTypeSize(type); - const shifts = Math.log(sz) / Math.LN2; + if (sz == 1) { + return offset; + } if (MEMORY64 == 1) { - return `((${offset})/${2 ** shifts})`; - } else if (CAN_ADDRESS_2GB) { + return `((${offset})/${sz})`; + } + const shifts = Math.log(sz) / Math.LN2; + if (CAN_ADDRESS_2GB) { return `((${offset})>>>${shifts})`; - } else { - return `((${offset})>>${shifts})`; } + return `((${offset})>>${shifts})`; } function ensureDot(value) { @@ -427,19 +430,24 @@ 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); - 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})`; + // The makeHEAPView, for legacy reasons, takes a heap "suffix" + // rather than the heap "type" that used by other APIs here. + const type = { + '8': 'i8', + 'U8': 'u8', + '16': 'i16', + 'U16': 'u16', + '32': 'i32', + 'U32': 'u32', + '64': 'i64', + 'U64': 'u64', + 'F32': 'float', + 'F64': 'double', + }[which]; + const heap = getHeapForType(type); + start = getHeapOffset(start, type); + end = getHeapOffset(end, type); + return `${heap}.subarray((${start}), ${end})`; } // Given two values and an operation, returns the result of that operation. diff --git a/test/code_size/embind_val_wasm.json b/test/code_size/embind_val_wasm.json index a199731962377..94884bb90b1cf 100644 --- a/test/code_size/embind_val_wasm.json +++ b/test/code_size/embind_val_wasm.json @@ -1,10 +1,10 @@ { "a.html": 673, "a.html.gz": 431, - "a.js": 7086, - "a.js.gz": 3000, + "a.js": 7080, + "a.js.gz": 2999, "a.wasm": 11433, "a.wasm.gz": 5725, - "total": 19192, - "total_gz": 9156 + "total": 19186, + "total_gz": 9155 } diff --git a/test/other/metadce/test_metadce_cxx_ctors1.gzsize b/test/other/metadce/test_metadce_cxx_ctors1.gzsize index a3035d101eb97..598468564268e 100644 --- a/test/other/metadce/test_metadce_cxx_ctors1.gzsize +++ b/test/other/metadce/test_metadce_cxx_ctors1.gzsize @@ -1 +1 @@ -9959 +9953 diff --git a/test/other/metadce/test_metadce_cxx_ctors1.jssize b/test/other/metadce/test_metadce_cxx_ctors1.jssize index 7116a9cd2cda6..5c133da55cdfe 100644 --- a/test/other/metadce/test_metadce_cxx_ctors1.jssize +++ b/test/other/metadce/test_metadce_cxx_ctors1.jssize @@ -1 +1 @@ -24516 +24510 diff --git a/test/other/metadce/test_metadce_cxx_ctors2.gzsize b/test/other/metadce/test_metadce_cxx_ctors2.gzsize index 3c63410ad02f0..037be39d1d80e 100644 --- a/test/other/metadce/test_metadce_cxx_ctors2.gzsize +++ b/test/other/metadce/test_metadce_cxx_ctors2.gzsize @@ -1 +1 @@ -9944 +9939 diff --git a/test/other/metadce/test_metadce_cxx_ctors2.jssize b/test/other/metadce/test_metadce_cxx_ctors2.jssize index 69cc8690d152f..4d1461a02bdb6 100644 --- a/test/other/metadce/test_metadce_cxx_ctors2.jssize +++ b/test/other/metadce/test_metadce_cxx_ctors2.jssize @@ -1 +1 @@ -24484 +24478 diff --git a/test/other/metadce/test_metadce_cxx_except.gzsize b/test/other/metadce/test_metadce_cxx_except.gzsize index 3d42a550f38fa..c719006eb5801 100644 --- a/test/other/metadce/test_metadce_cxx_except.gzsize +++ b/test/other/metadce/test_metadce_cxx_except.gzsize @@ -1 +1 @@ -11032 +11034 diff --git a/test/other/metadce/test_metadce_cxx_except.jssize b/test/other/metadce/test_metadce_cxx_except.jssize index 827e2c9127cf4..f5ceda9aa6f92 100644 --- a/test/other/metadce/test_metadce_cxx_except.jssize +++ b/test/other/metadce/test_metadce_cxx_except.jssize @@ -1 +1 @@ -28406 +28382 diff --git a/test/other/metadce/test_metadce_cxx_except_wasm.gzsize b/test/other/metadce/test_metadce_cxx_except_wasm.gzsize index f8e41a5949e26..d89ecd30cd70d 100644 --- a/test/other/metadce/test_metadce_cxx_except_wasm.gzsize +++ b/test/other/metadce/test_metadce_cxx_except_wasm.gzsize @@ -1 +1 @@ -9925 +9921 diff --git a/test/other/metadce/test_metadce_cxx_except_wasm.jssize b/test/other/metadce/test_metadce_cxx_except_wasm.jssize index 2b4c61a2af85d..5d22ccf806690 100644 --- a/test/other/metadce/test_metadce_cxx_except_wasm.jssize +++ b/test/other/metadce/test_metadce_cxx_except_wasm.jssize @@ -1 +1 @@ -24409 +24403 diff --git a/test/other/metadce/test_metadce_cxx_mangle.jssize b/test/other/metadce/test_metadce_cxx_mangle.jssize index 01b1207f14ad5..0e54d7ee54796 100644 --- a/test/other/metadce/test_metadce_cxx_mangle.jssize +++ b/test/other/metadce/test_metadce_cxx_mangle.jssize @@ -1 +1 @@ -28407 +28383 diff --git a/test/other/metadce/test_metadce_cxx_noexcept.gzsize b/test/other/metadce/test_metadce_cxx_noexcept.gzsize index a3035d101eb97..598468564268e 100644 --- a/test/other/metadce/test_metadce_cxx_noexcept.gzsize +++ b/test/other/metadce/test_metadce_cxx_noexcept.gzsize @@ -1 +1 @@ -9959 +9953 diff --git a/test/other/metadce/test_metadce_cxx_noexcept.jssize b/test/other/metadce/test_metadce_cxx_noexcept.jssize index 7116a9cd2cda6..5c133da55cdfe 100644 --- a/test/other/metadce/test_metadce_cxx_noexcept.jssize +++ b/test/other/metadce/test_metadce_cxx_noexcept.jssize @@ -1 +1 @@ -24516 +24510 diff --git a/test/other/metadce/test_metadce_cxx_wasmfs.gzsize b/test/other/metadce/test_metadce_cxx_wasmfs.gzsize index b62acb1b92fc3..87d9fa61e6774 100644 --- a/test/other/metadce/test_metadce_cxx_wasmfs.gzsize +++ b/test/other/metadce/test_metadce_cxx_wasmfs.gzsize @@ -1 +1 @@ -5250 +5245 diff --git a/test/other/metadce/test_metadce_cxx_wasmfs.jssize b/test/other/metadce/test_metadce_cxx_wasmfs.jssize index 1ab619c212b49..e15496f7124ea 100644 --- a/test/other/metadce/test_metadce_cxx_wasmfs.jssize +++ b/test/other/metadce/test_metadce_cxx_wasmfs.jssize @@ -1 +1 @@ -12128 +12122 diff --git a/test/other/metadce/test_metadce_mem_O3_grow_standalone.gzsize b/test/other/metadce/test_metadce_mem_O3_grow_standalone.gzsize index 167459e1b1bbf..ac54f8beded56 100644 --- a/test/other/metadce/test_metadce_mem_O3_grow_standalone.gzsize +++ b/test/other/metadce/test_metadce_mem_O3_grow_standalone.gzsize @@ -1 +1 @@ -2448 +2445 diff --git a/test/other/metadce/test_metadce_mem_O3_grow_standalone.jssize b/test/other/metadce/test_metadce_mem_O3_grow_standalone.jssize index cb1346a82ce87..4dd60d34b0580 100644 --- a/test/other/metadce/test_metadce_mem_O3_grow_standalone.jssize +++ b/test/other/metadce/test_metadce_mem_O3_grow_standalone.jssize @@ -1 +1 @@ -5212 +5206 diff --git a/test/other/metadce/test_metadce_mem_O3_standalone.gzsize b/test/other/metadce/test_metadce_mem_O3_standalone.gzsize index 3d212cf499fea..7cce2de38675e 100644 --- a/test/other/metadce/test_metadce_mem_O3_standalone.gzsize +++ b/test/other/metadce/test_metadce_mem_O3_standalone.gzsize @@ -1 +1 @@ -2415 +2411 diff --git a/test/other/metadce/test_metadce_mem_O3_standalone.jssize b/test/other/metadce/test_metadce_mem_O3_standalone.jssize index ad0eeb465f5dd..4488f39a24ed7 100644 --- a/test/other/metadce/test_metadce_mem_O3_standalone.jssize +++ b/test/other/metadce/test_metadce_mem_O3_standalone.jssize @@ -1 +1 @@ -5142 +5136 diff --git a/test/other/test_unoptimized_code_size.js.size b/test/other/test_unoptimized_code_size.js.size index 06810b8497b7b..8e73167337482 100644 --- a/test/other/test_unoptimized_code_size.js.size +++ b/test/other/test_unoptimized_code_size.js.size @@ -1 +1 @@ -58128 +58100 diff --git a/test/other/test_unoptimized_code_size_no_asserts.js.size b/test/other/test_unoptimized_code_size_no_asserts.js.size index de370de747f72..97bc046e814fb 100644 --- a/test/other/test_unoptimized_code_size_no_asserts.js.size +++ b/test/other/test_unoptimized_code_size_no_asserts.js.size @@ -1 +1 @@ -31591 +31563 diff --git a/test/other/test_unoptimized_code_size_strict.js.size b/test/other/test_unoptimized_code_size_strict.js.size index e34d23c7021af..6d6be18347c43 100644 --- a/test/other/test_unoptimized_code_size_strict.js.size +++ b/test/other/test_unoptimized_code_size_strict.js.size @@ -1 +1 @@ -57039 +57011