perf: static bootstrap options in snapshot (#21213)

Closes https://github.com/denoland/deno/issues/21133
This commit is contained in:
Divy Srivastava 2023-11-15 04:25:55 -08:00 committed by GitHub
parent c67de43ff3
commit 7f3902b41f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 66 additions and 47 deletions

View file

@ -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> {