diff options
author | Nayeem Rahman <nayeemrmn99@gmail.com> | 2023-06-13 16:45:06 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-13 09:45:06 -0600 |
commit | ceb03cfb037cf7024a5048b17b508ddda59cfa05 (patch) | |
tree | 0c2df444e00f17131f9e2af708f80cdc4b032ce8 /core/snapshot_util.rs | |
parent | 5348778666d2d8d7ce138bbdf75ac5aa9f7ed428 (diff) |
refactor(core): cleanup feature flags for js source inclusion (#19463)
Remove `ExtensionFileSourceCode::LoadedFromFsDuringSnapshot` and feature
`include_js_for_snapshotting` since they leak paths that are only
applicable in this repo to embedders. Replace with feature
`exclude_js_sources`. Additionally the feature
`force_include_js_sources` allows negating it, if both features are set.
We need both of these because features are additive and there must be a
way of force including sources for snapshot creation while still having
the `exclude_js_sources` feature. `force_include_js_sources` is only set
for build deps, so sources are still excluded from the final binary.
You can also specify `force_include_js_sources` on any extension to
override the above features for that extension. Towards #19398.
But there was still the snapshot-from-snapshot situation where code
could be executed twice, I addressed that by making `mod_evaluate()` and
scripts like `core/01_core.js` behave idempotently. This allowed
unifying `ext::init_ops()` and `ext::init_ops_and_esm()` into
`ext::init()`.
Diffstat (limited to 'core/snapshot_util.rs')
-rw-r--r-- | core/snapshot_util.rs | 30 |
1 files changed, 1 insertions, 29 deletions
diff --git a/core/snapshot_util.rs b/core/snapshot_util.rs index 88c273147..200a81d15 100644 --- a/core/snapshot_util.rs +++ b/core/snapshot_util.rs @@ -22,16 +22,7 @@ pub struct CreateSnapshotOptions { pub snapshot_module_load_cb: Option<ExtModuleLoaderCb>, } -pub struct CreateSnapshotOutput { - /// Any files marked as LoadedFromFsDuringSnapshot are collected here and should be - /// printed as 'cargo:rerun-if-changed' lines from your build script. - pub files_loaded_during_snapshot: Vec<PathBuf>, -} - -#[must_use = "The files listed by create_snapshot should be printed as 'cargo:rerun-if-changed' lines"] -pub fn create_snapshot( - create_snapshot_options: CreateSnapshotOptions, -) -> CreateSnapshotOutput { +pub fn create_snapshot(create_snapshot_options: CreateSnapshotOptions) { let mut mark = Instant::now(); let js_runtime = JsRuntimeForSnapshot::new( @@ -51,22 +42,6 @@ pub fn create_snapshot( ); mark = Instant::now(); - let mut files_loaded_during_snapshot = vec![]; - for source in js_runtime - .extensions() - .iter() - .flat_map(|e| vec![e.get_esm_sources(), e.get_js_sources()]) - .flatten() - .flatten() - { - use crate::ExtensionFileSourceCode; - if let ExtensionFileSourceCode::LoadedFromFsDuringSnapshot(path) = - &source.code - { - files_loaded_during_snapshot.push(path.clone()); - } - } - let snapshot = js_runtime.snapshot(); let snapshot_slice: &[u8] = &snapshot; println!( @@ -112,9 +87,6 @@ pub fn create_snapshot( Instant::now().saturating_duration_since(mark), create_snapshot_options.snapshot_path.display(), ); - CreateSnapshotOutput { - files_loaded_during_snapshot, - } } pub type FilterFn = Box<dyn Fn(&PathBuf) -> bool>; |