Skip to content

Commit fd5d5d3

Browse files
authored
[embind] Cleanup createJsInvoker. NFC (#22416)
I couple of minor cleanups: 1. I noticed that argCount was always followed by - 2. 2. I noticed that argsListWired was always being used `fn` as the first argument 3. The `argsLists` were being constructs as comma separated strings, which `join` is really good at.
1 parent c3a1875 commit fd5d5d3

File tree

2 files changed

+22
-22
lines changed

2 files changed

+22
-22
lines changed

Diff for: src/embind/embind_shared.js

+18-18
Original file line numberDiff line numberDiff line change
@@ -209,18 +209,23 @@ var LibraryEmbindShared = {
209209
$createJsInvoker__deps: ['$usesDestructorStack'],
210210
$createJsInvoker(argTypes, isClassMethodFunc, returns, isAsync) {
211211
var needsDestructorStack = usesDestructorStack(argTypes);
212-
var argCount = argTypes.length;
213-
var argsList = "";
214-
var argsListWired = "";
215-
for (var i = 0; i < argCount - 2; ++i) {
216-
argsList += (i!==0?", ":"")+"arg"+i;
217-
argsListWired += (i!==0?", ":"")+"arg"+i+"Wired";
212+
var argCount = argTypes.length - 2;
213+
var argsList = [];
214+
var argsListWired = ['fn'];
215+
if (isClassMethodFunc) {
216+
argsListWired.push('thisWired');
217+
}
218+
for (var i = 0; i < argCount; ++i) {
219+
argsList.push(`arg${i}`)
220+
argsListWired.push(`arg${i}Wired`)
218221
}
222+
argsList = argsList.join(',')
223+
argsListWired = argsListWired.join(',')
219224

220225
var invokerFnBody = `
221226
return function (${argsList}) {
222-
if (arguments.length !== ${argCount - 2}) {
223-
throwBindingError('function ' + humanName + ' called with ' + arguments.length + ' arguments, expected ${argCount - 2}');
227+
if (arguments.length !== ${argCount}) {
228+
throwBindingError('function ' + humanName + ' called with ' + arguments.length + ' arguments, expected ${argCount}');
224229
}`;
225230

226231
#if EMSCRIPTEN_TRACING
@@ -239,20 +244,15 @@ var LibraryEmbindShared = {
239244
#endif
240245

241246
if (isClassMethodFunc) {
242-
invokerFnBody += "var thisWired = classParam['toWireType']("+dtorStack+", this);\n";
247+
invokerFnBody += `var thisWired = classParam['toWireType'](${dtorStack}, this);\n`;
243248
}
244249

245-
for (var i = 0; i < argCount - 2; ++i) {
246-
invokerFnBody += "var arg"+i+"Wired = argType"+i+"['toWireType']("+dtorStack+", arg"+i+");\n";
247-
args1.push("argType"+i);
248-
}
249-
250-
if (isClassMethodFunc) {
251-
argsListWired = "thisWired" + (argsListWired.length > 0 ? ", " : "") + argsListWired;
250+
for (var i = 0; i < argCount; ++i) {
251+
invokerFnBody += `var arg${i}Wired = argType${i}['toWireType'](${dtorStack}, arg${i});\n`;
252+
args1.push(`argType${i}`);
252253
}
253254

254-
invokerFnBody +=
255-
(returns || isAsync ? "var rv = ":"") + "invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";
255+
invokerFnBody += (returns || isAsync ? "var rv = ":"") + `invoker(${argsListWired});\n`;
256256

257257
var returnVal = returns ? "rv" : "";
258258
#if ASYNCIFY == 1

Diff for: test/code_size/embind_hello_wasm.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
{
22
"a.html": 552,
33
"a.html.gz": 380,
4-
"a.js": 9961,
5-
"a.js.gz": 4350,
4+
"a.js": 9920,
5+
"a.js.gz": 4354,
66
"a.wasm": 7715,
77
"a.wasm.gz": 3508,
8-
"total": 18228,
9-
"total_gz": 8238
8+
"total": 18187,
9+
"total_gz": 8242
1010
}

0 commit comments

Comments
 (0)