summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--benchmark/timers/timers-breadth-args.js42
-rw-r--r--lib/fs.js6
-rw-r--r--lib/internal/async_hooks.js6
-rw-r--r--lib/internal/process/task_queues.js4
-rw-r--r--lib/internal/timers.js6
5 files changed, 52 insertions, 12 deletions
diff --git a/benchmark/timers/timers-breadth-args.js b/benchmark/timers/timers-breadth-args.js
new file mode 100644
index 0000000000..5f91603caa
--- /dev/null
+++ b/benchmark/timers/timers-breadth-args.js
@@ -0,0 +1,42 @@
+'use strict';
+const common = require('../common.js');
+
+const bench = common.createBenchmark(main, {
+ n: [1e6],
+});
+
+function main({ n }) {
+ var j = 0;
+ function cb1(arg1) {
+ j++;
+ if (j === n)
+ bench.end(n);
+ }
+ function cb2(arg1, arg2) {
+ j++;
+ if (j === n)
+ bench.end(n);
+ }
+ function cb3(arg1, arg2, arg3) {
+ j++;
+ if (j === n)
+ bench.end(n);
+ }
+ function cb4(arg1, arg2, arg3, arg4) {
+ j++;
+ if (j === n)
+ bench.end(n);
+ }
+
+ bench.start();
+ for (var i = 0; i < n; i++) {
+ if (i % 4 === 0)
+ setTimeout(cb4, 1, 3.14, 1024, true, false);
+ else if (i % 3 === 0)
+ setTimeout(cb3, 1, 512, true, null);
+ else if (i % 2 === 0)
+ setTimeout(cb2, 1, false, 5.1);
+ else
+ setTimeout(cb1, 1, 0);
+ }
+}
diff --git a/lib/fs.js b/lib/fs.js
index 9effb93acb..1b8ad7636e 100644
--- a/lib/fs.js
+++ b/lib/fs.js
@@ -24,7 +24,7 @@
'use strict';
-const { Math, Object, Reflect } = primordials;
+const { Math, Object } = primordials;
const { fs: constants } = internalBinding('constants');
const {
@@ -133,9 +133,7 @@ function makeCallback(cb) {
throw new ERR_INVALID_CALLBACK(cb);
}
- return (...args) => {
- return Reflect.apply(cb, undefined, args);
- };
+ return (...args) => cb(...args);
}
// Special case of `makeCallback()` that is specific to async `*stat()` calls as
diff --git a/lib/internal/async_hooks.js b/lib/internal/async_hooks.js
index cba8d15a6c..64f5cb2462 100644
--- a/lib/internal/async_hooks.js
+++ b/lib/internal/async_hooks.js
@@ -1,6 +1,6 @@
'use strict';
-const { FunctionPrototype, Object, Reflect } = primordials;
+const { FunctionPrototype, Object } = primordials;
const {
ERR_ASYNC_TYPE,
@@ -278,14 +278,14 @@ function clearDefaultTriggerAsyncId() {
function defaultTriggerAsyncIdScope(triggerAsyncId, block, ...args) {
if (triggerAsyncId === undefined)
- return Reflect.apply(block, null, args);
+ return block(...args);
// CHECK(Number.isSafeInteger(triggerAsyncId))
// CHECK(triggerAsyncId > 0)
const oldDefaultTriggerAsyncId = async_id_fields[kDefaultTriggerAsyncId];
async_id_fields[kDefaultTriggerAsyncId] = triggerAsyncId;
try {
- return Reflect.apply(block, null, args);
+ return block(...args);
} finally {
async_id_fields[kDefaultTriggerAsyncId] = oldDefaultTriggerAsyncId;
}
diff --git a/lib/internal/process/task_queues.js b/lib/internal/process/task_queues.js
index 28843d3fb1..5148628457 100644
--- a/lib/internal/process/task_queues.js
+++ b/lib/internal/process/task_queues.js
@@ -1,6 +1,6 @@
'use strict';
-const { FunctionPrototype, Reflect } = primordials;
+const { FunctionPrototype } = primordials;
const {
// For easy access to the nextTick state in the C++ land,
@@ -81,7 +81,7 @@ function processTicksAndRejections() {
if (tock.args === undefined)
callback();
else
- Reflect.apply(callback, undefined, tock.args);
+ callback(...tock.args);
emitAfter(asyncId);
}
diff --git a/lib/internal/timers.js b/lib/internal/timers.js
index 566d7df036..8ba7923e57 100644
--- a/lib/internal/timers.js
+++ b/lib/internal/timers.js
@@ -72,7 +72,7 @@
// timers within (or creation of a new list). However, these operations combined
// have shown to be trivial in comparison to other timers architectures.
-const { Math, Object, Reflect } = primordials;
+const { Math, Object } = primordials;
const {
scheduleTimer,
@@ -438,7 +438,7 @@ function getTimerCallbacks(runNextTicks) {
if (!argv)
immediate._onImmediate();
else
- Reflect.apply(immediate._onImmediate, immediate, argv);
+ immediate._onImmediate(...argv);
} finally {
immediate._onImmediate = null;
@@ -530,7 +530,7 @@ function getTimerCallbacks(runNextTicks) {
if (args === undefined)
timer._onTimeout();
else
- Reflect.apply(timer._onTimeout, timer, args);
+ timer._onTimeout(...args);
} finally {
if (timer._repeat && timer._idleTimeout !== -1) {
timer._idleTimeout = timer._repeat;