timers: cleanup extraneous property on Immediates
This was originally changed in 6f75b6672ca08c2bc3bf5fe14abb1a9648601e2 but it appears unnecessary and benhcmark results show little difference without the extra property. Refs: https://github.com/nodejs/node/pull/6436 PR-URL: https://github.com/nodejs/node/pull/16355 Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Anatoli Papirovski <apapirovski@mac.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Refael Ackermann <refack@gmail.com>
This commit is contained in:
parent
27e12e7524
commit
839faae45a
@ -727,8 +727,6 @@ function processImmediate() {
|
|||||||
if (domain)
|
if (domain)
|
||||||
domain.enter();
|
domain.enter();
|
||||||
|
|
||||||
immediate._callback = immediate._onImmediate;
|
|
||||||
|
|
||||||
// Save next in case `clearImmediate(immediate)` is called from callback
|
// Save next in case `clearImmediate(immediate)` is called from callback
|
||||||
var next = immediate._idleNext;
|
var next = immediate._idleNext;
|
||||||
|
|
||||||
@ -764,8 +762,8 @@ function tryOnImmediate(immediate, oldTail) {
|
|||||||
runCallback(immediate);
|
runCallback(immediate);
|
||||||
threw = false;
|
threw = false;
|
||||||
} finally {
|
} finally {
|
||||||
// clearImmediate checks _callback === null for kDestroy hooks.
|
// clearImmediate checks _onImmediate === null for kDestroy hooks.
|
||||||
immediate._callback = null;
|
immediate._onImmediate = null;
|
||||||
if (!threw)
|
if (!threw)
|
||||||
emitAfter(immediate[async_id_symbol]);
|
emitAfter(immediate[async_id_symbol]);
|
||||||
if (async_hook_fields[kDestroy] > 0 && !immediate._destroyed) {
|
if (async_hook_fields[kDestroy] > 0 && !immediate._destroyed) {
|
||||||
@ -794,21 +792,21 @@ function tryOnImmediate(immediate, oldTail) {
|
|||||||
function runCallback(timer) {
|
function runCallback(timer) {
|
||||||
const argv = timer._argv;
|
const argv = timer._argv;
|
||||||
const argc = argv ? argv.length : 0;
|
const argc = argv ? argv.length : 0;
|
||||||
if (typeof timer._callback !== 'function')
|
if (typeof timer._onImmediate !== 'function')
|
||||||
return promiseResolve(timer._callback, argv[0]);
|
return promiseResolve(timer._onImmediate, argv[0]);
|
||||||
switch (argc) {
|
switch (argc) {
|
||||||
// fast-path callbacks with 0-3 arguments
|
// fast-path callbacks with 0-3 arguments
|
||||||
case 0:
|
case 0:
|
||||||
return timer._callback();
|
return timer._onImmediate();
|
||||||
case 1:
|
case 1:
|
||||||
return timer._callback(argv[0]);
|
return timer._onImmediate(argv[0]);
|
||||||
case 2:
|
case 2:
|
||||||
return timer._callback(argv[0], argv[1]);
|
return timer._onImmediate(argv[0], argv[1]);
|
||||||
case 3:
|
case 3:
|
||||||
return timer._callback(argv[0], argv[1], argv[2]);
|
return timer._onImmediate(argv[0], argv[1], argv[2]);
|
||||||
// more than 3 arguments run slower with .apply
|
// more than 3 arguments run slower with .apply
|
||||||
default:
|
default:
|
||||||
return Function.prototype.apply.call(timer._callback, timer, argv);
|
return Function.prototype.apply.call(timer._onImmediate, timer, argv);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -818,7 +816,7 @@ function Immediate() {
|
|||||||
// so have caller annotate the object (node v6.0.0, v8 5.0.71.35)
|
// so have caller annotate the object (node v6.0.0, v8 5.0.71.35)
|
||||||
this._idleNext = null;
|
this._idleNext = null;
|
||||||
this._idlePrev = null;
|
this._idlePrev = null;
|
||||||
this._callback = null;
|
this._onImmediate = null;
|
||||||
this._argv = null;
|
this._argv = null;
|
||||||
this._onImmediate = null;
|
this._onImmediate = null;
|
||||||
this._destroyed = false;
|
this._destroyed = false;
|
||||||
@ -869,7 +867,6 @@ exports.setImmediate = setImmediate;
|
|||||||
function createImmediate(args, callback) {
|
function createImmediate(args, callback) {
|
||||||
// declaring it `const immediate` causes v6.0.0 to deoptimize this function
|
// declaring it `const immediate` causes v6.0.0 to deoptimize this function
|
||||||
var immediate = new Immediate();
|
var immediate = new Immediate();
|
||||||
immediate._callback = callback;
|
|
||||||
immediate._argv = args;
|
immediate._argv = args;
|
||||||
immediate._onImmediate = callback;
|
immediate._onImmediate = callback;
|
||||||
|
|
||||||
@ -888,7 +885,7 @@ exports.clearImmediate = function(immediate) {
|
|||||||
if (!immediate) return;
|
if (!immediate) return;
|
||||||
|
|
||||||
if (async_hook_fields[kDestroy] > 0 &&
|
if (async_hook_fields[kDestroy] > 0 &&
|
||||||
immediate._callback !== null &&
|
immediate._onImmediate !== null &&
|
||||||
!immediate._destroyed) {
|
!immediate._destroyed) {
|
||||||
emitDestroy(immediate[async_id_symbol]);
|
emitDestroy(immediate[async_id_symbol]);
|
||||||
immediate._destroyed = true;
|
immediate._destroyed = true;
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
at rejectionHandled (internal/process/promises.js:*)
|
at rejectionHandled (internal/process/promises.js:*)
|
||||||
at *
|
at *
|
||||||
at Promise.catch *
|
at Promise.catch *
|
||||||
at Immediate.setImmediate [as _onImmediate] (*test*message*unhandled_promise_trace_warnings.js:*)
|
at Immediate.setImmediate (*test*message*unhandled_promise_trace_warnings.js:*)
|
||||||
at *
|
at *
|
||||||
at *
|
at *
|
||||||
at *
|
at *
|
||||||
|
Loading…
x
Reference in New Issue
Block a user