mirror of
https://github.com/denoland/deno.git
synced 2024-11-21 15:04:11 -05:00
chore: add dhat feature (#26285)
This commit is contained in:
parent
19cb0d949a
commit
f94cdd1723
3 changed files with 48 additions and 1 deletions
29
Cargo.lock
generated
29
Cargo.lock
generated
|
@ -1188,6 +1188,7 @@ dependencies = [
|
||||||
"deno_task_shell",
|
"deno_task_shell",
|
||||||
"deno_terminal 0.2.0",
|
"deno_terminal 0.2.0",
|
||||||
"deno_tower_lsp",
|
"deno_tower_lsp",
|
||||||
|
"dhat",
|
||||||
"dissimilar",
|
"dissimilar",
|
||||||
"dotenvy",
|
"dotenvy",
|
||||||
"dprint-plugin-json",
|
"dprint-plugin-json",
|
||||||
|
@ -2425,6 +2426,22 @@ version = "1.4.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b6e854126756c496b8c81dec88f9a706b15b875c5849d4097a3854476b9fdf94"
|
checksum = "b6e854126756c496b8c81dec88f9a706b15b875c5849d4097a3854476b9fdf94"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "dhat"
|
||||||
|
version = "0.3.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "98cd11d84628e233de0ce467de10b8633f4ddaecafadefc86e13b84b8739b827"
|
||||||
|
dependencies = [
|
||||||
|
"backtrace",
|
||||||
|
"lazy_static",
|
||||||
|
"mintex",
|
||||||
|
"parking_lot",
|
||||||
|
"rustc-hash 1.1.0",
|
||||||
|
"serde",
|
||||||
|
"serde_json",
|
||||||
|
"thousands",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "diff"
|
name = "diff"
|
||||||
version = "0.1.13"
|
version = "0.1.13"
|
||||||
|
@ -4435,6 +4452,12 @@ dependencies = [
|
||||||
"simd-adler32",
|
"simd-adler32",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "mintex"
|
||||||
|
version = "0.1.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9bec4598fddb13cc7b528819e697852653252b760f1228b7642679bf2ff2cd07"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "mio"
|
name = "mio"
|
||||||
version = "0.8.11"
|
version = "0.8.11"
|
||||||
|
@ -7181,6 +7204,12 @@ dependencies = [
|
||||||
"syn 2.0.72",
|
"syn 2.0.72",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "thousands"
|
||||||
|
version = "0.2.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3bf63baf9f5039dadc247375c29eb13706706cfde997d0330d05aa63a77d8820"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "thread_local"
|
name = "thread_local"
|
||||||
version = "1.1.8"
|
version = "1.1.8"
|
||||||
|
|
|
@ -38,6 +38,11 @@ path = "./bench/lsp_bench_standalone.rs"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = ["upgrade", "__vendored_zlib_ng"]
|
default = ["upgrade", "__vendored_zlib_ng"]
|
||||||
|
# A feature that enables heap profiling with dhat on Linux.
|
||||||
|
# 1. Compile with `cargo build --profile=release-with-debug --features=dhat-heap`
|
||||||
|
# 2. Run the executable. It will output a dhat-heap.json file.
|
||||||
|
# 3. Open the json file in https://nnethercote.github.io/dh_view/dh_view.html
|
||||||
|
dhat-heap = ["dhat"]
|
||||||
# A feature that enables the upgrade subcommand and the background check for
|
# A feature that enables the upgrade subcommand and the background check for
|
||||||
# available updates (of deno binary). This is typically disabled for (Linux)
|
# available updates (of deno binary). This is typically disabled for (Linux)
|
||||||
# distribution packages.
|
# distribution packages.
|
||||||
|
@ -98,6 +103,7 @@ color-print.workspace = true
|
||||||
console_static_text.workspace = true
|
console_static_text.workspace = true
|
||||||
dashmap.workspace = true
|
dashmap.workspace = true
|
||||||
data-encoding.workspace = true
|
data-encoding.workspace = true
|
||||||
|
dhat = { version = "0.3.3", optional = true }
|
||||||
dissimilar = "=1.0.4"
|
dissimilar = "=1.0.4"
|
||||||
dotenvy = "0.15.7"
|
dotenvy = "0.15.7"
|
||||||
dprint-plugin-json = "=0.19.3"
|
dprint-plugin-json = "=0.19.3"
|
||||||
|
|
14
cli/main.rs
14
cli/main.rs
|
@ -61,6 +61,10 @@ use std::ops::Deref;
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
|
#[cfg(feature = "dhat-heap")]
|
||||||
|
#[global_allocator]
|
||||||
|
static ALLOC: dhat::Alloc = dhat::Alloc;
|
||||||
|
|
||||||
/// Ensures that all subcommands return an i32 exit code and an [`AnyError`] error type.
|
/// Ensures that all subcommands return an i32 exit code and an [`AnyError`] error type.
|
||||||
trait SubcommandOutput {
|
trait SubcommandOutput {
|
||||||
fn output(self) -> Result<i32, AnyError>;
|
fn output(self) -> Result<i32, AnyError>;
|
||||||
|
@ -387,6 +391,9 @@ pub(crate) fn unstable_exit_cb(feature: &str, api_name: &str) {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn main() {
|
pub fn main() {
|
||||||
|
#[cfg(feature = "dhat-heap")]
|
||||||
|
let profiler = dhat::Profiler::new_heap();
|
||||||
|
|
||||||
setup_panic_hook();
|
setup_panic_hook();
|
||||||
|
|
||||||
util::unix::raise_fd_limit();
|
util::unix::raise_fd_limit();
|
||||||
|
@ -407,7 +414,12 @@ pub fn main() {
|
||||||
run_subcommand(Arc::new(flags)).await
|
run_subcommand(Arc::new(flags)).await
|
||||||
};
|
};
|
||||||
|
|
||||||
match create_and_run_current_thread_with_maybe_metrics(future) {
|
let result = create_and_run_current_thread_with_maybe_metrics(future);
|
||||||
|
|
||||||
|
#[cfg(feature = "dhat-heap")]
|
||||||
|
drop(profiler);
|
||||||
|
|
||||||
|
match result {
|
||||||
Ok(exit_code) => std::process::exit(exit_code),
|
Ok(exit_code) => std::process::exit(exit_code),
|
||||||
Err(err) => exit_for_error(err),
|
Err(err) => exit_for_error(err),
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue