summaryrefslogtreecommitdiff
path: root/runtime/ops
diff options
context:
space:
mode:
authorDivy Srivastava <dj.srivastava23@gmail.com>2023-11-15 04:25:55 -0800
committerGitHub <noreply@github.com>2023-11-15 13:25:55 +0100
commit7f3902b41f68edddbc50b01ea52c697827d8516f (patch)
tree4fae66aafc0d4c81e9fa39d7e2e2117f1afcf551 /runtime/ops
parentc67de43ff3221ae5554398095261d684b6d41dda (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.rs26
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> {