Skip to content

Commit

Permalink
Runtime: no longer use arguments (#1740)
Browse files Browse the repository at this point in the history
* Runtime: no longer use arguments

* no spread to build array

* adapt for wasmoo
  • Loading branch information
hhugo authored Dec 9, 2024
1 parent c0f9035 commit 145e4d2
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 106 deletions.
1 change: 0 additions & 1 deletion biome.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@
"noSubstr": "error"
},
"style": {
"noArguments": "off",
"noCommaOperator": "off",
"noParameterAssign": "off",
"noUselessElse": "off",
Expand Down
54 changes: 17 additions & 37 deletions runtime/js/jslib.js
Original file line number Diff line number Diff line change
Expand Up @@ -379,12 +379,8 @@ function caml_ojs_new_arr(c, a) {
//Provides: caml_js_wrap_callback const (const)
//Requires: caml_callback
function caml_js_wrap_callback(f) {
return function () {
var len = arguments.length;
if (len > 0) {
var args = new Array(len);
for (var i = 0; i < len; i++) args[i] = arguments[i];
} else {
return function (...args) {
if (args.length === 0) {
args = [undefined];
}
var res = caml_callback(f, args);
Expand All @@ -395,75 +391,59 @@ function caml_js_wrap_callback(f) {
//Provides: caml_js_wrap_callback_arguments
//Requires: caml_callback
function caml_js_wrap_callback_arguments(f) {
return function () {
var len = arguments.length;
var args = new Array(len);
for (var i = 0; i < len; i++) args[i] = arguments[i];
return function (...args) {
return caml_callback(f, [args]);
};
}
//Provides: caml_js_wrap_callback_strict const
//Requires: caml_callback
function caml_js_wrap_callback_strict(arity, f) {
return function () {
var n = arguments.length;
var args = new Array(arity);
var len = Math.min(arguments.length, arity);
for (var i = 0; i < len; i++) args[i] = arguments[i];
return function (...args) {
args.length = arity;
return caml_callback(f, args);
};
}
//Provides: caml_js_wrap_callback_unsafe const (const)
//Requires: caml_callback, caml_js_function_arity
function caml_js_wrap_callback_unsafe(f) {
return function () {
return function (...args) {
var len = caml_js_function_arity(f);
var args = new Array(len);
for (var i = 0; i < len; i++) args[i] = arguments[i];
args.length = len;
return caml_callback(f, args);
};
}
//Provides: caml_js_wrap_meth_callback const (const)
//Requires: caml_callback, caml_js_wrap_callback
function caml_js_wrap_meth_callback(f) {
return function () {
var len = arguments.length;
var args = new Array(len + 1);
args[0] = this;
for (var i = 0; i < len; i++) args[i + 1] = arguments[i];
return function (...args) {
args.unshift(this);
var res = caml_callback(f, args);
return res instanceof Function ? caml_js_wrap_callback(res) : res;
};
}
//Provides: caml_js_wrap_meth_callback_arguments const (const)
//Requires: caml_callback
function caml_js_wrap_meth_callback_arguments(f) {
return function () {
var len = arguments.length;
var args = new Array(len);
for (var i = 0; i < len; i++) args[i] = arguments[i];
return function (...args) {
return caml_callback(f, [this, args]);
};
}
//Provides: caml_js_wrap_meth_callback_strict const
//Requires: caml_callback
function caml_js_wrap_meth_callback_strict(arity, f) {
return function () {
var args = new Array(arity + 1);
var len = Math.min(arguments.length, arity);
args[0] = this;
for (var i = 0; i < len; i++) args[i + 1] = arguments[i];
return function (...args) {
args.length = arity;
args.unshift(this);
return caml_callback(f, args);
};
}
//Provides: caml_js_wrap_meth_callback_unsafe const (const)
//Requires: caml_callback, caml_js_function_arity
function caml_js_wrap_meth_callback_unsafe(f) {
return function () {
var len = caml_js_function_arity(f) - 1;
var args = new Array(len + 1);
args[0] = this;
for (var i = 0; i < len; i++) args[i + 1] = arguments[i];
return function (...args) {
var len = caml_js_function_arity(f);
args.unshift(this);
args.length = len;
return caml_callback(f, args);
};
}
Expand Down
21 changes: 7 additions & 14 deletions runtime/js/stdlib.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,13 +51,9 @@ function caml_call_gen(f, args) {
break;
}
default: {
var g = function () {
var extra_args = arguments.length === 0 ? 1 : arguments.length;
var nargs = new Array(args.length + extra_args);
for (var i = 0; i < args.length; i++) nargs[i] = args[i];
for (var i = 0; i < arguments.length; i++)
nargs[args.length + i] = arguments[i];
return caml_call_gen(f, nargs);
var g = function (...extra_args) {
if (extra_args.length === 0) extra_args = [undefined];
return caml_call_gen(f, args.concat(extra_args));
};
}
}
Expand Down Expand Up @@ -112,13 +108,10 @@ function caml_call_gen(f, args) {
break;
}
default: {
var g = function () {
var extra_args = arguments.length === 0 ? 1 : arguments.length;
var nargs = new Array(argsLen + extra_args);
for (var i = 0; i < argsLen; i++) nargs[i] = args[i];
for (var i = 0; i < arguments.length; i++)
nargs[argsLen + i] = arguments[i];
return caml_call_gen(f, nargs);
args.length = argsLen;
var g = function (...extra_args) {
if (extra_args.length === 0) extra_args = [undefined];
return caml_call_gen(f, args.concat(extra_args));
};
}
}
Expand Down
21 changes: 7 additions & 14 deletions runtime/js/stdlib_modern.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,13 +49,9 @@ function caml_call_gen(f, args) {
break;
}
default: {
var g = function () {
var extra_args = arguments.length === 0 ? 1 : arguments.length;
var nargs = new Array(args.length + extra_args);
for (var i = 0; i < args.length; i++) nargs[i] = args[i];
for (var i = 0; i < arguments.length; i++)
nargs[args.length + i] = arguments[i];
return caml_call_gen(f, nargs);
var g = function (...extra_args) {
if (extra_args.length === 0) extra_args = [undefined];
return caml_call_gen(f, args.concat(extra_args));
};
}
}
Expand Down Expand Up @@ -108,13 +104,10 @@ function caml_call_gen(f, args) {
break;
}
default: {
var g = function () {
var extra_args = arguments.length === 0 ? 1 : arguments.length;
var nargs = new Array(argsLen + extra_args);
for (var i = 0; i < argsLen; i++) nargs[i] = args[i];
for (var i = 0; i < arguments.length; i++)
nargs[argsLen + i] = arguments[i];
return caml_call_gen(f, nargs);
args.length = argsLen;
var g = function (...extra_args) {
if (extra_args.length === 0) extra_args = [undefined];
return caml_call_gen(f, args.concat(extra_args));
};
}
}
Expand Down
56 changes: 16 additions & 40 deletions runtime/wasm/runtime.js
Original file line number Diff line number Diff line change
Expand Up @@ -228,72 +228,48 @@
for (let i = 0; i < l; i++) string_set(s, p2 + i, a[p1 + i]);
},
wrap_callback: (f) =>
function () {
var n = arguments.length;
if (n > 0) {
var args = new Array(n);
for (var i = 0; i < n; i++) args[i] = arguments[i];
} else {
function (...args) {
if (args.length === 0) {
args = [undefined];
}
return caml_callback(f, args.length, args, 1);
},
wrap_callback_args: (f) =>
function () {
var n = arguments.length;
var args = new Array(n);
for (var i = 0; i < n; i++) args[i] = arguments[i];
function (...args) {
return caml_callback(f, 1, [args], 0);
},
wrap_callback_strict: (arity, f) =>
function () {
var n = arguments.length;
var args = new Array(arity);
var len = Math.min(arguments.length, arity);
for (var i = 0; i < len; i++) args[i] = arguments[i];
function (...args) {
args.length = arity;
return caml_callback(f, arity, args, 0);
},
wrap_callback_unsafe: (f) =>
function () {
var n = arguments.length;
var args = new Array(n);
for (var i = 0; i < n; i++) args[i] = arguments[i];
function (...args) {
return caml_callback(f, args.length, args, 2);
},
wrap_meth_callback: (f) =>
function () {
var n = arguments.length;
var args = new Array(n + 1);
args[0] = this;
for (var i = 0; i < n; i++) args[i + 1] = arguments[i];
function (...args) {
args.unshift(this);
return caml_callback(f, args.length, args, 1);
},
wrap_meth_callback_args: (f) =>
function () {
var n = arguments.length;
var args = new Array(n);
for (var i = 0; i < n; i++) args[i] = arguments[i];
function (...args) {
return caml_callback(f, 2, [this, args], 0);
},
wrap_meth_callback_strict: (arity, f) =>
function () {
var args = new Array(arity + 1);
var len = Math.min(arguments.length, arity);
args[0] = this;
for (var i = 0; i < len; i++) args[i + 1] = arguments[i];
function (...args) {
args.length = arity;
args.unshift(this);
return caml_callback(f, args.length, args, 0);
},
wrap_meth_callback_unsafe: (f) =>
function () {
var n = arguments.length;
var args = new Array(n + 1);
args[0] = this;
for (var i = 0; i < n; i++) args[i + 1] = arguments[i];
function (...args) {
args.unshift(this);
return caml_callback(f, args.length, args, 2);
},
wrap_fun_arguments: (f) =>
function () {
return f(arguments);
function (...args) {
return f(args);
},
format_float: (prec, conversion, pad, x) => {
function toFixed(x, dp) {
Expand Down

0 comments on commit 145e4d2

Please sign in to comment.