From 1ef617e8f3d48098e69e222b6eb6fe981aeca1c3 Mon Sep 17 00:00:00 2001 From: Divy Srivastava Date: Sun, 12 Nov 2023 20:52:59 -0800 Subject: perf: lazy bootstrap options - first pass (#21164) Move most runtime options to be lazily loaded. Constant options will be covered in a different PR. Towards https://github.com/denoland/deno/issues/21133 --- runtime/ops/bootstrap.rs | 61 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 runtime/ops/bootstrap.rs (limited to 'runtime/ops/bootstrap.rs') diff --git a/runtime/ops/bootstrap.rs b/runtime/ops/bootstrap.rs new file mode 100644 index 000000000..1b86a7509 --- /dev/null +++ b/runtime/ops/bootstrap.rs @@ -0,0 +1,61 @@ +// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license. + +use deno_core::op2; +use deno_core::OpState; + +use crate::BootstrapOptions; + +deno_core::extension!( + deno_bootstrap, + ops = [ + op_bootstrap_args, + op_bootstrap_pid, + op_bootstrap_numcpus, + op_bootstrap_user_agent, + op_bootstrap_language, + op_bootstrap_log_level, + op_bootstrap_no_color, + ], +); + +#[op2] +#[serde] +pub fn op_bootstrap_args(state: &mut OpState) -> Vec { + state.borrow::().args.clone() +} + +#[op2(fast)] +#[smi] +pub fn op_bootstrap_pid() -> u32 { + std::process::id() +} + +#[op2(fast)] +#[smi] +pub fn op_bootstrap_numcpus(state: &mut OpState) -> u32 { + state.borrow::().cpu_count as u32 +} + +#[op2] +#[string] +pub fn op_bootstrap_user_agent(state: &mut OpState) -> String { + state.borrow::().user_agent.clone() +} + +#[op2] +#[string] +pub fn op_bootstrap_language(state: &mut OpState) -> String { + state.borrow::().locale.clone() +} + +#[op2(fast)] +#[smi] +pub fn op_bootstrap_log_level(state: &mut OpState) -> i32 { + state.borrow::().log_level as i32 +} + +#[op2(fast)] +pub fn op_bootstrap_no_color(state: &mut OpState) -> bool { + let options = state.borrow::(); + options.no_color || !options.is_tty +} -- cgit v1.2.3