summaryrefslogtreecommitdiff
path: root/runtime/ops/bootstrap.rs
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/ops/bootstrap.rs')
-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> {