Skip to content

Commit d3bd469

Browse files
authored
Micro-optimize EM_JS / EM_ASM handling in libdylink.js. NFC (#25680)
1 parent bbd4223 commit d3bd469

File tree

3 files changed

+14
-17
lines changed

3 files changed

+14
-17
lines changed

‎src/lib/libdylink.js‎

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -805,13 +805,10 @@ var LibraryDylink = {
805805
#if MAIN_MODULE
806806
function addEmAsm(addr, body) {
807807
var args = [];
808-
var arity = 0;
809-
for (; arity < 16; arity++) {
810-
if (body.indexOf('$' + arity) != -1) {
811-
args.push('$' + arity);
812-
} else {
813-
break;
814-
}
808+
for (var arity = 0; ; arity++) {
809+
var argName = '$' + arity;
810+
if (!body.includes(argName)) break;
811+
args.push(argName);
815812
}
816813
args = args.join(',');
817814
var func = `(${args}) => { ${body} };`;
@@ -842,8 +839,8 @@ var LibraryDylink = {
842839
cSig = cSig.slice(1, -1)
843840
if (cSig != 'void') {
844841
cSig = cSig.split(',');
845-
for (var i in cSig) {
846-
var jsArg = cSig[i].split(' ').pop();
842+
for (var arg of cSig) {
843+
var jsArg = arg.split(' ').pop();
847844
jsArgs.push(jsArg.replace('*', ''));
848845
}
849846
}
@@ -860,8 +857,8 @@ var LibraryDylink = {
860857
var jsString = UTF8ToString({{{ from64Expr('start') }}});
861858
// EM_JS strings are stored in the data section in the form
862859
// SIG<::>BODY.
863-
var parts = jsString.split('<::>');
864-
addEmJs(name.replace('__em_js__', ''), parts[0], parts[1]);
860+
var [sig, body] = jsString.split('<::>');
861+
addEmJs(name.replace('__em_js__', ''), sig, body);
865862
delete moduleExports[name];
866863
}
867864
}

‎test/codesize/test_codesize_hello_dylink.json‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
{
2-
"a.out.js": 26974,
3-
"a.out.js.gz": 11477,
2+
"a.out.js": 26966,
3+
"a.out.js.gz": 11475,
44
"a.out.nodebug.wasm": 18567,
55
"a.out.nodebug.wasm.gz": 9199,
6-
"total": 45541,
7-
"total_gz": 20676,
6+
"total": 45533,
7+
"total_gz": 20674,
88
"sent": [
99
"__heap_base",
1010
"__indirect_function_table",

‎test/codesize/test_codesize_hello_dylink_all.json‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
2-
"a.out.js": 245923,
2+
"a.out.js": 245927,
33
"a.out.nodebug.wasm": 597779,
4-
"total": 843702,
4+
"total": 843706,
55
"sent": [
66
"IMG_Init",
77
"IMG_Load",

0 commit comments

Comments
 (0)