From ec60639cc0a69d81f80f0fed98eaf9d29c775efd Mon Sep 17 00:00:00 2001 From: Joyee Cheung Date: Sun, 14 Jan 2024 23:16:16 +0100 Subject: [PATCH] lib: remove unnecessary refreshHrtimeBuffer() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We now serialize/deseialize the hrtime buffers properly instead of throwing them away at serialization and creating new ones at pre-execution, so there is no need to reset the variables to the binding property at pre-execution time. PR-URL: https://github.com/nodejs/node/pull/51446 Refs: https://github.com/nodejs/node/pull/48655 Reviewed-By: Vinícius Lourenço Claro Cardoso Reviewed-By: Luigi Pinca Reviewed-By: Jithil P Ponnan Reviewed-By: Antoine du Hamel Reviewed-By: Marco Ippolito --- lib/internal/process/per_thread.js | 23 +++++++---------------- lib/internal/process/pre_execution.js | 2 -- 2 files changed, 7 insertions(+), 18 deletions(-) diff --git a/lib/internal/process/per_thread.js b/lib/internal/process/per_thread.js index 9b86f20053da3b..89428cf916aa29 100644 --- a/lib/internal/process/per_thread.js +++ b/lib/internal/process/per_thread.js @@ -57,21 +57,13 @@ const { exitCodes: { kNoFailure } } = internalBinding('errors'); const binding = internalBinding('process_methods'); -let hrValues; -let hrBigintValues; - -function refreshHrtimeBuffer() { - // The 3 entries filled in by the original process.hrtime contains - // the upper/lower 32 bits of the second part of the value, - // and the remaining nanoseconds of the value. - hrValues = binding.hrtimeBuffer; - // Use a BigUint64Array in the closure because this is actually a bit - // faster than simply returning a BigInt from C++ in V8 7.1. - hrBigintValues = new BigUint64Array(binding.hrtimeBuffer.buffer, 0, 1); -} - -// Create the buffers. -refreshHrtimeBuffer(); +// The 3 entries filled in by the original process.hrtime contains +// the upper/lower 32 bits of the second part of the value, +// and the remaining nanoseconds of the value. +const hrValues = binding.hrtimeBuffer; +// Use a BigUint64Array because this is actually a bit +// faster than simply returning a BigInt from C++ in V8 7.1. +const hrBigintValues = new BigUint64Array(binding.hrtimeBuffer.buffer, 0, 1); function hrtime(time) { binding.hrtime(); @@ -425,5 +417,4 @@ module.exports = { wrapProcessMethods, hrtime, hrtimeBigInt, - refreshHrtimeBuffer, }; diff --git a/lib/internal/process/pre_execution.js b/lib/internal/process/pre_execution.js index ef1e2309c30409..09950bf9ed9ad5 100644 --- a/lib/internal/process/pre_execution.js +++ b/lib/internal/process/pre_execution.js @@ -212,8 +212,6 @@ function patchProcessObject(expandArgv1) { const binding = internalBinding('process_methods'); binding.patchProcessObject(process); - require('internal/process/per_thread').refreshHrtimeBuffer(); - // Since we replace process.argv[0] below, preserve the original value in case the user needs it. ObjectDefineProperty(process, 'argv0', { __proto__: null,