From 15278252bb8391ef78f6973d15e4834da7030de9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=BCrg=C3=BCn=20Day=C4=B1o=C4=9Flu?= Date: Wed, 8 Oct 2025 14:11:43 +0200 Subject: [PATCH] lib: remove redundant destroyHook checks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/60120 Reviewed-By: Yagiz Nizipli Reviewed-By: Gerhard Stöbich --- lib/internal/async_hooks.js | 2 +- lib/internal/process/task_queues.js | 4 +--- lib/internal/timers.js | 10 +++------- lib/timers.js | 9 ++------- .../fixtures/errors/async_error_nexttick_main.snapshot | 2 +- 5 files changed, 8 insertions(+), 19 deletions(-) diff --git a/lib/internal/async_hooks.js b/lib/internal/async_hooks.js index 5f28ea6a0e..46ee92a7bb 100644 --- a/lib/internal/async_hooks.js +++ b/lib/internal/async_hooks.js @@ -532,7 +532,7 @@ function emitAfterScript(asyncId) { function emitDestroyScript(asyncId) { // Return early if there are no destroy callbacks, or invalid asyncId. - if (!hasHooks(kDestroy) || asyncId <= 0) + if (!hasHooks(kDestroy) || !(asyncId > 0)) return; async_wrap.queueDestroyAsyncId(asyncId); } diff --git a/lib/internal/process/task_queues.js b/lib/internal/process/task_queues.js index c7194977ba..bec1fd8bd4 100644 --- a/lib/internal/process/task_queues.js +++ b/lib/internal/process/task_queues.js @@ -27,7 +27,6 @@ const { getDefaultTriggerAsyncId, newAsyncId, initHooksExist, - destroyHooksExist, emitInit, emitBefore, emitAfter, @@ -94,8 +93,7 @@ function processTicksAndRejections() { } } } finally { - if (destroyHooksExist()) - emitDestroy(asyncId); + emitDestroy(asyncId); } emitAfter(asyncId); diff --git a/lib/internal/timers.js b/lib/internal/timers.js index f603725a7b..9c7366d6ca 100644 --- a/lib/internal/timers.js +++ b/lib/internal/timers.js @@ -92,7 +92,6 @@ const { getDefaultTriggerAsyncId, newAsyncId, initHooksExist, - destroyHooksExist, // The needed emit*() functions. emitInit, emitBefore, @@ -508,8 +507,7 @@ function getTimerCallbacks(runNextTicks) { } finally { immediate._onImmediate = null; - if (destroyHooksExist()) - emitDestroy(asyncId); + emitDestroy(asyncId); outstandingQueue.head = immediate = immediate._idleNext; } @@ -585,8 +583,7 @@ function getTimerCallbacks(runNextTicks) { if (timer[kRefed]) timeoutInfo[0]--; - if (destroyHooksExist()) - emitDestroy(asyncId); + emitDestroy(asyncId); } continue; } @@ -621,8 +618,7 @@ function getTimerCallbacks(runNextTicks) { if (timer[kRefed]) timeoutInfo[0]--; - if (destroyHooksExist()) - emitDestroy(asyncId); + emitDestroy(asyncId); } } diff --git a/lib/timers.js b/lib/timers.js index de28534b93..f6a2f74f5e 100644 --- a/lib/timers.js +++ b/lib/timers.js @@ -63,7 +63,6 @@ let timersPromises; let timers; const { - destroyHooksExist, // The needed emit*() functions. emitDestroy, } = require('internal/async_hooks'); @@ -78,9 +77,7 @@ function unenroll(item) { if (item[kHasPrimitive]) delete knownTimersById[item[async_id_symbol]]; - // Fewer checks may be possible, but these cover everything. - if (destroyHooksExist() && item[async_id_symbol] !== undefined) - emitDestroy(item[async_id_symbol]); + emitDestroy(item[async_id_symbol]); L.remove(item); @@ -239,9 +236,7 @@ function clearImmediate(immediate) { } immediate[kRefed] = null; - if (destroyHooksExist() && immediate[async_id_symbol] !== undefined) { - emitDestroy(immediate[async_id_symbol]); - } + emitDestroy(immediate[async_id_symbol]); immediate._onImmediate = null; diff --git a/test/fixtures/errors/async_error_nexttick_main.snapshot b/test/fixtures/errors/async_error_nexttick_main.snapshot index c5ccba996a..5c2e6e1558 100644 --- a/test/fixtures/errors/async_error_nexttick_main.snapshot +++ b/test/fixtures/errors/async_error_nexttick_main.snapshot @@ -1,7 +1,7 @@ Error: test at one (*fixtures*async-error.js:4:9) at two (*fixtures*async-error.js:17:9) - at process.processTicksAndRejections (node:internal*process*task_queues:105:5) + at process.processTicksAndRejections (node:internal*process*task_queues:103:5) at async three (*fixtures*async-error.js:20:3) at async four (*fixtures*async-error.js:24:3) at async main (*async_error_nexttick_main.js:7:5)