summaryrefslogtreecommitdiff
path: root/core/snapshot_util.rs
diff options
context:
space:
mode:
authorNayeem Rahman <nayeemrmn99@gmail.com>2023-06-13 16:45:06 +0100
committerGitHub <noreply@github.com>2023-06-13 09:45:06 -0600
commitceb03cfb037cf7024a5048b17b508ddda59cfa05 (patch)
tree0c2df444e00f17131f9e2af708f80cdc4b032ce8 /core/snapshot_util.rs
parent5348778666d2d8d7ce138bbdf75ac5aa9f7ed428 (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.rs30
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>;