diff options
author | Divy Srivastava <dj.srivastava23@gmail.com> | 2023-03-18 18:44:28 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-18 13:14:28 +0000 |
commit | 8af0c8351935ea7c6c0441055d5164908322c9d6 (patch) | |
tree | a61be71ff9ac5379f8e992927bd096c3e6a0ad8f /core/extensions.rs | |
parent | 5223f3d9b68921179db8cd6b00babd711d4f06ff (diff) |
perf(core): use static specifier in ExtensionFileSource (#18264)
Closes #18085
---------
Co-authored-by: Bartek IwaĆczuk <biwanczuk@gmail.com>
Diffstat (limited to 'core/extensions.rs')
-rw-r--r-- | core/extensions.rs | 41 |
1 files changed, 12 insertions, 29 deletions
diff --git a/core/extensions.rs b/core/extensions.rs index 801f5f1a6..2a578429b 100644 --- a/core/extensions.rs +++ b/core/extensions.rs @@ -37,7 +37,7 @@ impl ExtensionFileSourceCode { #[derive(Clone, Debug)] pub struct ExtensionFileSource { - pub specifier: String, + pub specifier: &'static str, pub code: ExtensionFileSourceCode, } pub type OpFnRef = v8::FunctionCallback; @@ -190,11 +190,11 @@ macro_rules! extension { #[allow(unused_variables)] fn with_js(ext: &mut $crate::ExtensionBuilder) { $( ext.esm( - $crate::include_js_files!( $( dir $dir_esm , )? $( $esm , )* ) + $crate::include_js_files!( $name $( dir $dir_esm , )? $( $esm , )* ) ); )? $( ext.esm(vec![ExtensionFileSource { - specifier: "ext:setup".to_string(), + specifier: "ext:setup", code: ExtensionFileSourceCode::IncludedInBinary($esm_setup_script), }]); )? @@ -202,7 +202,7 @@ macro_rules! extension { ext.esm_entry_point($esm_entry_point); )? $( ext.js( - $crate::include_js_files!( $( dir $dir_js , )? $( $js , )* ) + $crate::include_js_files!( $name $( dir $dir_js , )? $( $js , )* ) ); )? } @@ -456,28 +456,11 @@ pub struct ExtensionBuilder { impl ExtensionBuilder { pub fn js(&mut self, js_files: Vec<ExtensionFileSource>) -> &mut Self { - let js_files = - // TODO(bartlomieju): if we're automatically remapping here, then we should - // use a different result struct that `ExtensionFileSource` as it's confusing - // when (and why) the remapping happens. - js_files.into_iter().map(|file_source| ExtensionFileSource { - specifier: format!("ext:{}/{}", self.name, file_source.specifier), - code: file_source.code, - }); self.js.extend(js_files); self } pub fn esm(&mut self, esm_files: Vec<ExtensionFileSource>) -> &mut Self { - let esm_files = esm_files - .into_iter() - // TODO(bartlomieju): if we're automatically remapping here, then we should - // use a different result struct that `ExtensionFileSource` as it's confusing - // when (and why) the remapping happens. - .map(|file_source| ExtensionFileSource { - specifier: format!("ext:{}/{}", self.name, file_source.specifier), - code: file_source.code, - }); self.esm.extend(esm_files); self } @@ -600,10 +583,10 @@ impl ExtensionBuilder { #[cfg(not(feature = "include_js_files_for_snapshotting"))] #[macro_export] macro_rules! include_js_files { - (dir $dir:literal, $($file:literal,)+) => { + ($name:ident dir $dir:literal, $($file:literal,)+) => { vec![ $($crate::ExtensionFileSource { - specifier: concat!($file).to_string(), + specifier: concat!("ext:", stringify!($name), "/", $file), code: $crate::ExtensionFileSourceCode::IncludedInBinary( include_str!(concat!($dir, "/", $file) )), @@ -611,10 +594,10 @@ macro_rules! include_js_files { ] }; - ($($file:literal,)+) => { + ($name:ident $($file:literal,)+) => { vec![ $($crate::ExtensionFileSource { - specifier: $file.to_string(), + specifier: concat!("ext:", stringify!($name), "/", $file), code: $crate::ExtensionFileSourceCode::IncludedInBinary( include_str!($file) ), @@ -626,10 +609,10 @@ macro_rules! include_js_files { #[cfg(feature = "include_js_files_for_snapshotting")] #[macro_export] macro_rules! include_js_files { - (dir $dir:literal, $($file:literal,)+) => { + ($name:ident dir $dir:literal, $($file:literal,)+) => { vec![ $($crate::ExtensionFileSource { - specifier: concat!($file).to_string(), + specifier: concat!("ext:", stringify!($name), "/", $file), code: $crate::ExtensionFileSourceCode::LoadedFromFsDuringSnapshot( std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR")).join($dir).join($file) ), @@ -637,10 +620,10 @@ macro_rules! include_js_files { ] }; - ($($file:literal,)+) => { + ($name:ident $($file:literal,)+) => { vec![ $($crate::ExtensionFileSource { - specifier: $file.to_string(), + specifier: concat!("ext:", stringify!($name), "/", $file), code: $crate::ExtensionFileSourceCode::LoadedFromFsDuringSnapshot( std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR")).join($file) ), |