diff options
author | Divy Srivastava <dj.srivastava23@gmail.com> | 2023-11-15 04:25:55 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-15 13:25:55 +0100 |
commit | 7f3902b41f68edddbc50b01ea52c697827d8516f (patch) | |
tree | 4fae66aafc0d4c81e9fa39d7e2e2117f1afcf551 /runtime/ops | |
parent | c67de43ff3221ae5554398095261d684b6d41dda (diff) |
perf: static bootstrap options in snapshot (#21213)
Closes https://github.com/denoland/deno/issues/21133
Diffstat (limited to 'runtime/ops')
-rw-r--r-- | runtime/ops/bootstrap.rs | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/runtime/ops/bootstrap.rs b/runtime/ops/bootstrap.rs index 72e31a1d6..066488d09 100644 --- a/runtime/ops/bootstrap.rs +++ b/runtime/ops/bootstrap.rs @@ -2,6 +2,7 @@ use deno_core::op2; use deno_core::OpState; +use serde::Serialize; use crate::BootstrapOptions; @@ -16,9 +17,34 @@ deno_core::extension!( op_bootstrap_log_level, op_bootstrap_no_color, op_bootstrap_is_tty, + op_snapshot_options, ], + options = { + snapshot_options: Option<SnapshotOptions>, + }, + state = |state, options| { + if let Some(snapshot_options) = options.snapshot_options { + state.put::<SnapshotOptions>(snapshot_options); + } + }, ); +#[derive(Serialize)] +#[serde(rename_all = "camelCase")] +pub struct SnapshotOptions { + pub deno_version: String, + pub ts_version: String, + pub v8_version: &'static str, + pub target: String, +} + +// Note: Called at snapshot time, op perf is not a concern. +#[op2] +#[serde] +pub fn op_snapshot_options(state: &mut OpState) -> SnapshotOptions { + state.take::<SnapshotOptions>() +} + #[op2] #[serde] pub fn op_bootstrap_args(state: &mut OpState) -> Vec<String> { |