Skip to content

Commit a9a2d8b

Browse files
committed
Runtime: no longer use arguments
1 parent 4680208 commit a9a2d8b

File tree

4 files changed

+31
-67
lines changed

4 files changed

+31
-67
lines changed

biome.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
"noSubstr": "error"
2727
},
2828
"style": {
29-
"noArguments": "off",
3029
"noCommaOperator": "off",
3130
"noParameterAssign": "off",
3231
"noUselessElse": "off",

runtime/js/jslib.js

Lines changed: 17 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -379,12 +379,8 @@ function caml_ojs_new_arr(c, a) {
379379
//Provides: caml_js_wrap_callback const (const)
380380
//Requires: caml_callback
381381
function caml_js_wrap_callback(f) {
382-
return function () {
383-
var len = arguments.length;
384-
if (len > 0) {
385-
var args = new Array(len);
386-
for (var i = 0; i < len; i++) args[i] = arguments[i];
387-
} else {
382+
return function (...args) {
383+
if (args.length === 0) {
388384
args = [undefined];
389385
}
390386
var res = caml_callback(f, args);
@@ -395,75 +391,58 @@ function caml_js_wrap_callback(f) {
395391
//Provides: caml_js_wrap_callback_arguments
396392
//Requires: caml_callback
397393
function caml_js_wrap_callback_arguments(f) {
398-
return function () {
399-
var len = arguments.length;
400-
var args = new Array(len);
401-
for (var i = 0; i < len; i++) args[i] = arguments[i];
394+
return function (...args) {
402395
return caml_callback(f, [args]);
403396
};
404397
}
405398
//Provides: caml_js_wrap_callback_strict const
406399
//Requires: caml_callback
407400
function caml_js_wrap_callback_strict(arity, f) {
408-
return function () {
409-
var n = arguments.length;
410-
var args = new Array(arity);
411-
var len = Math.min(arguments.length, arity);
412-
for (var i = 0; i < len; i++) args[i] = arguments[i];
401+
return function (...args) {
402+
args.length = arity;
413403
return caml_callback(f, args);
414404
};
415405
}
416406
//Provides: caml_js_wrap_callback_unsafe const (const)
417407
//Requires: caml_callback, caml_js_function_arity
418408
function caml_js_wrap_callback_unsafe(f) {
419-
return function () {
409+
return function (...args) {
420410
var len = caml_js_function_arity(f);
421-
var args = new Array(len);
422-
for (var i = 0; i < len; i++) args[i] = arguments[i];
411+
args.length = len;
423412
return caml_callback(f, args);
424413
};
425414
}
426415
//Provides: caml_js_wrap_meth_callback const (const)
427416
//Requires: caml_callback, caml_js_wrap_callback
428417
function caml_js_wrap_meth_callback(f) {
429-
return function () {
430-
var len = arguments.length;
431-
var args = new Array(len + 1);
432-
args[0] = this;
433-
for (var i = 0; i < len; i++) args[i + 1] = arguments[i];
434-
var res = caml_callback(f, args);
418+
return function (...args) {
419+
var res = caml_callback(f, [this, ...args]);
435420
return res instanceof Function ? caml_js_wrap_callback(res) : res;
436421
};
437422
}
438423
//Provides: caml_js_wrap_meth_callback_arguments const (const)
439424
//Requires: caml_callback
440425
function caml_js_wrap_meth_callback_arguments(f) {
441-
return function () {
442-
var len = arguments.length;
443-
var args = new Array(len);
444-
for (var i = 0; i < len; i++) args[i] = arguments[i];
426+
return function (...args) {
445427
return caml_callback(f, [this, args]);
446428
};
447429
}
448430
//Provides: caml_js_wrap_meth_callback_strict const
449431
//Requires: caml_callback
450432
function caml_js_wrap_meth_callback_strict(arity, f) {
451-
return function () {
452-
var args = new Array(arity + 1);
453-
var len = Math.min(arguments.length, arity);
454-
args[0] = this;
455-
for (var i = 0; i < len; i++) args[i + 1] = arguments[i];
433+
return function (...args) {
434+
args = [this, ...args];
435+
args.length = arity + 1;
456436
return caml_callback(f, args);
457437
};
458438
}
459439
//Provides: caml_js_wrap_meth_callback_unsafe const (const)
460440
//Requires: caml_callback, caml_js_function_arity
461441
function caml_js_wrap_meth_callback_unsafe(f) {
462-
return function () {
463-
var len = caml_js_function_arity(f) - 1;
464-
var args = new Array(len + 1);
465-
args[0] = this;
466-
for (var i = 0; i < len; i++) args[i + 1] = arguments[i];
442+
return function (...args) {
443+
var len = caml_js_function_arity(f);
444+
args = [this, ...args];
445+
args.length = len;
467446
return caml_callback(f, args);
468447
};
469448
}

runtime/js/stdlib.js

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,9 @@ function caml_call_gen(f, args) {
5151
break;
5252
}
5353
default: {
54-
var g = function () {
55-
var extra_args = arguments.length === 0 ? 1 : arguments.length;
56-
var nargs = new Array(args.length + extra_args);
57-
for (var i = 0; i < args.length; i++) nargs[i] = args[i];
58-
for (var i = 0; i < arguments.length; i++)
59-
nargs[args.length + i] = arguments[i];
60-
return caml_call_gen(f, nargs);
54+
var g = function (...extra_args) {
55+
if (extra_args.length === 0) extra_args = [undefined];
56+
return caml_call_gen(f, [...args, ...extra_args]);
6157
};
6258
}
6359
}
@@ -112,13 +108,10 @@ function caml_call_gen(f, args) {
112108
break;
113109
}
114110
default: {
115-
var g = function () {
116-
var extra_args = arguments.length === 0 ? 1 : arguments.length;
117-
var nargs = new Array(argsLen + extra_args);
118-
for (var i = 0; i < argsLen; i++) nargs[i] = args[i];
119-
for (var i = 0; i < arguments.length; i++)
120-
nargs[argsLen + i] = arguments[i];
121-
return caml_call_gen(f, nargs);
111+
args.length = argsLen;
112+
var g = function (...extra_args) {
113+
if (extra_args.length === 0) extra_args = [undefined];
114+
return caml_call_gen(f, [...args, ...extra_args]);
122115
};
123116
}
124117
}

runtime/js/stdlib_modern.js

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,9 @@ function caml_call_gen(f, args) {
4949
break;
5050
}
5151
default: {
52-
var g = function () {
53-
var extra_args = arguments.length === 0 ? 1 : arguments.length;
54-
var nargs = new Array(args.length + extra_args);
55-
for (var i = 0; i < args.length; i++) nargs[i] = args[i];
56-
for (var i = 0; i < arguments.length; i++)
57-
nargs[args.length + i] = arguments[i];
58-
return caml_call_gen(f, nargs);
52+
var g = function (...extra_args) {
53+
if (extra_args.length === 0) extra_args = [undefined];
54+
return caml_call_gen(f, [...args, ...extra_args]);
5955
};
6056
}
6157
}
@@ -108,13 +104,10 @@ function caml_call_gen(f, args) {
108104
break;
109105
}
110106
default: {
111-
var g = function () {
112-
var extra_args = arguments.length === 0 ? 1 : arguments.length;
113-
var nargs = new Array(argsLen + extra_args);
114-
for (var i = 0; i < argsLen; i++) nargs[i] = args[i];
115-
for (var i = 0; i < arguments.length; i++)
116-
nargs[argsLen + i] = arguments[i];
117-
return caml_call_gen(f, nargs);
107+
args.length = argsLen;
108+
var g = function (...extra_args) {
109+
if (extra_args.length === 0) extra_args = [undefined];
110+
return caml_call_gen(f, [...args, ...extra_args]);
118111
};
119112
}
120113
}

0 commit comments

Comments
 (0)