From 2098d7a966364d078374de2f96e1c6c53ff152d1 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Mon, 12 Dec 2022 16:17:53 +0100 Subject: [PATCH 1/3] lib: remove unnecessary lazy loading in `internal/encoding` PR-URL: https://github.com/nodejs/node/pull/45810 Reviewed-By: Daeyeon Jeong Reviewed-By: Yagiz Nizipli --- lib/internal/encoding.js | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/lib/internal/encoding.js b/lib/internal/encoding.js index 0e3c44d2e84fbb..5cf20ea04c98ff 100644 --- a/lib/internal/encoding.js +++ b/lib/internal/encoding.js @@ -56,12 +56,7 @@ const { decodeUTF8, } = internalBinding('buffer'); -let Buffer; -function lazyBuffer() { - if (Buffer === undefined) - Buffer = require('buffer').Buffer; - return Buffer; -} +const { Buffer } = require('buffer'); function validateEncoder(obj) { if (obj == null || obj[kEncoder] !== true) @@ -499,14 +494,14 @@ function makeTextDecoderJS() { validateDecoder(this); if (isAnyArrayBuffer(input)) { try { - input = lazyBuffer().from(input); + input = Buffer.from(input); } catch { input = empty; } } else if (isArrayBufferView(input)) { try { - input = lazyBuffer().from(input.buffer, input.byteOffset, - input.byteLength); + input = Buffer.from(input.buffer, input.byteOffset, + input.byteLength); } catch { input = empty; } From 29fa2dacd25eb42423cb0c952ae1b8e57f0b420e Mon Sep 17 00:00:00 2001 From: Yagiz Nizipli Date: Sat, 19 Nov 2022 15:13:08 -0500 Subject: [PATCH 2/3] lib: improve AbortController creation duration PR-URL: https://github.com/nodejs/node/pull/45525 Backport-PR-URL: https://github.com/nodejs/node/pull/46078 Reviewed-By: Matteo Collina Reviewed-By: Antoine du Hamel --- lib/internal/abort_controller.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/internal/abort_controller.js b/lib/internal/abort_controller.js index 7fbc4ed756c3c5..49419736f65bf6 100644 --- a/lib/internal/abort_controller.js +++ b/lib/internal/abort_controller.js @@ -318,6 +318,8 @@ function validateAbortController(obj) { } class AbortController { + #signal; + constructor() { this[kSignal] = createAbortSignal(); } @@ -327,7 +329,8 @@ class AbortController { */ get signal() { validateAbortController(this); - return this[kSignal]; + this.#signal ??= createAbortSignal(); + return this.#signal; } /** @@ -335,7 +338,7 @@ class AbortController { */ abort(reason = new DOMException('This operation was aborted', 'AbortError')) { validateAbortController(this); - abortSignal(this[kSignal], reason); + abortSignal(this.#signal ??= createAbortSignal(), reason); } [customInspectSymbol](depth, options) { From 12bf9b8da3d4bb76b74d6dca376d7f7a3c3d4fce Mon Sep 17 00:00:00 2001 From: Yagiz Nizipli Date: Sat, 19 Nov 2022 15:13:36 -0500 Subject: [PATCH 3/3] lib: improve transferable abort controller exec PR-URL: https://github.com/nodejs/node/pull/45525 Reviewed-By: Matteo Collina Reviewed-By: Antoine du Hamel --- lib/internal/abort_controller.js | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/lib/internal/abort_controller.js b/lib/internal/abort_controller.js index 49419736f65bf6..3c72a91f763c93 100644 --- a/lib/internal/abort_controller.js +++ b/lib/internal/abort_controller.js @@ -318,19 +318,13 @@ function validateAbortController(obj) { } class AbortController { - #signal; - - constructor() { - this[kSignal] = createAbortSignal(); - } - /** * @type {AbortSignal} */ get signal() { validateAbortController(this); - this.#signal ??= createAbortSignal(); - return this.#signal; + this[kSignal] ??= createAbortSignal(); + return this[kSignal]; } /** @@ -338,7 +332,7 @@ class AbortController { */ abort(reason = new DOMException('This operation was aborted', 'AbortError')) { validateAbortController(this); - abortSignal(this.#signal ??= createAbortSignal(), reason); + abortSignal(this[kSignal] ??= createAbortSignal(), reason); } [customInspectSymbol](depth, options) { @@ -349,7 +343,7 @@ class AbortController { static [kMakeTransferable]() { const controller = new AbortController(); - controller[kSignal] = transferableAbortSignal(controller[kSignal]); + controller[kSignal] = createAbortSignal({ transferable: true }); return controller; } }