Skip to content

Commit 4307484

Browse files
authored
Restore previous behaviour of not mangling EM_JS functions (#18438)
As part of #18391 (as yet unreleased) I changed the behaviour of EM_JS functions such that they were underscore mangled like native functions. However this change in naming can break existing code and is not needed for the fix after all.
1 parent bfabc4e commit 4307484

File tree

3 files changed

+12
-4
lines changed

3 files changed

+12
-4
lines changed

emscripten.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -611,11 +611,10 @@ def create_em_js(metadata):
611611
args = args.split(',')
612612
arg_names = [arg.split()[-1].replace("*", "") for arg in args if arg]
613613
args = ','.join(arg_names)
614-
mangled = asmjs_mangle(name)
615-
func = f'function {mangled}({args}) {body}'
614+
func = f'function {name}({args}) {body}'
616615
if (settings.MAIN_MODULE or settings.ASYNCIFY == 2) and name in metadata.emJsFuncTypes:
617616
sig = func_type_to_sig(metadata.emJsFuncTypes[name])
618-
func = func + f'\n{mangled}.sig = \'{sig}\';'
617+
func = func + f'\n{name}.sig = \'{sig}\';'
619618
em_js_funcs.append(func)
620619

621620
return em_js_funcs
@@ -675,7 +674,7 @@ def create_sending(invoke_funcs, metadata):
675674
send_items_map = {}
676675

677676
for name in metadata.emJsFuncs:
678-
send_items_map[name] = asmjs_mangle(name)
677+
send_items_map[name] = name
679678
for name in invoke_funcs:
680679
send_items_map[name] = name
681680
for name in metadata.imports:

test/core/test_em_js.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,12 @@ EM_JS(int, _prefixed, (void), {
9393
return 1;
9494
});
9595

96+
EM_JS(int, transitive, (void), {
97+
// Verify that EM_JS functions can call other EM_JS functions by thier
98+
// unmangled name.
99+
return noarg_int();
100+
});
101+
96102
int main() {
97103
printf("BEGIN\n");
98104
noarg();
@@ -118,6 +124,7 @@ int main() {
118124
free(s2);
119125

120126
printf(" _prefixed: %d\n", _prefixed());
127+
printf(" transitive: %d\n", transitive());
121128

122129
printf("END\n");
123130
return 0;

test/core/test_em_js.out

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,6 @@ no args returning double
2525
return_str returned: hello from js
2626
return_utf8_str returned: こんにちは
2727
_prefixed: 1
28+
no args returning int
29+
transitive: 12
2830
END

0 commit comments

Comments
 (0)