From 0a0b416d6c560489880eeb5bc78d3a3a8fc5ae62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vinicius=20Louren=C3=A7o?= <12551007+H4ad@users.noreply.github.com> Date: Mon, 30 Oct 2023 17:48:16 -0300 Subject: [PATCH] lib: avoid memory allocation on nodeprecation flag PR-URL: https://github.com/nodejs/node/pull/50231 Reviewed-By: Yagiz Nizipli Reviewed-By: James M Snell --- lib/internal/modules/esm/resolve.js | 9 +++++++++ lib/internal/process/warning.js | 5 +++++ 2 files changed, 14 insertions(+) diff --git a/lib/internal/modules/esm/resolve.js b/lib/internal/modules/esm/resolve.js index 58e7df07ca5275..06a34c11254a2f 100644 --- a/lib/internal/modules/esm/resolve.js +++ b/lib/internal/modules/esm/resolve.js @@ -75,6 +75,9 @@ const emittedPackageWarnings = new SafeSet(); * @param {string} base - The URL of the module that imported the package. */ function emitTrailingSlashPatternDeprecation(match, pjsonUrl, base) { + if (process.noDeprecation) { + return; + } const pjsonPath = fileURLToPath(pjsonUrl); if (emittedPackageWarnings.has(pjsonPath + '|' + match)) { return; } emittedPackageWarnings.add(pjsonPath + '|' + match); @@ -101,6 +104,9 @@ const doubleSlashRegEx = /[/\\][/\\]/; * @param {boolean} isTarget - Whether the target is a module. */ function emitInvalidSegmentDeprecation(target, request, match, pjsonUrl, internal, base, isTarget) { + if (process.noDeprecation) { + return; + } const pjsonPath = fileURLToPath(pjsonUrl); const double = RegExpPrototypeExec(doubleSlashRegEx, isTarget ? target : request) !== null; process.emitWarning( @@ -123,6 +129,9 @@ function emitInvalidSegmentDeprecation(target, request, match, pjsonUrl, interna * @param {string} [main] - The "main" field from the package.json file. */ function emitLegacyIndexDeprecation(url, packageJSONUrl, base, main) { + if (process.noDeprecation) { + return; + } const format = defaultGetFormatWithoutErrors(url); if (format !== 'module') { return; } const path = fileURLToPath(url); diff --git a/lib/internal/process/warning.js b/lib/internal/process/warning.js index 3ce00004dab476..4aa86b9df58a87 100644 --- a/lib/internal/process/warning.js +++ b/lib/internal/process/warning.js @@ -127,6 +127,11 @@ function onWarning(warning) { // process.emitWarning(str[, type[, code]][, ctor]) // process.emitWarning(str[, options]) function emitWarning(warning, type, code, ctor) { + // Fast path to avoid memory allocation, + // this doesn't eliminate the other if a few lines below + if (process.noDeprecation && type === 'DeprecationWarning') { + return; + } let detail; if (type !== null && typeof type === 'object' && !ArrayIsArray(type)) { ctor = type.ctor;