From 7f3902b41f68edddbc50b01ea52c697827d8516f Mon Sep 17 00:00:00 2001 From: Divy Srivastava Date: Wed, 15 Nov 2023 04:25:55 -0800 Subject: perf: static bootstrap options in snapshot (#21213) Closes https://github.com/denoland/deno/issues/21133 --- runtime/ops/bootstrap.rs | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'runtime/ops') 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, + }, + state = |state, options| { + if let Some(snapshot_options) = options.snapshot_options { + state.put::(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::() +} + #[op2] #[serde] pub fn op_bootstrap_args(state: &mut OpState) -> Vec { -- cgit v1.2.3