From 240b362c002d17bc2b676673ed1b9406683ff0c2 Mon Sep 17 00:00:00 2001 From: David Sherret Date: Mon, 1 Apr 2024 09:10:04 -0400 Subject: perf(node): put pkg json into an `Rc` (#23156) Was doing a bit of debugging on why some stuff is not working in a personal project and ran a quick debug profile and saw it cloning the pkg json a lot. We should put this in an Rc. --- ext/node/resolution.rs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'ext/node/resolution.rs') diff --git a/ext/node/resolution.rs b/ext/node/resolution.rs index 50c4e2bb5..37598810d 100644 --- a/ext/node/resolution.rs +++ b/ext/node/resolution.rs @@ -4,6 +4,7 @@ use std::borrow::Cow; use std::collections::HashMap; use std::path::Path; use std::path::PathBuf; +use std::rc::Rc; use deno_core::anyhow::bail; use deno_core::anyhow::Context; @@ -252,7 +253,7 @@ impl NodeResolver { specifier, referrer, NodeModuleKind::Esm, - pkg_config.as_ref(), + pkg_config.as_deref(), conditions, mode, permissions, @@ -399,7 +400,7 @@ impl NodeResolver { let package_json = self .load_package_json(&AllowAllNodePermissions, package_json_path.clone())?; - Ok(match package_json.bin { + Ok(match &package_json.bin { Some(Value::String(_)) => { let Some(name) = &package_json.name else { bail!("'{}' did not have a name", package_json_path.display()); @@ -407,7 +408,7 @@ impl NodeResolver { vec![name.to_string()] } Some(Value::Object(o)) => { - o.into_iter().map(|(key, _)| key).collect::>() + o.iter().map(|(key, _)| key.clone()).collect::>() } _ => Vec::new(), }) @@ -1164,7 +1165,7 @@ impl NodeResolver { &self, url: &ModuleSpecifier, permissions: &dyn NodePermissions, - ) -> Result, AnyError> { + ) -> Result>, AnyError> { let Ok(file_path) = url.to_file_path() else { return Ok(None); }; @@ -1175,7 +1176,7 @@ impl NodeResolver { &self, file_path: &Path, permissions: &dyn NodePermissions, - ) -> Result, AnyError> { + ) -> Result>, AnyError> { let Some(package_json_path) = self.get_closest_package_json_path(file_path)? else { @@ -1213,7 +1214,7 @@ impl NodeResolver { &self, permissions: &dyn NodePermissions, package_json_path: PathBuf, - ) -> Result { + ) -> Result, AnyError> { PackageJson::load( &*self.fs, &*self.npm_resolver, -- cgit v1.2.3