From adeb50bb7931d738456eb9151bee3bdda9df5c0f Mon Sep 17 00:00:00 2001 From: Yan Pujante Date: Thu, 9 Oct 2025 09:58:57 -0700 Subject: [PATCH 01/10] First pass at implementing #20983 - added emscripten_remove_callback - iterate over all handlers and only remove the one matching the arguments provided - changed all event setters to pass userData and eventTypeId which are required by this API --- src/lib/libhtml5.js | 63 ++++++++++++++ src/lib/libhtml5_webgl.js | 2 + system/include/emscripten/html5.h | 2 + test/test_browser.py | 12 +++ test/test_html5_remove_callback.c | 138 ++++++++++++++++++++++++++++++ 5 files changed, 217 insertions(+) create mode 100644 test/test_html5_remove_callback.c diff --git a/src/lib/libhtml5.js b/src/lib/libhtml5.js index b7363179d097b..119a9ed0e70b3 100644 --- a/src/lib/libhtml5.js +++ b/src/lib/libhtml5.js @@ -205,6 +205,25 @@ var LibraryHTML5 = { return {{{ cDefs.EMSCRIPTEN_RESULT_SUCCESS }}}; }, + removeSingleHandler(eventHandler) { + if (!eventHandler.target) { +#if ASSERTIONS + err('removeSingleHandler: the target element for event handler registration does not exist, when processing the following event handler registration:'); + console.dir(eventHandler); +#endif + return {{{ cDefs.EMSCRIPTEN_RESULT_UNKNOWN_TARGET }}}; + } + for (var i = 0; i < JSEvents.eventHandlers.length; ++i) { + if (JSEvents.eventHandlers[i].target === eventHandler.target + && JSEvents.eventHandlers[i].eventTypeId === eventHandler.eventTypeId + && JSEvents.eventHandlers[i].callbackfunc === eventHandler.callbackfunc + && JSEvents.eventHandlers[i].userData === eventHandler.userData) { + JSEvents._removeHandler(i--); + } + } + return {{{ cDefs.EMSCRIPTEN_RESULT_SUCCESS }}}; + }, + #if PTHREADS getTargetThreadForEventCallback(targetThread) { switch (targetThread) { @@ -298,6 +317,8 @@ var LibraryHTML5 = { var eventHandler = { target: findEventTarget(target), eventTypeString, + eventTypeId, + userData, callbackfunc, handlerFunc: keyEventHandlerFunc, useCapture @@ -412,6 +433,18 @@ var LibraryHTML5 = { }, #endif + emscripten_remove_callback__proxy: 'sync', + emscripten_remove_callback__deps: ['$JSEvents', '$findEventTarget'], + emscripten_remove_callback: (target, userData, eventTypeId, callback) => { + var eventHandler = { + target: findEventTarget(target), + userData, + eventTypeId, + callbackfunc: callback, + }; + return JSEvents.removeSingleHandler(eventHandler); + }, + emscripten_set_keypress_callback_on_thread__proxy: 'sync', emscripten_set_keypress_callback_on_thread__deps: ['$registerKeyEventCallback'], emscripten_set_keypress_callback_on_thread: (target, userData, useCapture, callbackfunc, targetThread) => @@ -503,6 +536,8 @@ var LibraryHTML5 = { allowsDeferredCalls: eventTypeString != 'mousemove' && eventTypeString != 'mouseenter' && eventTypeString != 'mouseleave', // Mouse move events do not allow fullscreen/pointer lock requests to be handled in them! #endif eventTypeString, + eventTypeId, + userData, callbackfunc, handlerFunc: mouseEventHandlerFunc, useCapture @@ -599,6 +634,8 @@ var LibraryHTML5 = { allowsDeferredCalls: true, #endif eventTypeString, + eventTypeId, + userData, callbackfunc, handlerFunc: wheelHandlerFunc, useCapture @@ -674,6 +711,8 @@ var LibraryHTML5 = { var eventHandler = { target, eventTypeString, + eventTypeId, + userData, callbackfunc, handlerFunc: uiEventHandlerFunc, useCapture @@ -721,6 +760,8 @@ var LibraryHTML5 = { var eventHandler = { target: findEventTarget(target), eventTypeString, + eventTypeId, + userData, callbackfunc, handlerFunc: focusEventHandlerFunc, useCapture @@ -779,6 +820,8 @@ var LibraryHTML5 = { var eventHandler = { target: findEventTarget(target), eventTypeString, + eventTypeId, + userData, callbackfunc, handlerFunc: deviceOrientationEventHandlerFunc, useCapture @@ -849,6 +892,8 @@ var LibraryHTML5 = { var eventHandler = { target: findEventTarget(target), eventTypeString, + eventTypeId, + userData, callbackfunc, handlerFunc: deviceMotionEventHandlerFunc, useCapture @@ -935,6 +980,8 @@ var LibraryHTML5 = { var eventHandler = { target, eventTypeString, + eventTypeId, + userData, callbackfunc, handlerFunc: orientationChangeEventHandlerFunc, useCapture @@ -1046,6 +1093,8 @@ var LibraryHTML5 = { var eventHandler = { target, eventTypeString, + eventTypeId, + userData, callbackfunc, handlerFunc: fullscreenChangeEventhandlerFunc, useCapture @@ -1547,6 +1596,8 @@ var LibraryHTML5 = { var eventHandler = { target, eventTypeString, + eventTypeId, + userData, callbackfunc, handlerFunc: pointerlockChangeEventHandlerFunc, useCapture @@ -1591,6 +1642,8 @@ var LibraryHTML5 = { var eventHandler = { target, eventTypeString, + eventTypeId, + userData, callbackfunc, handlerFunc: pointerlockErrorEventHandlerFunc, useCapture @@ -1745,6 +1798,8 @@ var LibraryHTML5 = { var eventHandler = { target, eventTypeString, + eventTypeId, + userData, callbackfunc, handlerFunc: visibilityChangeEventHandlerFunc, useCapture @@ -1863,6 +1918,8 @@ var LibraryHTML5 = { allowsDeferredCalls: eventTypeString == 'touchstart' || eventTypeString == 'touchend', #endif eventTypeString, + eventTypeId, + userData, callbackfunc, handlerFunc: touchEventHandlerFunc, useCapture @@ -1949,6 +2006,8 @@ var LibraryHTML5 = { allowsDeferredCalls: true, #endif eventTypeString, + eventTypeId, + userData, callbackfunc, handlerFunc: gamepadEventHandlerFunc, useCapture @@ -2035,6 +2094,8 @@ var LibraryHTML5 = { var eventHandler = { target: findEventTarget(target), eventTypeString, + eventTypeId, + userData, callbackfunc, handlerFunc: beforeUnloadEventHandlerFunc, useCapture @@ -2088,6 +2149,8 @@ var LibraryHTML5 = { var eventHandler = { target: battery, eventTypeString, + eventTypeId, + userData, callbackfunc, handlerFunc: batteryEventHandlerFunc, useCapture diff --git a/src/lib/libhtml5_webgl.js b/src/lib/libhtml5_webgl.js index 63f8d2ad39624..ed8b4bf27577c 100644 --- a/src/lib/libhtml5_webgl.js +++ b/src/lib/libhtml5_webgl.js @@ -441,6 +441,8 @@ var LibraryHtml5WebGL = { var eventHandler = { target: findEventTarget(target), eventTypeString, + eventTypeId, + userData, callbackfunc, handlerFunc: webGlEventHandlerFunc, useCapture diff --git a/system/include/emscripten/html5.h b/system/include/emscripten/html5.h index 6fb863e2f77b9..667a0a9c6d1d4 100644 --- a/system/include/emscripten/html5.h +++ b/system/include/emscripten/html5.h @@ -420,6 +420,8 @@ EMSCRIPTEN_RESULT emscripten_get_element_css_size(const char *target __attribute void emscripten_html5_remove_all_event_listeners(void); +EMSCRIPTEN_RESULT emscripten_remove_callback(const char *target __attribute__((nonnull)), void *userData, int eventTypeId, void *callback __attribute__((nonnull))); + #define EM_CALLBACK_THREAD_CONTEXT_MAIN_RUNTIME_THREAD ((pthread_t)0x1) #define EM_CALLBACK_THREAD_CONTEXT_CALLING_THREAD ((pthread_t)0x2) diff --git a/test/test_browser.py b/test/test_browser.py index a9f9b71d86be2..3462e607a5679 100644 --- a/test/test_browser.py +++ b/test/test_browser.py @@ -2634,6 +2634,18 @@ def test_html5_core(self, opts): self.cflags.append('--pre-js=pre.js') self.btest_exit('test_html5_core.c', cflags=opts) + @parameterized({ + '': ([],), + 'closure': (['-O2', '-g1', '--closure=1'],), + 'pthread': (['-pthread'],), + 'proxy_to_pthread': (['-pthread', '-sPROXY_TO_PTHREAD'],), + 'legacy': (['-sMIN_FIREFOX_VERSION=0', '-sMIN_SAFARI_VERSION=0', '-sMIN_CHROME_VERSION=0', '-Wno-transpile'],), + }) + def test_html5_remove_callback(self, opts): + if self.is_wasm64() and '-sMIN_CHROME_VERSION=0' in opts: + self.skipTest('wasm64 does not support older browsers') + self.btest_exit('test_html5_remove_callback.c', cflags=opts) + @parameterized({ '': ([],), 'closure': (['-O2', '-g1', '--closure=1'],), diff --git a/test/test_html5_remove_callback.c b/test/test_html5_remove_callback.c new file mode 100644 index 0000000000000..23932f1fe4dfa --- /dev/null +++ b/test/test_html5_remove_callback.c @@ -0,0 +1,138 @@ +/* + * Copyright 2025 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include +#include +#include + +const char *emscripten_result_to_string(EMSCRIPTEN_RESULT result) { + if (result == EMSCRIPTEN_RESULT_SUCCESS) return "EMSCRIPTEN_RESULT_SUCCESS"; + if (result == EMSCRIPTEN_RESULT_DEFERRED) return "EMSCRIPTEN_RESULT_DEFERRED"; + if (result == EMSCRIPTEN_RESULT_NOT_SUPPORTED) return "EMSCRIPTEN_RESULT_NOT_SUPPORTED"; + if (result == EMSCRIPTEN_RESULT_FAILED_NOT_DEFERRED) return "EMSCRIPTEN_RESULT_FAILED_NOT_DEFERRED"; + if (result == EMSCRIPTEN_RESULT_INVALID_TARGET) return "EMSCRIPTEN_RESULT_INVALID_TARGET"; + if (result == EMSCRIPTEN_RESULT_UNKNOWN_TARGET) return "EMSCRIPTEN_RESULT_UNKNOWN_TARGET"; + if (result == EMSCRIPTEN_RESULT_INVALID_PARAM) return "EMSCRIPTEN_RESULT_INVALID_PARAM"; + if (result == EMSCRIPTEN_RESULT_FAILED) return "EMSCRIPTEN_RESULT_FAILED"; + if (result == EMSCRIPTEN_RESULT_NO_DATA) return "EMSCRIPTEN_RESULT_NO_DATA"; + return "Unknown EMSCRIPTEN_RESULT!"; +} + +// Report API failure +#define TEST_RESULT(x) if (ret != EMSCRIPTEN_RESULT_SUCCESS) printf("%s returned %s.\n", #x, emscripten_result_to_string(ret)); + +// Like above above but also assert API success +#define ASSERT_RESULT(x) TEST_RESULT(x); assert(ret == EMSCRIPTEN_RESULT_SUCCESS); + +char const *userDataToString(void *userData) { + return userData ? (char const *) userData : "nullptr"; +} + +bool key_callback_1(int eventType, const EmscriptenKeyboardEvent *e, void *userData) { + printf("key_callback_1: eventType=%d, userData=%s\n", eventType, userDataToString(userData)); + return 0; +} + +bool key_callback_2(int eventType, const EmscriptenKeyboardEvent *e, void *userData) { + printf("key_callback_2: eventType=%d, userData=%s\n", eventType, userDataToString(userData)); + return 0; +} + +bool mouse_callback_1(int eventType, const EmscriptenMouseEvent *e, void *userData) { + printf("mouse_callback_1: eventType=%d, userData=%s\n", eventType, userDataToString(userData)); + return 0; +} + +void checkCount(int count) +{ + int eventHandlersCount = EM_ASM_INT({ return JSEvents.eventHandlers.length; }); + printf("Detected [%d] handlers\n", eventHandlersCount); + assert(count == eventHandlersCount); +} + +void test_done() {} + +int main() { + bool useCapture = true; + void *userData3 = "3"; + + // first we check for invalid parameters + assert(emscripten_remove_callback("this_dom_element_does_not_exist", NULL, 0, key_callback_1) == EMSCRIPTEN_RESULT_UNKNOWN_TARGET); + + checkCount(0); + + EMSCRIPTEN_RESULT ret = emscripten_set_keypress_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, useCapture, key_callback_1); + ASSERT_RESULT(emscripten_set_keypress_callback); + ret = emscripten_set_keydown_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, useCapture, key_callback_1); + ASSERT_RESULT(emscripten_set_keydown_callback); + ret = emscripten_set_keyup_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, useCapture, key_callback_1); + ASSERT_RESULT(emscripten_set_keyup_callback); + + checkCount(3); + + // removing keydown event + ret = emscripten_remove_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, EMSCRIPTEN_EVENT_KEYDOWN, key_callback_1); + ASSERT_RESULT(emscripten_remove_callback); + + checkCount(2); + + // adding another keypress callback on the same target + ret = emscripten_set_keypress_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, useCapture, key_callback_2); + ASSERT_RESULT(emscripten_set_keypress_callback); + checkCount(3); + + // adding another keypress callback on the same target with different user data + ret = emscripten_set_keypress_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, userData3, useCapture, key_callback_2); + ASSERT_RESULT(emscripten_set_keypress_callback); + + checkCount(4); + + // removing a combination that does not exist (no mouse_callback_1 registered) + ret = emscripten_remove_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, EMSCRIPTEN_EVENT_KEYPRESS, mouse_callback_1); + ASSERT_RESULT(emscripten_remove_callback); + + checkCount(4); + + // removing keypress / userData=NULL / key_callback_2 + ret = emscripten_remove_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, EMSCRIPTEN_EVENT_KEYPRESS, key_callback_2); + ASSERT_RESULT(emscripten_remove_callback); + + checkCount(3); + + // removing keypress / userData=NULL / key_callback_1 + ret = emscripten_remove_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, EMSCRIPTEN_EVENT_KEYPRESS, key_callback_1); + ASSERT_RESULT(emscripten_remove_callback); + + checkCount(2); + + // removing keypress / userData=3 / key_callback_2 + ret = emscripten_remove_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, userData3, EMSCRIPTEN_EVENT_KEYPRESS, key_callback_2); + ASSERT_RESULT(emscripten_remove_callback); + + checkCount(1); + + // adding the same mouse down callback to 2 different targets + ret = emscripten_set_mousedown_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, useCapture, mouse_callback_1); + ASSERT_RESULT(emscripten_set_mousedown_callback); + ret = emscripten_set_mousedown_callback("#canvas", NULL, useCapture, mouse_callback_1); + ASSERT_RESULT(emscripten_set_mousedown_callback); + + checkCount(3); + + // removing mousedown / userData=NULL / mouse_callback_1 on the window target + ret = emscripten_remove_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, EMSCRIPTEN_EVENT_MOUSEDOWN, mouse_callback_1); + ASSERT_RESULT(emscripten_remove_callback); + + checkCount(2); + + emscripten_async_call(test_done, 0, 5000); + + + return 0; +} From 4260b0b675121e6ff1a1bd65ef05f0c4a5ac0596 Mon Sep 17 00:00:00 2001 From: Yan Pujante Date: Thu, 9 Oct 2025 10:50:29 -0700 Subject: [PATCH 02/10] Added missing signature --- src/lib/libsigs.js | 1 + test/test_html5_remove_callback.c | 4 +--- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/lib/libsigs.js b/src/lib/libsigs.js index 04e36d080ee3f..3078715a905e4 100644 --- a/src/lib/libsigs.js +++ b/src/lib/libsigs.js @@ -731,6 +731,7 @@ sigs = { emscripten_promise_resolve__sig: 'vpip', emscripten_promise_then__sig: 'ppppp', emscripten_random__sig: 'f', + emscripten_remove_callback__sig: 'ippip', emscripten_request_animation_frame__sig: 'ipp', emscripten_request_animation_frame_loop__sig: 'vpp', emscripten_request_fullscreen__sig: 'ipi', diff --git a/test/test_html5_remove_callback.c b/test/test_html5_remove_callback.c index 23932f1fe4dfa..b583775f89e39 100644 --- a/test/test_html5_remove_callback.c +++ b/test/test_html5_remove_callback.c @@ -85,6 +85,7 @@ int main() { // adding another keypress callback on the same target ret = emscripten_set_keypress_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, useCapture, key_callback_2); ASSERT_RESULT(emscripten_set_keypress_callback); + checkCount(3); // adding another keypress callback on the same target with different user data @@ -131,8 +132,5 @@ int main() { checkCount(2); - emscripten_async_call(test_done, 0, 5000); - - return 0; } From 6925d655c73d46e964afd39f300ca91a8c27a5e8 Mon Sep 17 00:00:00 2001 From: Yan Pujante Date: Fri, 10 Oct 2025 05:29:36 -0700 Subject: [PATCH 03/10] fixes test failure --- test/test_browser.py | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/test/test_browser.py b/test/test_browser.py index 3462e607a5679..6bdaa8facbf1f 100644 --- a/test/test_browser.py +++ b/test/test_browser.py @@ -2634,17 +2634,8 @@ def test_html5_core(self, opts): self.cflags.append('--pre-js=pre.js') self.btest_exit('test_html5_core.c', cflags=opts) - @parameterized({ - '': ([],), - 'closure': (['-O2', '-g1', '--closure=1'],), - 'pthread': (['-pthread'],), - 'proxy_to_pthread': (['-pthread', '-sPROXY_TO_PTHREAD'],), - 'legacy': (['-sMIN_FIREFOX_VERSION=0', '-sMIN_SAFARI_VERSION=0', '-sMIN_CHROME_VERSION=0', '-Wno-transpile'],), - }) - def test_html5_remove_callback(self, opts): - if self.is_wasm64() and '-sMIN_CHROME_VERSION=0' in opts: - self.skipTest('wasm64 does not support older browsers') - self.btest_exit('test_html5_remove_callback.c', cflags=opts) + def test_html5_remove_callback(self): + self.btest_exit('test_html5_remove_callback.c') @parameterized({ '': ([],), From 6583129c28345b9bbb16a7aeae066cbe261aa444 Mon Sep 17 00:00:00 2001 From: Yan Pujante Date: Sat, 8 Nov 2025 11:54:47 -0800 Subject: [PATCH 04/10] Added emscripten_remove_callback to doc --- site/source/docs/api_reference/html5.h.rst | 44 ++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/site/source/docs/api_reference/html5.h.rst b/site/source/docs/api_reference/html5.h.rst index 23155eefd4307..40e0536aab3ad 100644 --- a/site/source/docs/api_reference/html5.h.rst +++ b/site/source/docs/api_reference/html5.h.rst @@ -90,6 +90,50 @@ The ``useCapture`` parameter maps to ``useCapture`` in `EventTarget.addEventLis Most functions return the result using the type :c:data:`EMSCRIPTEN_RESULT`. Zero and positive values denote success. Negative values signal failure. None of the functions fail or abort by throwing a JavaScript or C++ exception. If a particular browser does not support the given feature, the value :c:data:`EMSCRIPTEN_RESULT_NOT_SUPPORTED` will be returned at the time the callback is registered. +Remove callback function +------------------------ + +In order to remove a callback, previously set via a ``emscripten_set_some_callback`` call, there is a dedicated and generic function for this purpose: + + .. code-block:: cpp + + EMSCRIPTEN_RESULT emscripten_remove_callback( + const char *target, // ID of the target HTML element. + void *userData, // User-defined data (passed to the callback). + int eventTypeId, // The event type ID (EMSCRIPTEN_EVENT_XXX). + void *callback // Callback function. + ); + + +The ``target``, ``userData`` and ``callback`` parameters are the same parameters provided in ``emscripten_set_some_callback`` with the only difference being that, since this function applies to all types of callbacks, the type of ``callback`` is ``void *``. + +The ``eventTypeId`` represents the event type, the same Id received in the callback functions. + + .. code-block:: cpp + + // Example + + bool my_mouse_callback_1(int eventType, const EmscriptenMouseEvent *mouseEvent, void *userData) { + // ... + } + + bool my_mouse_callback_2(int eventType, const EmscriptenMouseEvent *mouseEvent, void *userData) { + // ... + } + + void main() { + + // 1. set callbacks for mouse down and mouse move + emscripten_set_mousedown_callback("#mydiv", 0, my_mouse_callback_1); + emscripten_set_mousedown_callback("#mydiv", (void *) 34, my_mouse_callback_2); + emscripten_set_mousemove_callback("#mydiv", 0, my_mouse_callback_1); + + // 2. remove these callbacks + emscripten_remove_callback("#mydiv", 0, EMSCRIPTEN_EVENT_MOUSEDOWN, my_mouse_callback_1); + emscripten_remove_callback("#mydiv", (void *) 34, EMSCRIPTEN_EVENT_MOUSEDOWN, my_mouse_callback_2); + emscripten_remove_callback("#mydiv", 0, EMSCRIPTEN_EVENT_MOUSEMOVE, my_mouse_callback_1); + } + Callback functions ------------------ From cdf9b946c76be357c6653031405c53c452ce8f50 Mon Sep 17 00:00:00 2001 From: Yan Pujante Date: Sun, 9 Nov 2025 09:04:25 -0800 Subject: [PATCH 05/10] Updated Changelog --- ChangeLog.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ChangeLog.md b/ChangeLog.md index 612d47b20afa4..3960939981677 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -20,6 +20,8 @@ See docs/process.md for more on how version tagging works. 4.0.20 (in development) ----------------------- +- Added `emscripten_remove_callback` function in `html5.h` in order to be + able to remove a single callback. (#25535) 4.0.19 - 11/04/25 ----------------- From 581444b0674ae7b1ff405c19f6c78db7a175ad2d Mon Sep 17 00:00:00 2001 From: Yan Pujante Date: Sun, 9 Nov 2025 09:50:42 -0800 Subject: [PATCH 06/10] Automatic rebaseline of codesize expectations. NFC This is an automatic change generated by tools/maint/rebaseline_tests.py. The following (1) test expectation files were updated by running the tests with `--rebaseline`: ``` codesize/test_codesize_hello_dylink_all.json: 819522 => 819904 [+382 bytes / +0.05%] Average change: +0.05% (+0.05% - +0.05%) ``` --- test/codesize/test_codesize_hello_dylink_all.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/test/codesize/test_codesize_hello_dylink_all.json b/test/codesize/test_codesize_hello_dylink_all.json index bb29af482213c..ffc74c8ee5782 100644 --- a/test/codesize/test_codesize_hello_dylink_all.json +++ b/test/codesize/test_codesize_hello_dylink_all.json @@ -1,7 +1,7 @@ { - "a.out.js": 245483, + "a.out.js": 245865, "a.out.nodebug.wasm": 574039, - "total": 819522, + "total": 819904, "sent": [ "IMG_Init", "IMG_Load", @@ -741,6 +741,7 @@ "emscripten_promise_resolve", "emscripten_promise_then", "emscripten_random", + "emscripten_remove_callback", "emscripten_request_animation_frame", "emscripten_request_animation_frame_loop", "emscripten_request_fullscreen", From 42410abf4adc74c2ec03d614968a9a7194e72f81 Mon Sep 17 00:00:00 2001 From: Yan Pujante Date: Thu, 13 Nov 2025 10:27:03 -0800 Subject: [PATCH 07/10] Code review --- ChangeLog.md | 2 +- site/source/docs/api_reference/html5.h.rst | 16 +++++++----- src/lib/libhtml5.js | 6 ++--- src/lib/libsigs.js | 2 +- system/include/emscripten/html5.h | 2 +- test/test_browser.py | 4 +-- ...k.c => test_html5_remove_event_listener.c} | 26 +++++++++---------- 7 files changed, 30 insertions(+), 28 deletions(-) rename test/{test_html5_remove_callback.c => test_html5_remove_event_listener.c} (77%) diff --git a/ChangeLog.md b/ChangeLog.md index 3960939981677..bca63e261112d 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -20,7 +20,7 @@ See docs/process.md for more on how version tagging works. 4.0.20 (in development) ----------------------- -- Added `emscripten_remove_callback` function in `html5.h` in order to be +- Added `emscripten_html5_remove_event_listener` function in `html5.h` in order to be able to remove a single callback. (#25535) 4.0.19 - 11/04/25 diff --git a/site/source/docs/api_reference/html5.h.rst b/site/source/docs/api_reference/html5.h.rst index 40e0536aab3ad..b72bbb06b941d 100644 --- a/site/source/docs/api_reference/html5.h.rst +++ b/site/source/docs/api_reference/html5.h.rst @@ -90,14 +90,14 @@ The ``useCapture`` parameter maps to ``useCapture`` in `EventTarget.addEventLis Most functions return the result using the type :c:data:`EMSCRIPTEN_RESULT`. Zero and positive values denote success. Negative values signal failure. None of the functions fail or abort by throwing a JavaScript or C++ exception. If a particular browser does not support the given feature, the value :c:data:`EMSCRIPTEN_RESULT_NOT_SUPPORTED` will be returned at the time the callback is registered. -Remove callback function ------------------------- +Unregister function +------------------- -In order to remove a callback, previously set via a ``emscripten_set_some_callback`` call, there is a dedicated and generic function for this purpose: +In order to unregister a single event handler callback, call the following function: .. code-block:: cpp - EMSCRIPTEN_RESULT emscripten_remove_callback( + EMSCRIPTEN_RESULT emscripten_html5_remove_event_listener( const char *target, // ID of the target HTML element. void *userData, // User-defined data (passed to the callback). int eventTypeId, // The event type ID (EMSCRIPTEN_EVENT_XXX). @@ -107,6 +107,8 @@ In order to remove a callback, previously set via a ``emscripten_set_some_callba The ``target``, ``userData`` and ``callback`` parameters are the same parameters provided in ``emscripten_set_some_callback`` with the only difference being that, since this function applies to all types of callbacks, the type of ``callback`` is ``void *``. +Note in particular that the value of ``userData`` will need to match with the call that was used to register the callback. If you are having trouble, double check the value of ``userData``. + The ``eventTypeId`` represents the event type, the same Id received in the callback functions. .. code-block:: cpp @@ -129,9 +131,9 @@ The ``eventTypeId`` represents the event type, the same Id received in the callb emscripten_set_mousemove_callback("#mydiv", 0, my_mouse_callback_1); // 2. remove these callbacks - emscripten_remove_callback("#mydiv", 0, EMSCRIPTEN_EVENT_MOUSEDOWN, my_mouse_callback_1); - emscripten_remove_callback("#mydiv", (void *) 34, EMSCRIPTEN_EVENT_MOUSEDOWN, my_mouse_callback_2); - emscripten_remove_callback("#mydiv", 0, EMSCRIPTEN_EVENT_MOUSEMOVE, my_mouse_callback_1); + emscripten_html5_remove_event_listener("#mydiv", 0, EMSCRIPTEN_EVENT_MOUSEDOWN, my_mouse_callback_1); + emscripten_html5_remove_event_listener("#mydiv", (void *) 34, EMSCRIPTEN_EVENT_MOUSEDOWN, my_mouse_callback_2); + emscripten_html5_remove_event_listener("#mydiv", 0, EMSCRIPTEN_EVENT_MOUSEMOVE, my_mouse_callback_1); } diff --git a/src/lib/libhtml5.js b/src/lib/libhtml5.js index 30b08f54584bf..1419d9734e5d9 100644 --- a/src/lib/libhtml5.js +++ b/src/lib/libhtml5.js @@ -433,9 +433,9 @@ var LibraryHTML5 = { }, #endif - emscripten_remove_callback__proxy: 'sync', - emscripten_remove_callback__deps: ['$JSEvents', '$findEventTarget'], - emscripten_remove_callback: (target, userData, eventTypeId, callback) => { + emscripten_html5_remove_event_listener__proxy: 'sync', + emscripten_html5_remove_event_listener__deps: ['$JSEvents', '$findEventTarget'], + emscripten_html5_remove_event_listener: (target, userData, eventTypeId, callback) => { var eventHandler = { target: findEventTarget(target), userData, diff --git a/src/lib/libsigs.js b/src/lib/libsigs.js index 53c5f5fb685c4..88dec35ad5706 100644 --- a/src/lib/libsigs.js +++ b/src/lib/libsigs.js @@ -732,7 +732,7 @@ sigs = { emscripten_promise_resolve__sig: 'vpip', emscripten_promise_then__sig: 'ppppp', emscripten_random__sig: 'f', - emscripten_remove_callback__sig: 'ippip', + emscripten_html5_remove_event_listener__sig: 'ippip', emscripten_request_animation_frame__sig: 'ipp', emscripten_request_animation_frame_loop__sig: 'vpp', emscripten_request_fullscreen__sig: 'ipi', diff --git a/system/include/emscripten/html5.h b/system/include/emscripten/html5.h index 667a0a9c6d1d4..34004f10549f4 100644 --- a/system/include/emscripten/html5.h +++ b/system/include/emscripten/html5.h @@ -420,7 +420,7 @@ EMSCRIPTEN_RESULT emscripten_get_element_css_size(const char *target __attribute void emscripten_html5_remove_all_event_listeners(void); -EMSCRIPTEN_RESULT emscripten_remove_callback(const char *target __attribute__((nonnull)), void *userData, int eventTypeId, void *callback __attribute__((nonnull))); +EMSCRIPTEN_RESULT emscripten_html5_remove_event_listener(const char *target __attribute__((nonnull)), void *userData, int eventTypeId, void *callback __attribute__((nonnull))); #define EM_CALLBACK_THREAD_CONTEXT_MAIN_RUNTIME_THREAD ((pthread_t)0x1) #define EM_CALLBACK_THREAD_CONTEXT_CALLING_THREAD ((pthread_t)0x2) diff --git a/test/test_browser.py b/test/test_browser.py index e2bd08c610363..97349086f182c 100644 --- a/test/test_browser.py +++ b/test/test_browser.py @@ -2675,8 +2675,8 @@ def test_html5_core(self, opts): self.cflags.append('--pre-js=pre.js') self.btest_exit('test_html5_core.c', cflags=opts) - def test_html5_remove_callback(self): - self.btest_exit('test_html5_remove_callback.c') + def test_html5_remove_event_listener(self): + self.btest_exit('test_html5_remove_event_listener.c') @parameterized({ '': ([],), diff --git a/test/test_html5_remove_callback.c b/test/test_html5_remove_event_listener.c similarity index 77% rename from test/test_html5_remove_callback.c rename to test/test_html5_remove_event_listener.c index b583775f89e39..32e3f75d496d6 100644 --- a/test/test_html5_remove_callback.c +++ b/test/test_html5_remove_event_listener.c @@ -63,7 +63,7 @@ int main() { void *userData3 = "3"; // first we check for invalid parameters - assert(emscripten_remove_callback("this_dom_element_does_not_exist", NULL, 0, key_callback_1) == EMSCRIPTEN_RESULT_UNKNOWN_TARGET); + assert(emscripten_html5_remove_event_listener("this_dom_element_does_not_exist", NULL, 0, key_callback_1) == EMSCRIPTEN_RESULT_UNKNOWN_TARGET); checkCount(0); @@ -77,8 +77,8 @@ int main() { checkCount(3); // removing keydown event - ret = emscripten_remove_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, EMSCRIPTEN_EVENT_KEYDOWN, key_callback_1); - ASSERT_RESULT(emscripten_remove_callback); + ret = emscripten_html5_remove_event_listener(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, EMSCRIPTEN_EVENT_KEYDOWN, key_callback_1); + ASSERT_RESULT(emscripten_html5_remove_event_listener); checkCount(2); @@ -95,26 +95,26 @@ int main() { checkCount(4); // removing a combination that does not exist (no mouse_callback_1 registered) - ret = emscripten_remove_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, EMSCRIPTEN_EVENT_KEYPRESS, mouse_callback_1); - ASSERT_RESULT(emscripten_remove_callback); + ret = emscripten_html5_remove_event_listener(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, EMSCRIPTEN_EVENT_KEYPRESS, mouse_callback_1); + ASSERT_RESULT(emscripten_html5_remove_event_listener); checkCount(4); // removing keypress / userData=NULL / key_callback_2 - ret = emscripten_remove_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, EMSCRIPTEN_EVENT_KEYPRESS, key_callback_2); - ASSERT_RESULT(emscripten_remove_callback); + ret = emscripten_html5_remove_event_listener(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, EMSCRIPTEN_EVENT_KEYPRESS, key_callback_2); + ASSERT_RESULT(emscripten_html5_remove_event_listener); checkCount(3); // removing keypress / userData=NULL / key_callback_1 - ret = emscripten_remove_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, EMSCRIPTEN_EVENT_KEYPRESS, key_callback_1); - ASSERT_RESULT(emscripten_remove_callback); + ret = emscripten_html5_remove_event_listener(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, EMSCRIPTEN_EVENT_KEYPRESS, key_callback_1); + ASSERT_RESULT(emscripten_html5_remove_event_listener); checkCount(2); // removing keypress / userData=3 / key_callback_2 - ret = emscripten_remove_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, userData3, EMSCRIPTEN_EVENT_KEYPRESS, key_callback_2); - ASSERT_RESULT(emscripten_remove_callback); + ret = emscripten_html5_remove_event_listener(EMSCRIPTEN_EVENT_TARGET_WINDOW, userData3, EMSCRIPTEN_EVENT_KEYPRESS, key_callback_2); + ASSERT_RESULT(emscripten_html5_remove_event_listener); checkCount(1); @@ -127,8 +127,8 @@ int main() { checkCount(3); // removing mousedown / userData=NULL / mouse_callback_1 on the window target - ret = emscripten_remove_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, EMSCRIPTEN_EVENT_MOUSEDOWN, mouse_callback_1); - ASSERT_RESULT(emscripten_remove_callback); + ret = emscripten_html5_remove_event_listener(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, EMSCRIPTEN_EVENT_MOUSEDOWN, mouse_callback_1); + ASSERT_RESULT(emscripten_html5_remove_event_listener); checkCount(2); From d1b426f0c8ccda46e78014c3b30500f3a5ac8bf6 Mon Sep 17 00:00:00 2001 From: Yan Pujante Date: Thu, 13 Nov 2025 10:34:22 -0800 Subject: [PATCH 08/10] Automatic rebaseline of codesize expectations. NFC This is an automatic change generated by tools/maint/rebaseline_tests.py. The following (30) test expectation files were updated by running the tests with `--rebaseline`: ``` codesize/test_codesize_cxx_ctors1.json: 149126 => 149173 [+47 bytes / +0.03%] codesize/test_codesize_cxx_ctors2.json: 148530 => 148577 [+47 bytes / +0.03%] codesize/test_codesize_cxx_except.json: 194589 => 194636 [+47 bytes / +0.02%] codesize/test_codesize_cxx_except_wasm.json: 164106 => 164153 [+47 bytes / +0.03%] codesize/test_codesize_cxx_except_wasm_legacy.json: 161764 => 161811 [+47 bytes / +0.03%] codesize/test_codesize_cxx_lto.json: 125452 => 125448 [-4 bytes / -0.00%] codesize/test_codesize_cxx_mangle.json: 258665 => 258718 [+53 bytes / +0.02%] codesize/test_codesize_cxx_noexcept.json: 151543 => 151590 [+47 bytes / +0.03%] codesize/test_codesize_cxx_wasmfs.json: 176720 => 176912 [+192 bytes / +0.11%] codesize/test_codesize_files_wasmfs.json: 55679 => 55818 [+139 bytes / +0.25%] codesize/test_codesize_hello_O0.json: 39336 => 39311 [-25 bytes / -0.06%] codesize/test_codesize_hello_dylink.json: 44313 => 44309 [-4 bytes / -0.01%] codesize/test_codesize_hello_dylink_all.json: 819266 => 819781 [+515 bytes / +0.06%] codesize/test_codesize_mem_O3.json: 9612 => 9610 [-2 bytes / -0.02%] codesize/test_codesize_mem_O3_grow.json: 9898 => 9896 [-2 bytes / -0.02%] codesize/test_codesize_mem_O3_grow_standalone.json: 9651 => 9649 [-2 bytes / -0.02%] codesize/test_codesize_mem_O3_standalone.json: 9509 => 9507 [-2 bytes / -0.02%] codesize/test_codesize_mem_O3_standalone_lib.json: 8804 => 8802 [-2 bytes / -0.02%] codesize/test_codesize_mem_O3_standalone_narg.json: 8837 => 8835 [-2 bytes / -0.02%] codesize/test_codesize_mem_O3_standalone_narg_flto.json: 7649 => 7647 [-2 bytes / -0.03%] codesize/test_codesize_minimal_pthreads.json: 27214 => 27208 [-6 bytes / -0.02%] codesize/test_codesize_minimal_pthreads_memgrowth.json: 27642 => 27636 [-6 bytes / -0.02%] codesize/test_minimal_runtime_code_size_hello_webgl2_wasm.json: 13199 => 13204 [+5 bytes / +0.04%] codesize/test_minimal_runtime_code_size_hello_webgl2_wasm2js.json: 18543 => 18554 [+11 bytes / +0.06%] codesize/test_minimal_runtime_code_size_hello_webgl2_wasm_singlefile.json: 15135 => 15147 [+12 bytes / +0.08%] codesize/test_minimal_runtime_code_size_hello_webgl_wasm.json: 12737 => 12742 [+5 bytes / +0.04%] codesize/test_minimal_runtime_code_size_hello_webgl_wasm2js.json: 18070 => 18081 [+11 bytes / +0.06%] codesize/test_minimal_runtime_code_size_random_printf_wasm.json: 10982 => 10993 [+11 bytes / +0.10%] codesize/test_minimal_runtime_code_size_random_printf_wasm2js.json: 17225 => 17229 [+4 bytes / +0.02%] codesize/test_unoptimized_code_size.json: 180978 => 180954 [-24 bytes / -0.01%] Average change: +0.02% (-0.06% - +0.25%) ``` --- test/codesize/test_codesize_cxx_ctors1.json | 8 ++++---- test/codesize/test_codesize_cxx_ctors2.json | 8 ++++---- test/codesize/test_codesize_cxx_except.json | 8 ++++---- test/codesize/test_codesize_cxx_except_wasm.json | 8 ++++---- .../test_codesize_cxx_except_wasm_legacy.json | 8 ++++---- test/codesize/test_codesize_cxx_lto.json | 8 ++++---- test/codesize/test_codesize_cxx_mangle.json | 8 ++++---- test/codesize/test_codesize_cxx_noexcept.json | 8 ++++---- test/codesize/test_codesize_cxx_wasmfs.json | 8 ++++---- test/codesize/test_codesize_files_wasmfs.json | 8 ++++---- test/codesize/test_codesize_hello_O0.json | 8 ++++---- test/codesize/test_codesize_hello_dylink.json | 8 ++++---- .../codesize/test_codesize_hello_dylink_all.json | 8 ++++---- test/codesize/test_codesize_mem_O3.json | 8 ++++---- test/codesize/test_codesize_mem_O3_grow.json | 8 ++++---- .../test_codesize_mem_O3_grow_standalone.json | 8 ++++---- .../test_codesize_mem_O3_standalone.json | 8 ++++---- .../test_codesize_mem_O3_standalone_lib.json | 8 ++++---- .../test_codesize_mem_O3_standalone_narg.json | 8 ++++---- ...est_codesize_mem_O3_standalone_narg_flto.json | 8 ++++---- .../codesize/test_codesize_minimal_pthreads.json | 4 ++-- ...test_codesize_minimal_pthreads_memgrowth.json | 4 ++-- ...imal_runtime_code_size_hello_webgl2_wasm.json | 8 ++++---- ...l_runtime_code_size_hello_webgl2_wasm2js.json | 8 ++++---- ...e_code_size_hello_webgl2_wasm_singlefile.json | 4 ++-- ...nimal_runtime_code_size_hello_webgl_wasm.json | 8 ++++---- ...al_runtime_code_size_hello_webgl_wasm2js.json | 8 ++++---- ...mal_runtime_code_size_random_printf_wasm.json | 4 ++-- ..._runtime_code_size_random_printf_wasm2js.json | 2 +- test/codesize/test_unoptimized_code_size.json | 16 ++++++++-------- 30 files changed, 113 insertions(+), 113 deletions(-) diff --git a/test/codesize/test_codesize_cxx_ctors1.json b/test/codesize/test_codesize_cxx_ctors1.json index ed252dec6a4c9..f47f641d6f030 100644 --- a/test/codesize/test_codesize_cxx_ctors1.json +++ b/test/codesize/test_codesize_cxx_ctors1.json @@ -1,10 +1,10 @@ { "a.out.js": 19670, "a.out.js.gz": 8152, - "a.out.nodebug.wasm": 129456, - "a.out.nodebug.wasm.gz": 49187, - "total": 149126, - "total_gz": 57339, + "a.out.nodebug.wasm": 129503, + "a.out.nodebug.wasm.gz": 49248, + "total": 149173, + "total_gz": 57400, "sent": [ "__cxa_throw", "_abort_js", diff --git a/test/codesize/test_codesize_cxx_ctors2.json b/test/codesize/test_codesize_cxx_ctors2.json index d32b7a508041a..d49c9f1b6096c 100644 --- a/test/codesize/test_codesize_cxx_ctors2.json +++ b/test/codesize/test_codesize_cxx_ctors2.json @@ -1,10 +1,10 @@ { "a.out.js": 19647, "a.out.js.gz": 8139, - "a.out.nodebug.wasm": 128883, - "a.out.nodebug.wasm.gz": 48829, - "total": 148530, - "total_gz": 56968, + "a.out.nodebug.wasm": 128930, + "a.out.nodebug.wasm.gz": 48886, + "total": 148577, + "total_gz": 57025, "sent": [ "__cxa_throw", "_abort_js", diff --git a/test/codesize/test_codesize_cxx_except.json b/test/codesize/test_codesize_cxx_except.json index f61de777b8ea4..4dde3d8ee470a 100644 --- a/test/codesize/test_codesize_cxx_except.json +++ b/test/codesize/test_codesize_cxx_except.json @@ -1,10 +1,10 @@ { "a.out.js": 23325, "a.out.js.gz": 9128, - "a.out.nodebug.wasm": 171264, - "a.out.nodebug.wasm.gz": 57309, - "total": 194589, - "total_gz": 66437, + "a.out.nodebug.wasm": 171311, + "a.out.nodebug.wasm.gz": 57348, + "total": 194636, + "total_gz": 66476, "sent": [ "__cxa_begin_catch", "__cxa_end_catch", diff --git a/test/codesize/test_codesize_cxx_except_wasm.json b/test/codesize/test_codesize_cxx_except_wasm.json index ead711374a12c..12f821fb72467 100644 --- a/test/codesize/test_codesize_cxx_except_wasm.json +++ b/test/codesize/test_codesize_cxx_except_wasm.json @@ -1,10 +1,10 @@ { "a.out.js": 19486, "a.out.js.gz": 8077, - "a.out.nodebug.wasm": 144620, - "a.out.nodebug.wasm.gz": 54869, - "total": 164106, - "total_gz": 62946, + "a.out.nodebug.wasm": 144667, + "a.out.nodebug.wasm.gz": 54907, + "total": 164153, + "total_gz": 62984, "sent": [ "_abort_js", "_tzset_js", diff --git a/test/codesize/test_codesize_cxx_except_wasm_legacy.json b/test/codesize/test_codesize_cxx_except_wasm_legacy.json index 611578a74066c..89914a35b80ab 100644 --- a/test/codesize/test_codesize_cxx_except_wasm_legacy.json +++ b/test/codesize/test_codesize_cxx_except_wasm_legacy.json @@ -1,10 +1,10 @@ { "a.out.js": 19555, "a.out.js.gz": 8099, - "a.out.nodebug.wasm": 142209, - "a.out.nodebug.wasm.gz": 54320, - "total": 161764, - "total_gz": 62419, + "a.out.nodebug.wasm": 142256, + "a.out.nodebug.wasm.gz": 54366, + "total": 161811, + "total_gz": 62465, "sent": [ "_abort_js", "_tzset_js", diff --git a/test/codesize/test_codesize_cxx_lto.json b/test/codesize/test_codesize_cxx_lto.json index a92fdc624c5cf..b7a9e757a3afc 100644 --- a/test/codesize/test_codesize_cxx_lto.json +++ b/test/codesize/test_codesize_cxx_lto.json @@ -1,10 +1,10 @@ { "a.out.js": 19009, "a.out.js.gz": 7829, - "a.out.nodebug.wasm": 106443, - "a.out.nodebug.wasm.gz": 42551, - "total": 125452, - "total_gz": 50380, + "a.out.nodebug.wasm": 106439, + "a.out.nodebug.wasm.gz": 42591, + "total": 125448, + "total_gz": 50420, "sent": [ "a (emscripten_resize_heap)", "b (_setitimer_js)", diff --git a/test/codesize/test_codesize_cxx_mangle.json b/test/codesize/test_codesize_cxx_mangle.json index a25f412a3bb1c..2b7f4d6cee050 100644 --- a/test/codesize/test_codesize_cxx_mangle.json +++ b/test/codesize/test_codesize_cxx_mangle.json @@ -1,10 +1,10 @@ { "a.out.js": 23375, "a.out.js.gz": 9148, - "a.out.nodebug.wasm": 235290, - "a.out.nodebug.wasm.gz": 78915, - "total": 258665, - "total_gz": 88063, + "a.out.nodebug.wasm": 235343, + "a.out.nodebug.wasm.gz": 78952, + "total": 258718, + "total_gz": 88100, "sent": [ "__cxa_begin_catch", "__cxa_end_catch", diff --git a/test/codesize/test_codesize_cxx_noexcept.json b/test/codesize/test_codesize_cxx_noexcept.json index d927f2cb3ddda..ae4ac3fbb7d92 100644 --- a/test/codesize/test_codesize_cxx_noexcept.json +++ b/test/codesize/test_codesize_cxx_noexcept.json @@ -1,10 +1,10 @@ { "a.out.js": 19670, "a.out.js.gz": 8152, - "a.out.nodebug.wasm": 131873, - "a.out.nodebug.wasm.gz": 50187, - "total": 151543, - "total_gz": 58339, + "a.out.nodebug.wasm": 131920, + "a.out.nodebug.wasm.gz": 50242, + "total": 151590, + "total_gz": 58394, "sent": [ "__cxa_throw", "_abort_js", diff --git a/test/codesize/test_codesize_cxx_wasmfs.json b/test/codesize/test_codesize_cxx_wasmfs.json index 8e63df0bc2849..ea758037385fb 100644 --- a/test/codesize/test_codesize_cxx_wasmfs.json +++ b/test/codesize/test_codesize_cxx_wasmfs.json @@ -1,10 +1,10 @@ { "a.out.js": 7059, "a.out.js.gz": 3330, - "a.out.nodebug.wasm": 169661, - "a.out.nodebug.wasm.gz": 62933, - "total": 176720, - "total_gz": 66263, + "a.out.nodebug.wasm": 169853, + "a.out.nodebug.wasm.gz": 62997, + "total": 176912, + "total_gz": 66327, "sent": [ "__cxa_throw", "_abort_js", diff --git a/test/codesize/test_codesize_files_wasmfs.json b/test/codesize/test_codesize_files_wasmfs.json index 46d669b90a984..dd6a38c659575 100644 --- a/test/codesize/test_codesize_files_wasmfs.json +++ b/test/codesize/test_codesize_files_wasmfs.json @@ -1,10 +1,10 @@ { "a.out.js": 5465, "a.out.js.gz": 2576, - "a.out.nodebug.wasm": 50214, - "a.out.nodebug.wasm.gz": 18061, - "total": 55679, - "total_gz": 20637, + "a.out.nodebug.wasm": 50353, + "a.out.nodebug.wasm.gz": 18097, + "total": 55818, + "total_gz": 20673, "sent": [ "a (emscripten_date_now)", "b (emscripten_err)", diff --git a/test/codesize/test_codesize_hello_O0.json b/test/codesize/test_codesize_hello_O0.json index 98946f3d011db..e6497a8e4b083 100644 --- a/test/codesize/test_codesize_hello_O0.json +++ b/test/codesize/test_codesize_hello_O0.json @@ -1,10 +1,10 @@ { "a.out.js": 24194, "a.out.js.gz": 8694, - "a.out.nodebug.wasm": 15142, - "a.out.nodebug.wasm.gz": 7471, - "total": 39336, - "total_gz": 16165, + "a.out.nodebug.wasm": 15117, + "a.out.nodebug.wasm.gz": 7456, + "total": 39311, + "total_gz": 16150, "sent": [ "fd_write" ], diff --git a/test/codesize/test_codesize_hello_dylink.json b/test/codesize/test_codesize_hello_dylink.json index fc8649404fd3b..ca963a0cb05fa 100644 --- a/test/codesize/test_codesize_hello_dylink.json +++ b/test/codesize/test_codesize_hello_dylink.json @@ -1,10 +1,10 @@ { "a.out.js": 26552, "a.out.js.gz": 11345, - "a.out.nodebug.wasm": 17761, - "a.out.nodebug.wasm.gz": 9003, - "total": 44313, - "total_gz": 20348, + "a.out.nodebug.wasm": 17757, + "a.out.nodebug.wasm.gz": 8972, + "total": 44309, + "total_gz": 20317, "sent": [ "__syscall_stat64", "emscripten_resize_heap", diff --git a/test/codesize/test_codesize_hello_dylink_all.json b/test/codesize/test_codesize_hello_dylink_all.json index 117d772876e53..e8ed567046230 100644 --- a/test/codesize/test_codesize_hello_dylink_all.json +++ b/test/codesize/test_codesize_hello_dylink_all.json @@ -1,7 +1,7 @@ { - "a.out.js": 245483, - "a.out.nodebug.wasm": 573783, - "total": 819266, + "a.out.js": 245877, + "a.out.nodebug.wasm": 573904, + "total": 819781, "sent": [ "IMG_Init", "IMG_Load", @@ -681,6 +681,7 @@ "emscripten_has_asyncify", "emscripten_hide_mouse", "emscripten_html5_remove_all_event_listeners", + "emscripten_html5_remove_event_listener", "emscripten_idb_async_clear", "emscripten_idb_async_delete", "emscripten_idb_async_exists", @@ -741,7 +742,6 @@ "emscripten_promise_resolve", "emscripten_promise_then", "emscripten_random", - "emscripten_remove_callback", "emscripten_request_animation_frame", "emscripten_request_animation_frame_loop", "emscripten_request_fullscreen", diff --git a/test/codesize/test_codesize_mem_O3.json b/test/codesize/test_codesize_mem_O3.json index d915c1d867df1..fb15e671b5313 100644 --- a/test/codesize/test_codesize_mem_O3.json +++ b/test/codesize/test_codesize_mem_O3.json @@ -1,10 +1,10 @@ { "a.out.js": 4350, "a.out.js.gz": 2094, - "a.out.nodebug.wasm": 5262, - "a.out.nodebug.wasm.gz": 2416, - "total": 9612, - "total_gz": 4510, + "a.out.nodebug.wasm": 5260, + "a.out.nodebug.wasm.gz": 2418, + "total": 9610, + "total_gz": 4512, "sent": [ "a (emscripten_resize_heap)" ], diff --git a/test/codesize/test_codesize_mem_O3_grow.json b/test/codesize/test_codesize_mem_O3_grow.json index a11e82b555fbe..58a83589cb501 100644 --- a/test/codesize/test_codesize_mem_O3_grow.json +++ b/test/codesize/test_codesize_mem_O3_grow.json @@ -1,10 +1,10 @@ { "a.out.js": 4635, "a.out.js.gz": 2243, - "a.out.nodebug.wasm": 5263, - "a.out.nodebug.wasm.gz": 2416, - "total": 9898, - "total_gz": 4659, + "a.out.nodebug.wasm": 5261, + "a.out.nodebug.wasm.gz": 2418, + "total": 9896, + "total_gz": 4661, "sent": [ "a (emscripten_resize_heap)" ], diff --git a/test/codesize/test_codesize_mem_O3_grow_standalone.json b/test/codesize/test_codesize_mem_O3_grow_standalone.json index 02bc526683d28..e46cc9658531b 100644 --- a/test/codesize/test_codesize_mem_O3_grow_standalone.json +++ b/test/codesize/test_codesize_mem_O3_grow_standalone.json @@ -1,10 +1,10 @@ { "a.out.js": 4102, "a.out.js.gz": 1990, - "a.out.nodebug.wasm": 5549, - "a.out.nodebug.wasm.gz": 2593, - "total": 9651, - "total_gz": 4583, + "a.out.nodebug.wasm": 5547, + "a.out.nodebug.wasm.gz": 2597, + "total": 9649, + "total_gz": 4587, "sent": [ "args_get", "args_sizes_get", diff --git a/test/codesize/test_codesize_mem_O3_standalone.json b/test/codesize/test_codesize_mem_O3_standalone.json index 85b4cbd07c4db..3b151aa1fa531 100644 --- a/test/codesize/test_codesize_mem_O3_standalone.json +++ b/test/codesize/test_codesize_mem_O3_standalone.json @@ -1,10 +1,10 @@ { "a.out.js": 4035, "a.out.js.gz": 1954, - "a.out.nodebug.wasm": 5474, - "a.out.nodebug.wasm.gz": 2534, - "total": 9509, - "total_gz": 4488, + "a.out.nodebug.wasm": 5472, + "a.out.nodebug.wasm.gz": 2538, + "total": 9507, + "total_gz": 4492, "sent": [ "args_get", "args_sizes_get", diff --git a/test/codesize/test_codesize_mem_O3_standalone_lib.json b/test/codesize/test_codesize_mem_O3_standalone_lib.json index 119da79c5a37e..e6038e024a9ee 100644 --- a/test/codesize/test_codesize_mem_O3_standalone_lib.json +++ b/test/codesize/test_codesize_mem_O3_standalone_lib.json @@ -1,10 +1,10 @@ { "a.out.js": 3563, "a.out.js.gz": 1689, - "a.out.nodebug.wasm": 5241, - "a.out.nodebug.wasm.gz": 2353, - "total": 8804, - "total_gz": 4042, + "a.out.nodebug.wasm": 5239, + "a.out.nodebug.wasm.gz": 2360, + "total": 8802, + "total_gz": 4049, "sent": [], "imports": [], "exports": [ diff --git a/test/codesize/test_codesize_mem_O3_standalone_narg.json b/test/codesize/test_codesize_mem_O3_standalone_narg.json index ac8d3eacfb07f..ccfba4a468a28 100644 --- a/test/codesize/test_codesize_mem_O3_standalone_narg.json +++ b/test/codesize/test_codesize_mem_O3_standalone_narg.json @@ -1,10 +1,10 @@ { "a.out.js": 3570, "a.out.js.gz": 1701, - "a.out.nodebug.wasm": 5267, - "a.out.nodebug.wasm.gz": 2391, - "total": 8837, - "total_gz": 4092, + "a.out.nodebug.wasm": 5265, + "a.out.nodebug.wasm.gz": 2397, + "total": 8835, + "total_gz": 4098, "sent": [ "proc_exit" ], diff --git a/test/codesize/test_codesize_mem_O3_standalone_narg_flto.json b/test/codesize/test_codesize_mem_O3_standalone_narg_flto.json index 913e963329b60..322ae921f0b30 100644 --- a/test/codesize/test_codesize_mem_O3_standalone_narg_flto.json +++ b/test/codesize/test_codesize_mem_O3_standalone_narg_flto.json @@ -1,10 +1,10 @@ { "a.out.js": 3570, "a.out.js.gz": 1701, - "a.out.nodebug.wasm": 4079, - "a.out.nodebug.wasm.gz": 2025, - "total": 7649, - "total_gz": 3726, + "a.out.nodebug.wasm": 4077, + "a.out.nodebug.wasm.gz": 2031, + "total": 7647, + "total_gz": 3732, "sent": [ "proc_exit" ], diff --git a/test/codesize/test_codesize_minimal_pthreads.json b/test/codesize/test_codesize_minimal_pthreads.json index 5287655f2d28c..ea2b2571aa3f8 100644 --- a/test/codesize/test_codesize_minimal_pthreads.json +++ b/test/codesize/test_codesize_minimal_pthreads.json @@ -1,9 +1,9 @@ { "a.out.js": 7609, "a.out.js.gz": 3762, - "a.out.nodebug.wasm": 19605, + "a.out.nodebug.wasm": 19599, "a.out.nodebug.wasm.gz": 9063, - "total": 27214, + "total": 27208, "total_gz": 12825, "sent": [ "a (memory)", diff --git a/test/codesize/test_codesize_minimal_pthreads_memgrowth.json b/test/codesize/test_codesize_minimal_pthreads_memgrowth.json index abb13ded1bd90..03cff647dc2a3 100644 --- a/test/codesize/test_codesize_minimal_pthreads_memgrowth.json +++ b/test/codesize/test_codesize_minimal_pthreads_memgrowth.json @@ -1,9 +1,9 @@ { "a.out.js": 8036, "a.out.js.gz": 3962, - "a.out.nodebug.wasm": 19606, + "a.out.nodebug.wasm": 19600, "a.out.nodebug.wasm.gz": 9064, - "total": 27642, + "total": 27636, "total_gz": 13026, "sent": [ "a (memory)", diff --git a/test/codesize/test_minimal_runtime_code_size_hello_webgl2_wasm.json b/test/codesize/test_minimal_runtime_code_size_hello_webgl2_wasm.json index 39a34090e54f5..1d93a5fc32ae1 100644 --- a/test/codesize/test_minimal_runtime_code_size_hello_webgl2_wasm.json +++ b/test/codesize/test_minimal_runtime_code_size_hello_webgl2_wasm.json @@ -3,8 +3,8 @@ "a.html.gz": 321, "a.js": 4437, "a.js.gz": 2281, - "a.wasm": 8308, - "a.wasm.gz": 5653, - "total": 13199, - "total_gz": 8255 + "a.wasm": 8313, + "a.wasm.gz": 5669, + "total": 13204, + "total_gz": 8271 } diff --git a/test/codesize/test_minimal_runtime_code_size_hello_webgl2_wasm2js.json b/test/codesize/test_minimal_runtime_code_size_hello_webgl2_wasm2js.json index 2203fd01b9cd5..50279d69b2c8b 100644 --- a/test/codesize/test_minimal_runtime_code_size_hello_webgl2_wasm2js.json +++ b/test/codesize/test_minimal_runtime_code_size_hello_webgl2_wasm2js.json @@ -1,8 +1,8 @@ { "a.html": 346, "a.html.gz": 255, - "a.js": 18197, - "a.js.gz": 9824, - "total": 18543, - "total_gz": 10079 + "a.js": 18208, + "a.js.gz": 9836, + "total": 18554, + "total_gz": 10091 } diff --git a/test/codesize/test_minimal_runtime_code_size_hello_webgl2_wasm_singlefile.json b/test/codesize/test_minimal_runtime_code_size_hello_webgl2_wasm_singlefile.json index 25919f7846f64..873fcdab7a2c7 100644 --- a/test/codesize/test_minimal_runtime_code_size_hello_webgl2_wasm_singlefile.json +++ b/test/codesize/test_minimal_runtime_code_size_hello_webgl2_wasm_singlefile.json @@ -1,4 +1,4 @@ { - "a.html": 15135, - "a.html.gz": 9087 + "a.html": 15147, + "a.html.gz": 9111 } diff --git a/test/codesize/test_minimal_runtime_code_size_hello_webgl_wasm.json b/test/codesize/test_minimal_runtime_code_size_hello_webgl_wasm.json index afce7f00aabd9..f7cdc47c6763e 100644 --- a/test/codesize/test_minimal_runtime_code_size_hello_webgl_wasm.json +++ b/test/codesize/test_minimal_runtime_code_size_hello_webgl_wasm.json @@ -3,8 +3,8 @@ "a.html.gz": 321, "a.js": 3975, "a.js.gz": 2123, - "a.wasm": 8308, - "a.wasm.gz": 5653, - "total": 12737, - "total_gz": 8097 + "a.wasm": 8313, + "a.wasm.gz": 5669, + "total": 12742, + "total_gz": 8113 } diff --git a/test/codesize/test_minimal_runtime_code_size_hello_webgl_wasm2js.json b/test/codesize/test_minimal_runtime_code_size_hello_webgl_wasm2js.json index 03edd77fa3098..d1bd3d803b3b4 100644 --- a/test/codesize/test_minimal_runtime_code_size_hello_webgl_wasm2js.json +++ b/test/codesize/test_minimal_runtime_code_size_hello_webgl_wasm2js.json @@ -1,8 +1,8 @@ { "a.html": 346, "a.html.gz": 255, - "a.js": 17724, - "a.js.gz": 9659, - "total": 18070, - "total_gz": 9914 + "a.js": 17735, + "a.js.gz": 9677, + "total": 18081, + "total_gz": 9932 } diff --git a/test/codesize/test_minimal_runtime_code_size_random_printf_wasm.json b/test/codesize/test_minimal_runtime_code_size_random_printf_wasm.json index d986a4a74b38c..a48c21aba3f37 100644 --- a/test/codesize/test_minimal_runtime_code_size_random_printf_wasm.json +++ b/test/codesize/test_minimal_runtime_code_size_random_printf_wasm.json @@ -1,4 +1,4 @@ { - "a.html": 10982, - "a.html.gz": 5754 + "a.html": 10993, + "a.html.gz": 5767 } diff --git a/test/codesize/test_minimal_runtime_code_size_random_printf_wasm2js.json b/test/codesize/test_minimal_runtime_code_size_random_printf_wasm2js.json index 664b302ea20c6..55501935ef88c 100644 --- a/test/codesize/test_minimal_runtime_code_size_random_printf_wasm2js.json +++ b/test/codesize/test_minimal_runtime_code_size_random_printf_wasm2js.json @@ -1,4 +1,4 @@ { - "a.html": 17225, + "a.html": 17229, "a.html.gz": 7534 } diff --git a/test/codesize/test_unoptimized_code_size.json b/test/codesize/test_unoptimized_code_size.json index e00a466d7d98c..6a8b4979da572 100644 --- a/test/codesize/test_unoptimized_code_size.json +++ b/test/codesize/test_unoptimized_code_size.json @@ -1,16 +1,16 @@ { "hello_world.js": 56928, "hello_world.js.gz": 17700, - "hello_world.wasm": 15142, - "hello_world.wasm.gz": 7471, + "hello_world.wasm": 15117, + "hello_world.wasm.gz": 7456, "no_asserts.js": 26632, "no_asserts.js.gz": 8884, - "no_asserts.wasm": 12191, - "no_asserts.wasm.gz": 6000, + "no_asserts.wasm": 12217, + "no_asserts.wasm.gz": 6015, "strict.js": 54943, "strict.js.gz": 17045, - "strict.wasm": 15142, - "strict.wasm.gz": 7468, - "total": 180978, - "total_gz": 64568 + "strict.wasm": 15117, + "strict.wasm.gz": 7451, + "total": 180954, + "total_gz": 64551 } From f7bd5d5ac9690bb8cfc900125c8e2886db6dbdd0 Mon Sep 17 00:00:00 2001 From: Yan Pujante Date: Thu, 13 Nov 2025 10:58:34 -0800 Subject: [PATCH 09/10] fixed order --- src/lib/libsigs.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/libsigs.js b/src/lib/libsigs.js index 88dec35ad5706..47ad8f0892578 100644 --- a/src/lib/libsigs.js +++ b/src/lib/libsigs.js @@ -666,6 +666,7 @@ sigs = { emscripten_has_threading_support__sig: 'i', emscripten_hide_mouse__sig: 'v', emscripten_html5_remove_all_event_listeners__sig: 'v', + emscripten_html5_remove_event_listener__sig: 'ippip', emscripten_idb_async_clear__sig: 'vpppp', emscripten_idb_async_delete__sig: 'vppppp', emscripten_idb_async_exists__sig: 'vppppp', @@ -732,7 +733,6 @@ sigs = { emscripten_promise_resolve__sig: 'vpip', emscripten_promise_then__sig: 'ppppp', emscripten_random__sig: 'f', - emscripten_html5_remove_event_listener__sig: 'ippip', emscripten_request_animation_frame__sig: 'ipp', emscripten_request_animation_frame_loop__sig: 'vpp', emscripten_request_fullscreen__sig: 'ipi', From 1757110892f5928549a42c6ae1fc7a28a1648313 Mon Sep 17 00:00:00 2001 From: Yan Pujante Date: Fri, 14 Nov 2025 05:59:09 -0800 Subject: [PATCH 10/10] aligning codesize with "main" --- test/codesize/test_codesize_cxx_ctors1.json | 8 ++++---- test/codesize/test_codesize_cxx_ctors2.json | 8 ++++---- test/codesize/test_codesize_cxx_except.json | 8 ++++---- test/codesize/test_codesize_cxx_except_wasm.json | 8 ++++---- .../test_codesize_cxx_except_wasm_legacy.json | 8 ++++---- test/codesize/test_codesize_cxx_lto.json | 8 ++++---- test/codesize/test_codesize_cxx_mangle.json | 8 ++++---- test/codesize/test_codesize_cxx_noexcept.json | 8 ++++---- test/codesize/test_codesize_cxx_wasmfs.json | 8 ++++---- test/codesize/test_codesize_files_wasmfs.json | 8 ++++---- test/codesize/test_codesize_hello_O0.json | 8 ++++---- test/codesize/test_codesize_mem_O3.json | 8 ++++---- test/codesize/test_codesize_mem_O3_grow.json | 8 ++++---- .../test_codesize_mem_O3_grow_standalone.json | 8 ++++---- .../test_codesize_mem_O3_standalone.json | 8 ++++---- .../test_codesize_mem_O3_standalone_lib.json | 8 ++++---- .../test_codesize_mem_O3_standalone_narg.json | 8 ++++---- ...est_codesize_mem_O3_standalone_narg_flto.json | 8 ++++---- .../codesize/test_codesize_minimal_pthreads.json | 4 ++-- ...test_codesize_minimal_pthreads_memgrowth.json | 4 ++-- ...imal_runtime_code_size_hello_webgl2_wasm.json | 8 ++++---- ...l_runtime_code_size_hello_webgl2_wasm2js.json | 8 ++++---- ...e_code_size_hello_webgl2_wasm_singlefile.json | 4 ++-- ...nimal_runtime_code_size_hello_webgl_wasm.json | 8 ++++---- ...al_runtime_code_size_hello_webgl_wasm2js.json | 8 ++++---- ...mal_runtime_code_size_random_printf_wasm.json | 4 ++-- ..._runtime_code_size_random_printf_wasm2js.json | 2 +- test/codesize/test_unoptimized_code_size.json | 16 ++++++++-------- 28 files changed, 105 insertions(+), 105 deletions(-) diff --git a/test/codesize/test_codesize_cxx_ctors1.json b/test/codesize/test_codesize_cxx_ctors1.json index f47f641d6f030..ed252dec6a4c9 100644 --- a/test/codesize/test_codesize_cxx_ctors1.json +++ b/test/codesize/test_codesize_cxx_ctors1.json @@ -1,10 +1,10 @@ { "a.out.js": 19670, "a.out.js.gz": 8152, - "a.out.nodebug.wasm": 129503, - "a.out.nodebug.wasm.gz": 49248, - "total": 149173, - "total_gz": 57400, + "a.out.nodebug.wasm": 129456, + "a.out.nodebug.wasm.gz": 49187, + "total": 149126, + "total_gz": 57339, "sent": [ "__cxa_throw", "_abort_js", diff --git a/test/codesize/test_codesize_cxx_ctors2.json b/test/codesize/test_codesize_cxx_ctors2.json index d49c9f1b6096c..d32b7a508041a 100644 --- a/test/codesize/test_codesize_cxx_ctors2.json +++ b/test/codesize/test_codesize_cxx_ctors2.json @@ -1,10 +1,10 @@ { "a.out.js": 19647, "a.out.js.gz": 8139, - "a.out.nodebug.wasm": 128930, - "a.out.nodebug.wasm.gz": 48886, - "total": 148577, - "total_gz": 57025, + "a.out.nodebug.wasm": 128883, + "a.out.nodebug.wasm.gz": 48829, + "total": 148530, + "total_gz": 56968, "sent": [ "__cxa_throw", "_abort_js", diff --git a/test/codesize/test_codesize_cxx_except.json b/test/codesize/test_codesize_cxx_except.json index 4dde3d8ee470a..f61de777b8ea4 100644 --- a/test/codesize/test_codesize_cxx_except.json +++ b/test/codesize/test_codesize_cxx_except.json @@ -1,10 +1,10 @@ { "a.out.js": 23325, "a.out.js.gz": 9128, - "a.out.nodebug.wasm": 171311, - "a.out.nodebug.wasm.gz": 57348, - "total": 194636, - "total_gz": 66476, + "a.out.nodebug.wasm": 171264, + "a.out.nodebug.wasm.gz": 57309, + "total": 194589, + "total_gz": 66437, "sent": [ "__cxa_begin_catch", "__cxa_end_catch", diff --git a/test/codesize/test_codesize_cxx_except_wasm.json b/test/codesize/test_codesize_cxx_except_wasm.json index 12f821fb72467..ead711374a12c 100644 --- a/test/codesize/test_codesize_cxx_except_wasm.json +++ b/test/codesize/test_codesize_cxx_except_wasm.json @@ -1,10 +1,10 @@ { "a.out.js": 19486, "a.out.js.gz": 8077, - "a.out.nodebug.wasm": 144667, - "a.out.nodebug.wasm.gz": 54907, - "total": 164153, - "total_gz": 62984, + "a.out.nodebug.wasm": 144620, + "a.out.nodebug.wasm.gz": 54869, + "total": 164106, + "total_gz": 62946, "sent": [ "_abort_js", "_tzset_js", diff --git a/test/codesize/test_codesize_cxx_except_wasm_legacy.json b/test/codesize/test_codesize_cxx_except_wasm_legacy.json index 89914a35b80ab..611578a74066c 100644 --- a/test/codesize/test_codesize_cxx_except_wasm_legacy.json +++ b/test/codesize/test_codesize_cxx_except_wasm_legacy.json @@ -1,10 +1,10 @@ { "a.out.js": 19555, "a.out.js.gz": 8099, - "a.out.nodebug.wasm": 142256, - "a.out.nodebug.wasm.gz": 54366, - "total": 161811, - "total_gz": 62465, + "a.out.nodebug.wasm": 142209, + "a.out.nodebug.wasm.gz": 54320, + "total": 161764, + "total_gz": 62419, "sent": [ "_abort_js", "_tzset_js", diff --git a/test/codesize/test_codesize_cxx_lto.json b/test/codesize/test_codesize_cxx_lto.json index b7a9e757a3afc..a92fdc624c5cf 100644 --- a/test/codesize/test_codesize_cxx_lto.json +++ b/test/codesize/test_codesize_cxx_lto.json @@ -1,10 +1,10 @@ { "a.out.js": 19009, "a.out.js.gz": 7829, - "a.out.nodebug.wasm": 106439, - "a.out.nodebug.wasm.gz": 42591, - "total": 125448, - "total_gz": 50420, + "a.out.nodebug.wasm": 106443, + "a.out.nodebug.wasm.gz": 42551, + "total": 125452, + "total_gz": 50380, "sent": [ "a (emscripten_resize_heap)", "b (_setitimer_js)", diff --git a/test/codesize/test_codesize_cxx_mangle.json b/test/codesize/test_codesize_cxx_mangle.json index 2b7f4d6cee050..a25f412a3bb1c 100644 --- a/test/codesize/test_codesize_cxx_mangle.json +++ b/test/codesize/test_codesize_cxx_mangle.json @@ -1,10 +1,10 @@ { "a.out.js": 23375, "a.out.js.gz": 9148, - "a.out.nodebug.wasm": 235343, - "a.out.nodebug.wasm.gz": 78952, - "total": 258718, - "total_gz": 88100, + "a.out.nodebug.wasm": 235290, + "a.out.nodebug.wasm.gz": 78915, + "total": 258665, + "total_gz": 88063, "sent": [ "__cxa_begin_catch", "__cxa_end_catch", diff --git a/test/codesize/test_codesize_cxx_noexcept.json b/test/codesize/test_codesize_cxx_noexcept.json index ae4ac3fbb7d92..d927f2cb3ddda 100644 --- a/test/codesize/test_codesize_cxx_noexcept.json +++ b/test/codesize/test_codesize_cxx_noexcept.json @@ -1,10 +1,10 @@ { "a.out.js": 19670, "a.out.js.gz": 8152, - "a.out.nodebug.wasm": 131920, - "a.out.nodebug.wasm.gz": 50242, - "total": 151590, - "total_gz": 58394, + "a.out.nodebug.wasm": 131873, + "a.out.nodebug.wasm.gz": 50187, + "total": 151543, + "total_gz": 58339, "sent": [ "__cxa_throw", "_abort_js", diff --git a/test/codesize/test_codesize_cxx_wasmfs.json b/test/codesize/test_codesize_cxx_wasmfs.json index ea758037385fb..8e63df0bc2849 100644 --- a/test/codesize/test_codesize_cxx_wasmfs.json +++ b/test/codesize/test_codesize_cxx_wasmfs.json @@ -1,10 +1,10 @@ { "a.out.js": 7059, "a.out.js.gz": 3330, - "a.out.nodebug.wasm": 169853, - "a.out.nodebug.wasm.gz": 62997, - "total": 176912, - "total_gz": 66327, + "a.out.nodebug.wasm": 169661, + "a.out.nodebug.wasm.gz": 62933, + "total": 176720, + "total_gz": 66263, "sent": [ "__cxa_throw", "_abort_js", diff --git a/test/codesize/test_codesize_files_wasmfs.json b/test/codesize/test_codesize_files_wasmfs.json index dd6a38c659575..46d669b90a984 100644 --- a/test/codesize/test_codesize_files_wasmfs.json +++ b/test/codesize/test_codesize_files_wasmfs.json @@ -1,10 +1,10 @@ { "a.out.js": 5465, "a.out.js.gz": 2576, - "a.out.nodebug.wasm": 50353, - "a.out.nodebug.wasm.gz": 18097, - "total": 55818, - "total_gz": 20673, + "a.out.nodebug.wasm": 50214, + "a.out.nodebug.wasm.gz": 18061, + "total": 55679, + "total_gz": 20637, "sent": [ "a (emscripten_date_now)", "b (emscripten_err)", diff --git a/test/codesize/test_codesize_hello_O0.json b/test/codesize/test_codesize_hello_O0.json index e6497a8e4b083..98946f3d011db 100644 --- a/test/codesize/test_codesize_hello_O0.json +++ b/test/codesize/test_codesize_hello_O0.json @@ -1,10 +1,10 @@ { "a.out.js": 24194, "a.out.js.gz": 8694, - "a.out.nodebug.wasm": 15117, - "a.out.nodebug.wasm.gz": 7456, - "total": 39311, - "total_gz": 16150, + "a.out.nodebug.wasm": 15142, + "a.out.nodebug.wasm.gz": 7471, + "total": 39336, + "total_gz": 16165, "sent": [ "fd_write" ], diff --git a/test/codesize/test_codesize_mem_O3.json b/test/codesize/test_codesize_mem_O3.json index fb15e671b5313..d915c1d867df1 100644 --- a/test/codesize/test_codesize_mem_O3.json +++ b/test/codesize/test_codesize_mem_O3.json @@ -1,10 +1,10 @@ { "a.out.js": 4350, "a.out.js.gz": 2094, - "a.out.nodebug.wasm": 5260, - "a.out.nodebug.wasm.gz": 2418, - "total": 9610, - "total_gz": 4512, + "a.out.nodebug.wasm": 5262, + "a.out.nodebug.wasm.gz": 2416, + "total": 9612, + "total_gz": 4510, "sent": [ "a (emscripten_resize_heap)" ], diff --git a/test/codesize/test_codesize_mem_O3_grow.json b/test/codesize/test_codesize_mem_O3_grow.json index 58a83589cb501..a11e82b555fbe 100644 --- a/test/codesize/test_codesize_mem_O3_grow.json +++ b/test/codesize/test_codesize_mem_O3_grow.json @@ -1,10 +1,10 @@ { "a.out.js": 4635, "a.out.js.gz": 2243, - "a.out.nodebug.wasm": 5261, - "a.out.nodebug.wasm.gz": 2418, - "total": 9896, - "total_gz": 4661, + "a.out.nodebug.wasm": 5263, + "a.out.nodebug.wasm.gz": 2416, + "total": 9898, + "total_gz": 4659, "sent": [ "a (emscripten_resize_heap)" ], diff --git a/test/codesize/test_codesize_mem_O3_grow_standalone.json b/test/codesize/test_codesize_mem_O3_grow_standalone.json index e46cc9658531b..02bc526683d28 100644 --- a/test/codesize/test_codesize_mem_O3_grow_standalone.json +++ b/test/codesize/test_codesize_mem_O3_grow_standalone.json @@ -1,10 +1,10 @@ { "a.out.js": 4102, "a.out.js.gz": 1990, - "a.out.nodebug.wasm": 5547, - "a.out.nodebug.wasm.gz": 2597, - "total": 9649, - "total_gz": 4587, + "a.out.nodebug.wasm": 5549, + "a.out.nodebug.wasm.gz": 2593, + "total": 9651, + "total_gz": 4583, "sent": [ "args_get", "args_sizes_get", diff --git a/test/codesize/test_codesize_mem_O3_standalone.json b/test/codesize/test_codesize_mem_O3_standalone.json index 3b151aa1fa531..85b4cbd07c4db 100644 --- a/test/codesize/test_codesize_mem_O3_standalone.json +++ b/test/codesize/test_codesize_mem_O3_standalone.json @@ -1,10 +1,10 @@ { "a.out.js": 4035, "a.out.js.gz": 1954, - "a.out.nodebug.wasm": 5472, - "a.out.nodebug.wasm.gz": 2538, - "total": 9507, - "total_gz": 4492, + "a.out.nodebug.wasm": 5474, + "a.out.nodebug.wasm.gz": 2534, + "total": 9509, + "total_gz": 4488, "sent": [ "args_get", "args_sizes_get", diff --git a/test/codesize/test_codesize_mem_O3_standalone_lib.json b/test/codesize/test_codesize_mem_O3_standalone_lib.json index e6038e024a9ee..119da79c5a37e 100644 --- a/test/codesize/test_codesize_mem_O3_standalone_lib.json +++ b/test/codesize/test_codesize_mem_O3_standalone_lib.json @@ -1,10 +1,10 @@ { "a.out.js": 3563, "a.out.js.gz": 1689, - "a.out.nodebug.wasm": 5239, - "a.out.nodebug.wasm.gz": 2360, - "total": 8802, - "total_gz": 4049, + "a.out.nodebug.wasm": 5241, + "a.out.nodebug.wasm.gz": 2353, + "total": 8804, + "total_gz": 4042, "sent": [], "imports": [], "exports": [ diff --git a/test/codesize/test_codesize_mem_O3_standalone_narg.json b/test/codesize/test_codesize_mem_O3_standalone_narg.json index ccfba4a468a28..ac8d3eacfb07f 100644 --- a/test/codesize/test_codesize_mem_O3_standalone_narg.json +++ b/test/codesize/test_codesize_mem_O3_standalone_narg.json @@ -1,10 +1,10 @@ { "a.out.js": 3570, "a.out.js.gz": 1701, - "a.out.nodebug.wasm": 5265, - "a.out.nodebug.wasm.gz": 2397, - "total": 8835, - "total_gz": 4098, + "a.out.nodebug.wasm": 5267, + "a.out.nodebug.wasm.gz": 2391, + "total": 8837, + "total_gz": 4092, "sent": [ "proc_exit" ], diff --git a/test/codesize/test_codesize_mem_O3_standalone_narg_flto.json b/test/codesize/test_codesize_mem_O3_standalone_narg_flto.json index 322ae921f0b30..913e963329b60 100644 --- a/test/codesize/test_codesize_mem_O3_standalone_narg_flto.json +++ b/test/codesize/test_codesize_mem_O3_standalone_narg_flto.json @@ -1,10 +1,10 @@ { "a.out.js": 3570, "a.out.js.gz": 1701, - "a.out.nodebug.wasm": 4077, - "a.out.nodebug.wasm.gz": 2031, - "total": 7647, - "total_gz": 3732, + "a.out.nodebug.wasm": 4079, + "a.out.nodebug.wasm.gz": 2025, + "total": 7649, + "total_gz": 3726, "sent": [ "proc_exit" ], diff --git a/test/codesize/test_codesize_minimal_pthreads.json b/test/codesize/test_codesize_minimal_pthreads.json index ea2b2571aa3f8..5287655f2d28c 100644 --- a/test/codesize/test_codesize_minimal_pthreads.json +++ b/test/codesize/test_codesize_minimal_pthreads.json @@ -1,9 +1,9 @@ { "a.out.js": 7609, "a.out.js.gz": 3762, - "a.out.nodebug.wasm": 19599, + "a.out.nodebug.wasm": 19605, "a.out.nodebug.wasm.gz": 9063, - "total": 27208, + "total": 27214, "total_gz": 12825, "sent": [ "a (memory)", diff --git a/test/codesize/test_codesize_minimal_pthreads_memgrowth.json b/test/codesize/test_codesize_minimal_pthreads_memgrowth.json index 03cff647dc2a3..abb13ded1bd90 100644 --- a/test/codesize/test_codesize_minimal_pthreads_memgrowth.json +++ b/test/codesize/test_codesize_minimal_pthreads_memgrowth.json @@ -1,9 +1,9 @@ { "a.out.js": 8036, "a.out.js.gz": 3962, - "a.out.nodebug.wasm": 19600, + "a.out.nodebug.wasm": 19606, "a.out.nodebug.wasm.gz": 9064, - "total": 27636, + "total": 27642, "total_gz": 13026, "sent": [ "a (memory)", diff --git a/test/codesize/test_minimal_runtime_code_size_hello_webgl2_wasm.json b/test/codesize/test_minimal_runtime_code_size_hello_webgl2_wasm.json index 1d93a5fc32ae1..39a34090e54f5 100644 --- a/test/codesize/test_minimal_runtime_code_size_hello_webgl2_wasm.json +++ b/test/codesize/test_minimal_runtime_code_size_hello_webgl2_wasm.json @@ -3,8 +3,8 @@ "a.html.gz": 321, "a.js": 4437, "a.js.gz": 2281, - "a.wasm": 8313, - "a.wasm.gz": 5669, - "total": 13204, - "total_gz": 8271 + "a.wasm": 8308, + "a.wasm.gz": 5653, + "total": 13199, + "total_gz": 8255 } diff --git a/test/codesize/test_minimal_runtime_code_size_hello_webgl2_wasm2js.json b/test/codesize/test_minimal_runtime_code_size_hello_webgl2_wasm2js.json index 50279d69b2c8b..2203fd01b9cd5 100644 --- a/test/codesize/test_minimal_runtime_code_size_hello_webgl2_wasm2js.json +++ b/test/codesize/test_minimal_runtime_code_size_hello_webgl2_wasm2js.json @@ -1,8 +1,8 @@ { "a.html": 346, "a.html.gz": 255, - "a.js": 18208, - "a.js.gz": 9836, - "total": 18554, - "total_gz": 10091 + "a.js": 18197, + "a.js.gz": 9824, + "total": 18543, + "total_gz": 10079 } diff --git a/test/codesize/test_minimal_runtime_code_size_hello_webgl2_wasm_singlefile.json b/test/codesize/test_minimal_runtime_code_size_hello_webgl2_wasm_singlefile.json index 873fcdab7a2c7..25919f7846f64 100644 --- a/test/codesize/test_minimal_runtime_code_size_hello_webgl2_wasm_singlefile.json +++ b/test/codesize/test_minimal_runtime_code_size_hello_webgl2_wasm_singlefile.json @@ -1,4 +1,4 @@ { - "a.html": 15147, - "a.html.gz": 9111 + "a.html": 15135, + "a.html.gz": 9087 } diff --git a/test/codesize/test_minimal_runtime_code_size_hello_webgl_wasm.json b/test/codesize/test_minimal_runtime_code_size_hello_webgl_wasm.json index f7cdc47c6763e..afce7f00aabd9 100644 --- a/test/codesize/test_minimal_runtime_code_size_hello_webgl_wasm.json +++ b/test/codesize/test_minimal_runtime_code_size_hello_webgl_wasm.json @@ -3,8 +3,8 @@ "a.html.gz": 321, "a.js": 3975, "a.js.gz": 2123, - "a.wasm": 8313, - "a.wasm.gz": 5669, - "total": 12742, - "total_gz": 8113 + "a.wasm": 8308, + "a.wasm.gz": 5653, + "total": 12737, + "total_gz": 8097 } diff --git a/test/codesize/test_minimal_runtime_code_size_hello_webgl_wasm2js.json b/test/codesize/test_minimal_runtime_code_size_hello_webgl_wasm2js.json index d1bd3d803b3b4..03edd77fa3098 100644 --- a/test/codesize/test_minimal_runtime_code_size_hello_webgl_wasm2js.json +++ b/test/codesize/test_minimal_runtime_code_size_hello_webgl_wasm2js.json @@ -1,8 +1,8 @@ { "a.html": 346, "a.html.gz": 255, - "a.js": 17735, - "a.js.gz": 9677, - "total": 18081, - "total_gz": 9932 + "a.js": 17724, + "a.js.gz": 9659, + "total": 18070, + "total_gz": 9914 } diff --git a/test/codesize/test_minimal_runtime_code_size_random_printf_wasm.json b/test/codesize/test_minimal_runtime_code_size_random_printf_wasm.json index a48c21aba3f37..d986a4a74b38c 100644 --- a/test/codesize/test_minimal_runtime_code_size_random_printf_wasm.json +++ b/test/codesize/test_minimal_runtime_code_size_random_printf_wasm.json @@ -1,4 +1,4 @@ { - "a.html": 10993, - "a.html.gz": 5767 + "a.html": 10982, + "a.html.gz": 5754 } diff --git a/test/codesize/test_minimal_runtime_code_size_random_printf_wasm2js.json b/test/codesize/test_minimal_runtime_code_size_random_printf_wasm2js.json index 55501935ef88c..664b302ea20c6 100644 --- a/test/codesize/test_minimal_runtime_code_size_random_printf_wasm2js.json +++ b/test/codesize/test_minimal_runtime_code_size_random_printf_wasm2js.json @@ -1,4 +1,4 @@ { - "a.html": 17229, + "a.html": 17225, "a.html.gz": 7534 } diff --git a/test/codesize/test_unoptimized_code_size.json b/test/codesize/test_unoptimized_code_size.json index 6a8b4979da572..e00a466d7d98c 100644 --- a/test/codesize/test_unoptimized_code_size.json +++ b/test/codesize/test_unoptimized_code_size.json @@ -1,16 +1,16 @@ { "hello_world.js": 56928, "hello_world.js.gz": 17700, - "hello_world.wasm": 15117, - "hello_world.wasm.gz": 7456, + "hello_world.wasm": 15142, + "hello_world.wasm.gz": 7471, "no_asserts.js": 26632, "no_asserts.js.gz": 8884, - "no_asserts.wasm": 12217, - "no_asserts.wasm.gz": 6015, + "no_asserts.wasm": 12191, + "no_asserts.wasm.gz": 6000, "strict.js": 54943, "strict.js.gz": 17045, - "strict.wasm": 15117, - "strict.wasm.gz": 7451, - "total": 180954, - "total_gz": 64551 + "strict.wasm": 15142, + "strict.wasm.gz": 7468, + "total": 180978, + "total_gz": 64568 }