summaryrefslogtreecommitdiff
path: root/core/extensions.rs
diff options
context:
space:
mode:
authorDivy Srivastava <dj.srivastava23@gmail.com>2023-03-18 18:44:28 +0530
committerGitHub <noreply@github.com>2023-03-18 13:14:28 +0000
commit8af0c8351935ea7c6c0441055d5164908322c9d6 (patch)
treea61be71ff9ac5379f8e992927bd096c3e6a0ad8f /core/extensions.rs
parent5223f3d9b68921179db8cd6b00babd711d4f06ff (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.rs41
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)
),