From 16a2c2925eb46e24208b20bca567f1e7546f4e2f Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Sat, 8 Apr 2023 18:57:54 +0200 Subject: [PATCH 01/39] chore: automatically cancel superseded Actions runs (#5) --- .github/workflows/check.yml | 4 ++++ .github/workflows/nostd.yml | 4 ++++ .github/workflows/safety.yml | 4 ++++ .github/workflows/scheduled.yml | 4 ++++ .github/workflows/test.yml | 4 ++++ 5 files changed, 20 insertions(+) diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index a687dfa3..3fb97ada 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -4,6 +4,10 @@ on: push: branches: [main] pull_request: +# Spend CI time only on latest ref: https://github.com/jonhoo/rust-ci-conf/pull/5 +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true name: check jobs: fmt: diff --git a/.github/workflows/nostd.yml b/.github/workflows/nostd.yml index 7efae0f3..32d56c3d 100644 --- a/.github/workflows/nostd.yml +++ b/.github/workflows/nostd.yml @@ -4,6 +4,10 @@ on: push: branches: [main] pull_request: +# Spend CI time only on latest ref: https://github.com/jonhoo/rust-ci-conf/pull/5 +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true name: no-std jobs: nostd: diff --git a/.github/workflows/safety.yml b/.github/workflows/safety.yml index edf40e56..9c7aeee7 100644 --- a/.github/workflows/safety.yml +++ b/.github/workflows/safety.yml @@ -4,6 +4,10 @@ on: push: branches: [main] pull_request: +# Spend CI time only on latest ref: https://github.com/jonhoo/rust-ci-conf/pull/5 +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true name: safety jobs: sanitizers: diff --git a/.github/workflows/scheduled.yml b/.github/workflows/scheduled.yml index 0215432a..d4e19dda 100644 --- a/.github/workflows/scheduled.yml +++ b/.github/workflows/scheduled.yml @@ -6,6 +6,10 @@ on: pull_request: schedule: - cron: '7 7 * * *' +# Spend CI time only on latest ref: https://github.com/jonhoo/rust-ci-conf/pull/5 +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true name: rolling jobs: # https://twitter.com/mycoliza/status/1571295690063753218 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c675b388..4d0417cb 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -4,6 +4,10 @@ on: push: branches: [main] pull_request: +# Spend CI time only on latest ref: https://github.com/jonhoo/rust-ci-conf/pull/5 +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true name: test jobs: required: From 6332a3af21a58f811a681a98cd44d0f5da8a1891 Mon Sep 17 00:00:00 2001 From: Jon Gjengset Date: Mon, 24 Apr 2023 12:40:14 -0700 Subject: [PATCH 02/39] [sanity] More robust injection of opt-level 1 (#9) Fixes #8 --- .github/workflows/safety.yml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/safety.yml b/.github/workflows/safety.yml index 9c7aeee7..eb5a5d64 100644 --- a/.github/workflows/safety.yml +++ b/.github/workflows/safety.yml @@ -23,8 +23,15 @@ jobs: sudo apt install llvm # to fix buggy leak analyzer: # https://github.com/japaric/rust-san#unrealiable-leaksanitizer - sed -i '/\[features\]/i [profile.dev]' Cargo.toml - sed -i '/profile.dev/a opt-level = 1' Cargo.toml + # ensure there's a profile.dev section + if ! grep -qE '^[ \t]*[profile.dev]' Cargo.toml; then + echo >> Cargo.toml + echo '[profile.dev]' >> Cargo.toml + fi + # remove pre-existing opt-levels in profile.dev + sed -i '/^\s*\[profile.dev\]/,/^\s*\[/ {/^\s*opt-level/d}' Cargo.toml + # now set opt-level to 1 + sed -i '/^\s*\[profile.dev\]/a opt-level = 1' Cargo.toml cat Cargo.toml name: Enable debug symbols - name: cargo test -Zsanitizer=address From a497e3eab4d1586b2802b1807ba00cbac802dbc7 Mon Sep 17 00:00:00 2001 From: jacksonriley <52106215+jacksonriley@users.noreply.github.com> Date: Sun, 6 Aug 2023 11:13:31 +0100 Subject: [PATCH 03/39] Make it more obvious to a new contributor that the `flamegraph` git submodule needs to be initialised before running tests (#290) Check that the flamegraph submodule has been initialised before trying to use its contents. Complain loudly if not. --- src/collapse/common.rs | 9 +++++++++ src/collapse/dtrace.rs | 2 ++ src/collapse/perf.rs | 2 ++ 3 files changed, 13 insertions(+) diff --git a/src/collapse/common.rs b/src/collapse/common.rs index 00c20d15..69c5e37d 100644 --- a/src/collapse/common.rs +++ b/src/collapse/common.rs @@ -784,6 +784,15 @@ pub(crate) mod testing { Ok(()) } + + pub(crate) fn check_flamegraph_git_submodule_initialised() { + if !Path::new("./flamegraph/.git").exists() { + panic!( + "Some tests require the flamegraph git submodule to be initialised, but it is not. +Initialise it with `git submodule update --init flamegraph`." + ); + } + } } #[cfg(test)] diff --git a/src/collapse/dtrace.rs b/src/collapse/dtrace.rs index b8b6b745..4efc871d 100644 --- a/src/collapse/dtrace.rs +++ b/src/collapse/dtrace.rs @@ -415,6 +415,7 @@ mod tests { use crate::collapse::Collapse; static INPUT: Lazy> = Lazy::new(|| { + common::testing::check_flamegraph_git_submodule_initialised(); [ "./flamegraph/example-dtrace-stacks.txt", "./tests/data/collapse-dtrace/flamegraph-bug.txt", @@ -482,6 +483,7 @@ mod tests { #[test] fn test_collapse_multi_dtrace_simple() -> io::Result<()> { + common::testing::check_flamegraph_git_submodule_initialised(); let path = "./flamegraph/example-dtrace-stacks.txt"; let mut file = fs::File::open(path)?; let mut bytes = Vec::new(); diff --git a/src/collapse/perf.rs b/src/collapse/perf.rs index cefa4c46..45b536d7 100644 --- a/src/collapse/perf.rs +++ b/src/collapse/perf.rs @@ -744,6 +744,7 @@ mod tests { } static INPUT: Lazy> = Lazy::new(|| { + common::testing::check_flamegraph_git_submodule_initialised(); [ "./flamegraph/example-perf-stacks.txt.gz", "./flamegraph/test/perf-cycles-instructions-01.txt", @@ -778,6 +779,7 @@ mod tests { #[test] fn test_collapse_multi_perf_simple() -> io::Result<()> { + common::testing::check_flamegraph_git_submodule_initialised(); let path = "./flamegraph/test/perf-cycles-instructions-01.txt"; let mut file = fs::File::open(path)?; let mut bytes = Vec::new(); From 99f108f93c4f09906a4ddd4506fa4a2cbc68169d Mon Sep 17 00:00:00 2001 From: James Chacon Date: Sun, 13 Aug 2023 03:13:38 -0700 Subject: [PATCH 04/39] Quote MSRV version to avoid float parsing (#11) Put 1.70 in there (for instance if you want to pin against OnceLock stabilizing) and it will actually test 1.7 as it appears github auto converts this to a float? Putting in quotes seems to do the right thing here --- .github/workflows/check.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 3fb97ada..6b136dc1 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -79,7 +79,7 @@ jobs: # https://docs.github.com/en/actions/learn-github-actions/contexts#context-availability strategy: matrix: - msrv: [1.56.1] # 2021 edition requires 1.56 + msrv: ["1.56.1"] # 2021 edition requires 1.56 name: ubuntu / ${{ matrix.msrv }} steps: - uses: actions/checkout@v3 From f6416e9a336db7e26fecbe7e23f793e18d59493c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 13 Aug 2023 12:20:06 +0200 Subject: [PATCH 05/39] Bump indexmap from 1.9.2 to 2.0.0 (#296) Bumps [indexmap](https://github.com/bluss/indexmap) from 1.9.2 to 2.0.0. - [Changelog](https://github.com/bluss/indexmap/blob/master/RELEASES.md) - [Commits](https://github.com/bluss/indexmap/compare/1.9.2...2.0.0) --- updated-dependencies: - dependency-name: indexmap dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 34 ++++++++++++++++++++++++++++------ Cargo.toml | 2 +- 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c9251c99..d3765b54 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -146,7 +146,7 @@ checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5" dependencies = [ "bitflags", "clap_lex 0.2.4", - "indexmap", + "indexmap 1.9.3", "textwrap", ] @@ -301,7 +301,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "907076dfda823b0b36d2a1bb5f90c96660a5bbcd7729e10727f07858f22c4edc" dependencies = [ "cfg-if", - "hashbrown", + "hashbrown 0.12.3", "lock_api", "once_cell", "parking_lot_core", @@ -340,6 +340,12 @@ dependencies = [ "log", ] +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + [[package]] name = "errno" version = "0.2.8" @@ -384,6 +390,12 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +[[package]] +name = "hashbrown" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" + [[package]] name = "heck" version = "0.4.1" @@ -416,12 +428,22 @@ checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" [[package]] name = "indexmap" -version = "1.9.2" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", - "hashbrown", + "hashbrown 0.12.3", +] + +[[package]] +name = "indexmap" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +dependencies = [ + "equivalent", + "hashbrown 0.14.0", ] [[package]] @@ -436,7 +458,7 @@ dependencies = [ "crossbeam-utils", "dashmap", "env_logger", - "indexmap", + "indexmap 2.0.0", "is-terminal", "itoa", "libflate", diff --git a/Cargo.toml b/Cargo.toml index bdb8c6bc..1886c85d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -28,7 +28,7 @@ crossbeam-utils = { version = "0.8", optional = true } crossbeam-channel = { version = "0.5", optional = true } dashmap = { version = "5", optional = true } env_logger = { version = "0.10", default-features = false, optional = true } -indexmap = { version = "1.0", optional = true } +indexmap = { version = "2.0", optional = true } itoa = "1" log = "0.4" num-format = { version = "0.4.3", default-features = false } From 4d56ebdb896aa3c9292d74ba6bc60100e33ad124 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 13 Aug 2023 12:30:10 +0200 Subject: [PATCH 06/39] Bump libflate from 1.2.0 to 2.0.0 (#297) Bumps [libflate](https://github.com/sile/libflate) from 1.2.0 to 2.0.0. - [Release notes](https://github.com/sile/libflate/releases) - [Commits](https://github.com/sile/libflate/compare/1.2.0...2.0.0) --- updated-dependencies: - dependency-name: libflate dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 36 ++++++++++++++++++++++++++++++++---- Cargo.toml | 2 +- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d3765b54..8adcfbd5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -196,6 +196,15 @@ dependencies = [ "os_str_bytes", ] +[[package]] +name = "core2" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505" +dependencies = [ + "memchr", +] + [[package]] name = "crc32fast" version = "1.3.2" @@ -294,6 +303,12 @@ dependencies = [ "syn", ] +[[package]] +name = "dary_heap" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7762d17f1241643615821a8455a0b2c3e803784b058693d990b11f2dce25a0ca" + [[package]] name = "dashmap" version = "5.4.0" @@ -390,6 +405,15 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +dependencies = [ + "ahash", +] + [[package]] name = "hashbrown" version = "0.14.0" @@ -536,21 +560,25 @@ checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79" [[package]] name = "libflate" -version = "1.2.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05605ab2bce11bcfc0e9c635ff29ef8b2ea83f29be257ee7d730cac3ee373093" +checksum = "9f7d5654ae1795afc7ff76f4365c2c8791b0feb18e8996a96adad8ffd7c3b2bf" dependencies = [ "adler32", + "core2", "crc32fast", + "dary_heap", "libflate_lz77", ] [[package]] name = "libflate_lz77" -version = "1.1.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39a734c0493409afcd49deee13c006a04e3586b9761a03543c6272c9c51f2f5a" +checksum = "be5f52fb8c451576ec6b79d3f4deb327398bc05bbdbd99021a6e77a4c855d524" dependencies = [ + "core2", + "hashbrown 0.13.2", "rle-decode-fast", ] diff --git a/Cargo.toml b/Cargo.toml index 1886c85d..86c75bbb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -41,7 +41,7 @@ once_cell = "1.12.0" [dev-dependencies] assert_cmd = "2" criterion = "0.4" -libflate = "1" +libflate = "2" maplit = "1.0.1" pretty_assertions = "1" rand = { version = "0.8", features = ["small_rng"] } From c704bcc656871d37f93f79234c4d530522ac8733 Mon Sep 17 00:00:00 2001 From: Rod Elias Date: Sun, 20 Aug 2023 09:40:15 -0300 Subject: [PATCH 07/39] Install Openssl for Windows (#12) --- .github/workflows/test.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 4d0417cb..9389fd3d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -58,6 +58,10 @@ jobs: matrix: os: [macos-latest, windows-latest] steps: + - run: echo "VCPKG_ROOT=$env:VCPKG_INSTALLATION_ROOT" | Out-File -FilePath $env:GITHUB_ENV -Append + if: runner.os == 'Windows' + - run: vcpkg install openssl:x64-windows-static-md + if: runner.os == 'Windows' - uses: actions/checkout@v3 with: submodules: true From aa2a17b22d9e197406785bfbbaa722715a26e2fe Mon Sep 17 00:00:00 2001 From: jacksonriley <52106215+jacksonriley@users.noreply.github.com> Date: Sun, 20 Aug 2023 13:46:07 +0100 Subject: [PATCH 08/39] Port stackcollapse-recursive.pl (#291) --- Cargo.toml | 5 + src/bin/collapse-recursive.rs | 40 ++++ src/collapse/mod.rs | 18 ++ src/collapse/recursive.rs | 201 ++++++++++++++++++ tests/collapse-recursive.rs | 57 +++++ tests/data/collapse-recursive/basic.txt | 3 + .../results/basic-collapsed.txt | 2 + 7 files changed, 326 insertions(+) create mode 100644 src/bin/collapse-recursive.rs create mode 100644 src/collapse/recursive.rs create mode 100644 tests/collapse-recursive.rs create mode 100644 tests/data/collapse-recursive/basic.txt create mode 100644 tests/data/collapse-recursive/results/basic-collapsed.txt diff --git a/Cargo.toml b/Cargo.toml index 86c75bbb..3bd3a1cf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -102,6 +102,11 @@ name = "inferno-collapse-guess" path = "src/bin/collapse-guess.rs" required-features = ["cli"] +[[bin]] +name = "inferno-collapse-recursive" +path = "src/bin/collapse-recursive.rs" +required-features = ["cli"] + [[bin]] name = "inferno-flamegraph" path = "src/bin/flamegraph.rs" diff --git a/src/bin/collapse-recursive.rs b/src/bin/collapse-recursive.rs new file mode 100644 index 00000000..7aa6c3ac --- /dev/null +++ b/src/bin/collapse-recursive.rs @@ -0,0 +1,40 @@ +use std::io; +use std::path::PathBuf; + +use clap::Parser; +use inferno::collapse::recursive::{Folder, Options}; +use inferno::collapse::{Collapse, DEFAULT_NTHREADS}; +use once_cell::sync::Lazy; + +static NTHREADS: Lazy = Lazy::new(|| DEFAULT_NTHREADS.to_string()); + +#[derive(Debug, Parser)] +#[clap(name = "inferno-collapse-recursive", about)] +struct Opt { + /// Number of threads to use + #[clap( + short = 'n', + long = "nthreads", + default_value = &**NTHREADS, + value_name = "UINT" + )] + nthreads: usize, + + #[clap(value_name = "PATH")] + /// Collapse output file, or STDIN if not specified + infile: Option, +} + +impl Opt { + fn into_parts(self) -> (Option, Options) { + let mut options = Options::default(); + options.nthreads = self.nthreads; + (self.infile, options) + } +} + +fn main() -> io::Result<()> { + let opt = Opt::parse(); + let (infile, options) = opt.into_parts(); + Folder::from(options).collapse_file_to_stdout(infile.as_ref()) +} diff --git a/src/collapse/mod.rs b/src/collapse/mod.rs index 13a14558..c1d85492 100644 --- a/src/collapse/mod.rs +++ b/src/collapse/mod.rs @@ -35,6 +35,24 @@ pub mod sample; /// [crate-level documentation]: ../../index.html pub mod vtune; +/// Collapse direct recursive backtraces. +/// +/// Post-process a stack list and merge direct recursive calls. +/// +/// For example, collapses +/// ```text +/// main;recursive;recursive;recursive;helper 1 +/// ``` +/// into +/// ```text +/// main;recursive;helper 1 +/// ``` +/// +/// See the [crate-level documentation] for details. +/// +/// [crate-level documentation]: ../../index.html +pub mod recursive; + /// Stack collapsing for the output of the [Visual Studio built-in profiler](https://docs.microsoft.com/en-us/visualstudio/profiling/profiling-feature-tour?view=vs-2019). /// /// See the [crate-level documentation] for details. diff --git a/src/collapse/recursive.rs b/src/collapse/recursive.rs new file mode 100644 index 00000000..1ff32047 --- /dev/null +++ b/src/collapse/recursive.rs @@ -0,0 +1,201 @@ +use super::common::{self, CollapsePrivate}; +use std::{borrow::Cow, io}; + +/// Recursive backtrace folder configuration options. +#[derive(Clone, Debug)] +#[non_exhaustive] +pub struct Options { + /// The number of threads to use. + /// + /// Default is the number of logical cores on your machine. + pub nthreads: usize, +} + +impl Default for Options { + fn default() -> Self { + Self { + nthreads: *common::DEFAULT_NTHREADS, + } + } +} + +/// A "middleware" folder that receives and outputs the folded stack format +/// expected by [`crate::flamegraph::from_lines`], collapsing direct recursive +/// backtraces. +#[derive(Clone)] +pub struct Folder { + /// The number of stacks per job to send to the threadpool. + nstacks_per_job: usize, + + // Options... + opt: Options, +} + +impl From for Folder { + fn from(mut opt: Options) -> Self { + if opt.nthreads == 0 { + opt.nthreads = 1; + } + Self { + nstacks_per_job: common::DEFAULT_NSTACKS_PER_JOB, + opt, + } + } +} + +impl Default for Folder { + fn default() -> Self { + Options::default().into() + } +} + +impl CollapsePrivate for Folder { + fn pre_process( + &mut self, + _reader: &mut R, + _occurrences: &mut super::common::Occurrences, + ) -> std::io::Result<()> + where + R: std::io::BufRead, + { + // Don't expect any header. + Ok(()) + } + + fn collapse_single_threaded( + &mut self, + reader: R, + occurrences: &mut super::common::Occurrences, + ) -> std::io::Result<()> + where + R: std::io::BufRead, + { + for line in reader.lines() { + let line = line?; + let (stack, count) = Self::line_parts(&line) + .ok_or_else(|| io::Error::from(io::ErrorKind::InvalidData))?; + + occurrences.insert_or_add(Self::collapse_stack(stack.into()).into_owned(), count); + } + Ok(()) + } + + fn would_end_stack(&mut self, _line: &[u8]) -> bool { + // For our purposes, every line is an independent stack + true + } + + fn clone_and_reset_stack_context(&self) -> Self { + self.clone() + } + + fn is_applicable(&mut self, _input: &str) -> Option { + // It seems doubtful that the user would ever want to guess to collapse + // recursive traces, so let's just never consider ourselves applicable. + Some(false) + } + + fn nstacks_per_job(&self) -> usize { + self.nstacks_per_job + } + + fn set_nstacks_per_job(&mut self, n: usize) { + self.nstacks_per_job = n; + } + + fn nthreads(&self) -> usize { + self.opt.nthreads + } + + fn set_nthreads(&mut self, n: usize) { + self.opt.nthreads = n; + } +} + +impl Folder { + fn line_parts(line: &str) -> Option<(&str, usize)> { + line.rsplit_once(' ') + .and_then(|(stack, count)| Some((stack, count.parse().ok()?))) + } + + fn collapse_stack(stack: Cow) -> Cow { + // First, determine whether we can avoid allocation by just returning + // the original stack (in the case that there is no recursion, which is + // likely the mainline case). + if !Self::is_recursive(&stack) { + return stack; + } + + // There is recursion, so we can't get away without allocating a new + // String. + let mut result = String::with_capacity(stack.len()); + let mut last = None; + for frame in stack.split(';') { + if last.map_or(true, |l| l != frame) { + result.push_str(frame); + result.push(';') + } + last = Some(frame); + } + + // Remove the trailing semicolon + result.pop(); + + result.into() + } + + /// Determine whether or not a stack contains direct recursion. + fn is_recursive(stack: &str) -> bool { + let mut last = None; + for current in stack.split(';') { + match last { + None => { + last = Some(current); + } + Some(l) => { + if l == current { + // Recursion! + return true; + } else { + last = Some(current); + } + } + } + } + false + } +} + +#[cfg(test)] +mod test { + + use super::*; + + #[test] + fn test_collapse_stack() { + assert_eq!(Folder::collapse_stack("".into()), ""); + assert_eq!(Folder::collapse_stack("single".into()), "single"); + assert_eq!( + Folder::collapse_stack("not;recursive".into()), + "not;recursive" + ); + assert_eq!( + Folder::collapse_stack("has;some;some;recursion;recursion".into()), + "has;some;recursion" + ); + assert_eq!( + Folder::collapse_stack("co;recursive;co;recursive".into()), + "co;recursive;co;recursive" + ); + } + + #[test] + fn test_line_parts() { + assert_eq!( + Folder::line_parts("foo;bar;baz 42"), + Some(("foo;bar;baz", 42)) + ); + assert_eq!(Folder::line_parts(""), None); + assert_eq!(Folder::line_parts("no;number"), None); + } +} diff --git a/tests/collapse-recursive.rs b/tests/collapse-recursive.rs new file mode 100644 index 00000000..baf3bd5c --- /dev/null +++ b/tests/collapse-recursive.rs @@ -0,0 +1,57 @@ +mod common; + +use std::fs::File; +use std::io::{self, BufReader, Cursor}; +use std::process::{Command, Stdio}; + +use assert_cmd::cargo::CommandCargoExt; +use inferno::collapse::recursive::{Folder, Options}; + +fn test_collapse_recursive( + test_file: &str, + expected_file: &str, + options: Options, +) -> io::Result<()> { + for &n in &[1, 2] { + let mut options = options.clone(); + options.nthreads = n; + common::test_collapse(Folder::from(options), test_file, expected_file, false)?; + } + Ok(()) +} + +#[test] +fn collapse_recursive_basic() { + let test_file = "./tests/data/collapse-recursive/basic.txt"; + let result_file = "./tests/data/collapse-recursive/results/basic-collapsed.txt"; + test_collapse_recursive(test_file, result_file, Options::default()).unwrap() +} + +#[test] +fn collapse_recursive_cli() { + let input_file = "./tests/data/collapse-recursive/basic.txt"; + let expected_file = "./tests/data/collapse-recursive/results/basic-collapsed.txt"; + + // Test with file passed in + let output = Command::cargo_bin("inferno-collapse-recursive") + .unwrap() + .arg(input_file) + .output() + .expect("failed to execute process"); + let expected = BufReader::new(File::open(expected_file).unwrap()); + common::compare_results(Cursor::new(output.stdout), expected, expected_file, false); + + // Test with STDIN + let mut child = Command::cargo_bin("inferno-collapse-recursive") + .unwrap() + .stdin(Stdio::piped()) + .stdout(Stdio::piped()) + .spawn() + .expect("Failed to spawn child process"); + let mut input = BufReader::new(File::open(input_file).unwrap()); + let stdin = child.stdin.as_mut().expect("Failed to open stdin"); + io::copy(&mut input, stdin).unwrap(); + let output = child.wait_with_output().expect("Failed to read stdout"); + let expected = BufReader::new(File::open(expected_file).unwrap()); + common::compare_results(Cursor::new(output.stdout), expected, expected_file, false); +} diff --git a/tests/data/collapse-recursive/basic.txt b/tests/data/collapse-recursive/basic.txt new file mode 100644 index 00000000..e07e1753 --- /dev/null +++ b/tests/data/collapse-recursive/basic.txt @@ -0,0 +1,3 @@ +main;recursive;recursive;recursive;helper 1 +main;recursive;recursive;helper 2 +main;not;recursive 4 \ No newline at end of file diff --git a/tests/data/collapse-recursive/results/basic-collapsed.txt b/tests/data/collapse-recursive/results/basic-collapsed.txt new file mode 100644 index 00000000..e8a0e899 --- /dev/null +++ b/tests/data/collapse-recursive/results/basic-collapsed.txt @@ -0,0 +1,2 @@ +main;not;recursive 4 +main;recursive;helper 3 \ No newline at end of file From 5d88bc3059c16ea6bea01c4f6101690e59a10093 Mon Sep 17 00:00:00 2001 From: Jon Gjengset Date: Sun, 20 Aug 2023 14:49:44 +0200 Subject: [PATCH 09/39] Release 0.11.16 --- CHANGELOG.md | 9 + Cargo.lock | 519 ++++++++++++++++++++++++++------------------------- Cargo.toml | 2 +- 3 files changed, 276 insertions(+), 254 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 25b9bcbc..6b3090cb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Removed +## [0.11.16] - 2023-08-20 +### Added + +- Added stackcollapse-recursive. [#291](https://github.com/jonhoo/inferno/pull/291) + +### Changed + +- Upgraded indexmap and libflate to 2.0. + ## [0.11.15] - 2023-02-11 ### Changed diff --git a/Cargo.lock b/Cargo.lock index 8adcfbd5..678d0e60 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -20,24 +20,83 @@ dependencies = [ "version_check", ] +[[package]] +name = "aho-corasick" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6748e8def348ed4d14996fa801f4122cd763fff530258cdc03f64b25f89d3a5a" +dependencies = [ + "memchr", +] + [[package]] name = "anes" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" +[[package]] +name = "anstream" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is-terminal", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd" + +[[package]] +name = "anstyle-parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +dependencies = [ + "windows-sys", +] + +[[package]] +name = "anstyle-wincon" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c677ab05e09154296dd37acecd46420c17b9713e8366facafa8fc0885167cf4c" +dependencies = [ + "anstyle", + "windows-sys", +] + [[package]] name = "arrayvec" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "assert_cmd" -version = "2.0.8" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9834fcc22e0874394a010230586367d4a3e9f11b560f469262678547e1d2575e" +checksum = "88903cb14723e4d4003335bb7f8a14f27691649105346a0f0957466c096adfe6" dependencies = [ + "anstyle", "bstr", "doc-comment", "predicates", @@ -69,29 +128,34 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +[[package]] +name = "bitflags" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" + [[package]] name = "bstr" -version = "1.2.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7f0778972c64420fdedc63f09919c8a88bda7b25135357fd25a5d9f3257e832" +checksum = "6798148dccfbff0fae41c7574d2fa8f1ef3492fba0face179de5d8d447d67b05" dependencies = [ "memchr", - "once_cell", "regex-automata", "serde", ] [[package]] name = "bumpalo" -version = "3.12.0" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" +checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" [[package]] name = "bytemuck" -version = "1.13.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c041d3eab048880cb0b86b256447da3f18859a163c3b8d8893f4e6368abe6393" +checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea" [[package]] name = "cast" @@ -101,9 +165,12 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.0.79" +version = "1.0.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" +checksum = "305fe645edc1442a0fa8b6726ba61d422798d37a52e12eaecf4b022ebbb88f01" +dependencies = [ + "libc", +] [[package]] name = "cfg-if" @@ -113,9 +180,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "ciborium" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f" +checksum = "effd91f6c78e5a4ace8a5d3c0b6bfaec9e2baaef55f3efc00e45fb2e477ee926" dependencies = [ "ciborium-io", "ciborium-ll", @@ -124,15 +191,15 @@ dependencies = [ [[package]] name = "ciborium-io" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369" +checksum = "cdf919175532b369853f5d5e20b26b43112613fd6fe7aee757e35f7a44642656" [[package]] name = "ciborium-ll" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b" +checksum = "defaa24ecc093c77630e6c15e17c51f5e187bf35ee514f4e2d67baaa96dae22b" dependencies = [ "ciborium-io", "half", @@ -140,11 +207,11 @@ dependencies = [ [[package]] name = "clap" -version = "3.2.23" +version = "3.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5" +checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" dependencies = [ - "bitflags", + "bitflags 1.3.2", "clap_lex 0.2.4", "indexmap 1.9.3", "textwrap", @@ -152,27 +219,34 @@ dependencies = [ [[package]] name = "clap" -version = "4.1.4" +version = "4.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f13b9c79b5d1dd500d20ef541215a6423c75829ef43117e1b4d17fd8af0b5d76" +checksum = "03aef18ddf7d879c15ce20f04826ef8418101c7e528014c3eeea13321047dca3" dependencies = [ - "bitflags", + "clap_builder", "clap_derive", - "clap_lex 0.3.1", - "is-terminal", "once_cell", +] + +[[package]] +name = "clap_builder" +version = "4.3.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ce6fffb678c9b80a70b6b6de0aad31df727623a70fd9a842c30cd573e2fa98" +dependencies = [ + "anstream", + "anstyle", + "clap_lex 0.5.0", "strsim", - "termcolor", ] [[package]] name = "clap_derive" -version = "4.1.0" +version = "4.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "684a277d672e91966334af371f1a7b5833f9aa00b07c84e92fbce95e00208ce8" +checksum = "54a9bb5758fc5dfe728d1019941681eccaf0cf8a4189b692a0ee2f2ecf90a050" dependencies = [ "heck", - "proc-macro-error", "proc-macro2", "quote", "syn", @@ -189,12 +263,15 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.3.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "783fe232adfca04f90f56201b26d79682d4cd2625e0bc7290b95123afe558ade" -dependencies = [ - "os_str_bytes", -] +checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b" + +[[package]] +name = "colorchoice" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" [[package]] name = "core2" @@ -224,7 +301,7 @@ dependencies = [ "atty", "cast", "ciborium", - "clap 3.2.23", + "clap 3.2.25", "criterion-plot", "itertools", "lazy_static", @@ -252,9 +329,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.6" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" +checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" dependencies = [ "cfg-if", "crossbeam-utils", @@ -262,9 +339,9 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc" +checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" dependencies = [ "cfg-if", "crossbeam-epoch", @@ -273,9 +350,9 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.13" +version = "0.9.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01a9af1f4c2ef74bb8aa1f7e19706bc72d03598c8a570bb5de72243c7a9d9d5a" +checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" dependencies = [ "autocfg", "cfg-if", @@ -286,23 +363,13 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.14" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f" +checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" dependencies = [ "cfg-if", ] -[[package]] -name = "ctor" -version = "0.1.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096" -dependencies = [ - "quote", - "syn", -] - [[package]] name = "dary_heap" version = "0.3.6" @@ -311,12 +378,12 @@ checksum = "7762d17f1241643615821a8455a0b2c3e803784b058693d990b11f2dce25a0ca" [[package]] name = "dashmap" -version = "5.4.0" +version = "5.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "907076dfda823b0b36d2a1bb5f90c96660a5bbcd7729e10727f07858f22c4edc" +checksum = "6943ae99c34386c84a470c499d3414f66502a41340aa895406e0d2e4a207b91d" dependencies = [ "cfg-if", - "hashbrown 0.12.3", + "hashbrown 0.14.0", "lock_api", "once_cell", "parking_lot_core", @@ -342,9 +409,9 @@ checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" [[package]] name = "either" -version = "1.8.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" [[package]] name = "env_logger" @@ -363,13 +430,13 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.2.8" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" +checksum = "6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4f" dependencies = [ "errno-dragonfly", "libc", - "winapi", + "windows-sys", ] [[package]] @@ -384,9 +451,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.8" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" dependencies = [ "cfg-if", "libc", @@ -437,18 +504,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.2.6" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" -dependencies = [ - "libc", -] - -[[package]] -name = "hermit-abi" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" +checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" [[package]] name = "indexmap" @@ -472,11 +530,11 @@ dependencies = [ [[package]] name = "inferno" -version = "0.11.15" +version = "0.11.16" dependencies = [ "ahash", "assert_cmd", - "clap 4.1.4", + "clap 4.3.23", "criterion", "crossbeam-channel", "crossbeam-utils", @@ -500,24 +558,13 @@ dependencies = [ "testing_logger", ] -[[package]] -name = "io-lifetimes" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1abeb7a0dd0f8181267ff8adc397075586500b81b28a73e8a0208b00fc170fb3" -dependencies = [ - "libc", - "windows-sys", -] - [[package]] name = "is-terminal" -version = "0.4.3" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e18b0a45d56fe973d6db23972bf5bc46f988a4a2385deac9cc29572f09daef" +checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" dependencies = [ - "hermit-abi 0.3.1", - "io-lifetimes", + "hermit-abi 0.3.2", "rustix", "windows-sys", ] @@ -533,15 +580,15 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.5" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" [[package]] name = "js-sys" -version = "0.3.61" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" +checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" dependencies = [ "wasm-bindgen", ] @@ -554,9 +601,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.139" +version = "0.2.147" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79" +checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" [[package]] name = "libflate" @@ -584,15 +631,15 @@ dependencies = [ [[package]] name = "linux-raw-sys" -version = "0.1.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4" +checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503" [[package]] name = "lock_api" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" +checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" dependencies = [ "autocfg", "scopeguard", @@ -600,12 +647,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.17" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" -dependencies = [ - "cfg-if", -] +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "maplit" @@ -621,9 +665,9 @@ checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" [[package]] name = "memoffset" -version = "0.7.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" dependencies = [ "autocfg", ] @@ -640,28 +684,28 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" dependencies = [ "autocfg", ] [[package]] name = "num_cpus" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.2.6", + "hermit-abi 0.3.2", "libc", ] [[package]] name = "once_cell" -version = "1.17.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "oorandom" @@ -671,37 +715,28 @@ checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" [[package]] name = "os_str_bytes" -version = "6.4.1" +version = "6.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee" - -[[package]] -name = "output_vt100" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "628223faebab4e3e40667ee0b2336d34a5b960ff60ea743ddfdbcf7770bcfb66" -dependencies = [ - "winapi", -] +checksum = "4d5d9eb14b174ee9aa2ef96dc2b94637a2d4b6e7cb873c7e171f0c20c6cf3eac" [[package]] name = "parking_lot_core" -version = "0.9.7" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" +checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec", - "windows-sys", + "windows-targets", ] [[package]] name = "plotters" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97" +checksum = "d2c224ba00d7cadd4d5c660deaf2098e5e80e07846537c51f9cfa4be50c1fd45" dependencies = [ "num-traits", "plotters-backend", @@ -712,15 +747,15 @@ dependencies = [ [[package]] name = "plotters-backend" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142" +checksum = "9e76628b4d3a7581389a35d5b6e2139607ad7c75b17aed325f210aa91f4a9609" [[package]] name = "plotters-svg" -version = "0.3.3" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f" +checksum = "38f6d39893cca0701371e3c27294f09797214b86f1fb951b89ade8ec04e2abab" dependencies = [ "plotters-backend", ] @@ -733,10 +768,11 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "predicates" -version = "2.1.5" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59230a63c37f3e18569bdb90e4a89cbf5bf8b06fea0b84e65ea10cc4df47addd" +checksum = "09963355b9f467184c04017ced4a2ba2d75cbcb4e7462690d388233253d4b1a9" dependencies = [ + "anstyle", "difflib", "itertools", "predicates-core", @@ -744,15 +780,15 @@ dependencies = [ [[package]] name = "predicates-core" -version = "1.0.5" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72f883590242d3c6fc5bf50299011695fa6590c2c70eac95ee1bdb9a733ad1a2" +checksum = "b794032607612e7abeb4db69adb4e33590fa6cf1149e95fd7cb00e634b92f174" [[package]] name = "predicates-tree" -version = "1.0.7" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54ff541861505aabf6ea722d2131ee980b8276e10a1297b94e896dd8b621850d" +checksum = "368ba315fb8c5052ab692e68a0eefec6ec57b23a36959c14496f0b0df2c0cecf" dependencies = [ "predicates-core", "termtree", @@ -760,45 +796,19 @@ dependencies = [ [[package]] name = "pretty_assertions" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a25e9bcb20aa780fd0bb16b72403a9064d6b3f22f026946029acb941a50af755" +checksum = "af7cee1a6c8a5b9208b3cb1061f10c0cb689087b3d8ce85fb9d2dd7a29b6ba66" dependencies = [ - "ctor", "diff", - "output_vt100", "yansi", ] -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", -] - [[package]] name = "proc-macro2" -version = "1.0.51" +version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d727cae5b39d21da60fa540906919ad737832fe0b1c165da3a34d6548c849d6" +checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" dependencies = [ "unicode-ident", ] @@ -814,9 +824,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.23" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", ] @@ -853,9 +863,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.6.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db3a213adf02b3bcfd2d3846bb41cb22857d131789e01df434fb7e7bc0759b7" +checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" dependencies = [ "either", "rayon-core", @@ -863,9 +873,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.10.2" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "356a0625f1954f730c0201cdab48611198dc6ce21f4acff55089b5a78e6e835b" +checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" dependencies = [ "crossbeam-channel", "crossbeam-deque", @@ -875,39 +885,47 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.2.16" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" dependencies = [ - "bitflags", + "bitflags 1.3.2", ] [[package]] name = "regex" -version = "1.7.1" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733" +checksum = "81bc1d4caf89fac26a70747fe603c130093b53c773888797a6329091246d651a" dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", "regex-syntax", ] [[package]] name = "regex-automata" -version = "0.1.10" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +checksum = "fed1ceff11a1dddaee50c9dc8e4938bd106e9d89ae372f192311e7da498e3b69" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] [[package]] name = "regex-syntax" -version = "0.6.28" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" +checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" [[package]] name = "rgb" -version = "0.8.35" +version = "0.8.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7495acf66551cdb696b7711408144bcd3194fc78e32f3a09e809bfe7dd4a7ce3" +checksum = "20ec2d3e3fc7a92ced357df9cebd5a10b6fb2aa1ee797bf7e9ce2f17dffc8f59" dependencies = [ "bytemuck", ] @@ -920,13 +938,12 @@ checksum = "3582f63211428f83597b51b2ddb88e2a91a9d52d12831f9d08f5e624e8977422" [[package]] name = "rustix" -version = "0.36.8" +version = "0.38.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f43abb88211988493c1abb44a70efa56ff0ce98f233b7b276146f1f3f7ba9644" +checksum = "19ed4fa021d81c8392ce04db050a3da9a60299050b7ae1cf482d862b54a7218f" dependencies = [ - "bitflags", + "bitflags 2.4.0", "errno", - "io-lifetimes", "libc", "linux-raw-sys", "windows-sys", @@ -934,9 +951,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.12" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" [[package]] name = "same-file" @@ -949,24 +966,24 @@ dependencies = [ [[package]] name = "scopeguard" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "serde" -version = "1.0.152" +version = "1.0.183" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb" +checksum = "32ac8da02677876d532745a130fc9d8e6edfa81a269b107c5b00829b91d8eb3c" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.152" +version = "1.0.183" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e" +checksum = "aafe972d60b0b9bee71a91b92fee2d4fb3c9d7e8f6b179aa99f27203d99a4816" dependencies = [ "proc-macro2", "quote", @@ -975,9 +992,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.93" +version = "1.0.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cad406b69c91885b5107daf2c29572f6c8cdb3c66826821e286c533490c0bc76" +checksum = "693151e1ac27563d6dbcec9dee9fbd5da8539b20fa14ad3752b2e6d363ace360" dependencies = [ "itoa", "ryu", @@ -986,9 +1003,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" +checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" [[package]] name = "str_stack" @@ -1004,29 +1021,20 @@ checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] name = "syn" -version = "1.0.107" +version = "2.0.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5" +checksum = "c324c494eba9d92503e6f1ef2e6df781e78f6a7705a0202d9801b198807d518a" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] -[[package]] -name = "termcolor" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" -dependencies = [ - "winapi-util", -] - [[package]] name = "termtree" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95059e91184749cb66be6dc994f67f182b6d897cb3df74a5bf66b5e709295fd8" +checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" [[package]] name = "testing_logger" @@ -1055,9 +1063,15 @@ dependencies = [ [[package]] name = "unicode-ident" -version = "1.0.6" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc" +checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" + +[[package]] +name = "utf8parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" [[package]] name = "version_check" @@ -1076,12 +1090,11 @@ dependencies = [ [[package]] name = "walkdir" -version = "2.3.2" +version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" +checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" dependencies = [ "same-file", - "winapi", "winapi-util", ] @@ -1093,9 +1106,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" +checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -1103,9 +1116,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" +checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" dependencies = [ "bumpalo", "log", @@ -1118,9 +1131,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" +checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1128,9 +1141,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" +checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", @@ -1141,15 +1154,15 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" +checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" [[package]] name = "web-sys" -version = "0.3.61" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97" +checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" dependencies = [ "js-sys", "wasm-bindgen", @@ -1188,18 +1201,18 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows-sys" -version = "0.45.0" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ "windows-targets", ] [[package]] name = "windows-targets" -version = "0.42.1" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e2522491fbfcd58cc84d47aeb2958948c4b8982e9a2d8a2a35bbaed431390e7" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ "windows_aarch64_gnullvm", "windows_aarch64_msvc", @@ -1212,45 +1225,45 @@ dependencies = [ [[package]] name = "windows_aarch64_gnullvm" -version = "0.42.1" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_msvc" -version = "0.42.1" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_i686_gnu" -version = "0.42.1" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_msvc" -version = "0.42.1" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_x86_64_gnu" -version = "0.42.1" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnullvm" -version = "0.42.1" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_msvc" -version = "0.42.1" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "yansi" diff --git a/Cargo.toml b/Cargo.toml index 3bd3a1cf..1e1031d1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "inferno" -version = "0.11.15" +version = "0.11.16" edition = "2021" authors = ["Jon Gjengset "] From 7c327ddf5b42f5309f564da8275c789c4a22fdbb Mon Sep 17 00:00:00 2001 From: Jon Gjengset Date: Sun, 20 Aug 2023 15:12:25 +0200 Subject: [PATCH 10/39] Don't install OpenSSL on Windows by default --- .github/workflows/test.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9389fd3d..3ef2713e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -58,10 +58,12 @@ jobs: matrix: os: [macos-latest, windows-latest] steps: - - run: echo "VCPKG_ROOT=$env:VCPKG_INSTALLATION_ROOT" | Out-File -FilePath $env:GITHUB_ENV -Append - if: runner.os == 'Windows' - - run: vcpkg install openssl:x64-windows-static-md - if: runner.os == 'Windows' + # if your project needs OpenSSL, uncommment this to fix Windows builds. + # it's commented out by default as tthe install command takes 5-10m. + # - run: echo "VCPKG_ROOT=$env:VCPKG_INSTALLATION_ROOT" | Out-File -FilePath $env:GITHUB_ENV -Append + # if: runner.os == 'Windows' + # - run: vcpkg install openssl:x64-windows-static-md + # if: runner.os == 'Windows' - uses: actions/checkout@v3 with: submodules: true From deb9fd3f46de5eebd2583292362a161b1d1c56c4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 9 Sep 2023 16:21:14 +0200 Subject: [PATCH 11/39] Bump actions/checkout from 3 to 4 (#13) Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/check.yml | 10 +++++----- .github/workflows/nostd.yml | 2 +- .github/workflows/safety.yml | 6 +++--- .github/workflows/scheduled.yml | 4 ++-- .github/workflows/test.yml | 8 ++++---- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 6b136dc1..3fdc139e 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest name: stable / fmt steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: submodules: true - name: Install stable @@ -34,7 +34,7 @@ jobs: matrix: toolchain: [stable, beta] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: submodules: true - name: Install ${{ matrix.toolchain }} @@ -50,7 +50,7 @@ jobs: runs-on: ubuntu-latest name: nightly / doc steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: submodules: true - name: Install nightly @@ -63,7 +63,7 @@ jobs: runs-on: ubuntu-latest name: ubuntu / stable / features steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: submodules: true - name: Install stable @@ -82,7 +82,7 @@ jobs: msrv: ["1.56.1"] # 2021 edition requires 1.56 name: ubuntu / ${{ matrix.msrv }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: submodules: true - name: Install ${{ matrix.msrv }} diff --git a/.github/workflows/nostd.yml b/.github/workflows/nostd.yml index 32d56c3d..00362a6c 100644 --- a/.github/workflows/nostd.yml +++ b/.github/workflows/nostd.yml @@ -17,7 +17,7 @@ jobs: matrix: target: [thumbv7m-none-eabi, aarch64-unknown-none] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: submodules: true - name: Install stable diff --git a/.github/workflows/safety.yml b/.github/workflows/safety.yml index eb5a5d64..ce1e38e8 100644 --- a/.github/workflows/safety.yml +++ b/.github/workflows/safety.yml @@ -13,7 +13,7 @@ jobs: sanitizers: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: submodules: true - name: Install nightly @@ -49,7 +49,7 @@ jobs: miri: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: submodules: true - run: | @@ -66,7 +66,7 @@ jobs: loom: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: submodules: true - name: Install stable diff --git a/.github/workflows/scheduled.yml b/.github/workflows/scheduled.yml index d4e19dda..4607f3e0 100644 --- a/.github/workflows/scheduled.yml +++ b/.github/workflows/scheduled.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest name: ubuntu / nightly steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: submodules: true - name: Install nightly @@ -36,7 +36,7 @@ jobs: # Unfortunately, hashFiles only works in if on steps, so we reepeat it. # if: hashFiles('Cargo.lock') != '' steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: submodules: true - name: Install beta diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 3ef2713e..56bd5606 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -17,7 +17,7 @@ jobs: matrix: toolchain: [stable, beta] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: submodules: true - name: Install ${{ matrix.toolchain }} @@ -37,7 +37,7 @@ jobs: runs-on: ubuntu-latest name: ubuntu / stable / minimal-versions steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: submodules: true - name: Install stable @@ -64,7 +64,7 @@ jobs: # if: runner.os == 'Windows' # - run: vcpkg install openssl:x64-windows-static-md # if: runner.os == 'Windows' - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: submodules: true - name: Install stable @@ -78,7 +78,7 @@ jobs: runs-on: ubuntu-latest name: ubuntu / stable / coverage steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: submodules: true - name: Install stable From fbf527436da733d6db0c184456d1465d05053a10 Mon Sep 17 00:00:00 2001 From: Lucas Kent Date: Sun, 10 Sep 2023 00:52:48 +1000 Subject: [PATCH 12/39] Fix `cargo clippy --all-targets` lints (#302) --- src/differential/mod.rs | 2 +- src/flamegraph/color/mod.rs | 9 ++------- src/flamegraph/color/palettes.rs | 4 ++-- src/flamegraph/mod.rs | 20 +++++--------------- src/flamegraph/svg.rs | 4 ++-- src/lib.rs | 1 + tests/common/collapse.rs | 2 +- tests/diff-folded.rs | 2 +- 8 files changed, 15 insertions(+), 29 deletions(-) diff --git a/src/differential/mod.rs b/src/differential/mod.rs index 47292810..192ee5b4 100644 --- a/src/differential/mod.rs +++ b/src/differential/mod.rs @@ -103,7 +103,7 @@ where if let Some((stack, count)) = parse_line(&l, opt.strip_hex, &mut stripped_fractional_samples) { - let mut counts = stack_counts.entry(stack).or_default(); + let counts = stack_counts.entry(stack).or_default(); if is_first { counts.first += count; } else { diff --git a/src/flamegraph/color/mod.rs b/src/flamegraph/color/mod.rs index 83f10a67..845761d7 100644 --- a/src/flamegraph/color/mod.rs +++ b/src/flamegraph/color/mod.rs @@ -42,9 +42,10 @@ const GRAY_GRADIENT: (&str, &str) = ("#f8f8f8", "#e8e8e8"); /// - All other [`MultiPalette`] variants default to [`BackgroundColor::Yellow`]. /// /// `BackgroundColor::default()` is `Yellow`. -#[derive(Clone, Copy, Debug, PartialEq, Eq)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Default)] pub enum BackgroundColor { /// A yellow gradient from `#EEEEEE` to `#EEEEB0`. + #[default] Yellow, /// A blue gradient from `#EEEEEE` to `#E0E0FF`. Blue, @@ -58,12 +59,6 @@ pub enum BackgroundColor { Flat(Color), } -impl Default for BackgroundColor { - fn default() -> Self { - BackgroundColor::Yellow - } -} - /// A flame graph color palette. /// /// Defaults to [`BasicPalette::Hot`]. diff --git a/src/flamegraph/color/palettes.rs b/src/flamegraph/color/palettes.rs index fbccd89b..b3d8879c 100644 --- a/src/flamegraph/color/palettes.rs +++ b/src/flamegraph/color/palettes.rs @@ -106,9 +106,9 @@ pub(super) mod js { } else if name.contains(':') { return BasicPalette::Aqua; } else if let Some(ai) = name.find('/') { - if (&name[ai..]).contains("node_modules/") { + if name[ai..].contains("node_modules/") { return BasicPalette::Purple; - } else if (&name[ai..]).contains(".js") { + } else if name[ai..].contains(".js") { return BasicPalette::Green; } } diff --git a/src/flamegraph/mod.rs b/src/flamegraph/mod.rs index 0e0ee68d..fb85459b 100644 --- a/src/flamegraph/mod.rs +++ b/src/flamegraph/mod.rs @@ -334,11 +334,12 @@ impl<'a> Default for Options<'a> { } /// The direction the plot should grow. -#[derive(Debug, Clone, Copy, Eq, PartialEq)] +#[derive(Debug, Clone, Copy, Eq, PartialEq, Default)] pub enum Direction { /// Stacks grow from the bottom to the top. /// /// The `(all)` meta frame will be at the bottom. + #[default] Straight, /// Stacks grow from the top to the bottom. @@ -347,28 +348,17 @@ pub enum Direction { Inverted, } -impl Default for Direction { - fn default() -> Self { - Direction::Straight - } -} - /// The direction text is truncated when it's too long. -#[derive(Debug, Clone, Copy, Eq, PartialEq)] +#[derive(Debug, Clone, Copy, Eq, PartialEq, Default)] pub enum TextTruncateDirection { /// Truncate text on the left. + #[default] Left, /// Truncate text on the right. Right, } -impl Default for TextTruncateDirection { - fn default() -> Self { - TextTruncateDirection::Left - } -} - struct Rectangle { x1_samples: usize, x1_pct: f64, @@ -694,7 +684,7 @@ where }; filled_rectangle(&mut svg, &mut buffer, &rect, color, &mut cache_rect)?; - let fitchars = (rect.width_pct() as f64 + let fitchars = (rect.width_pct() / (100.0 * opt.font_size as f64 * opt.font_width / image_width)) .trunc() as usize; let text: svg::TextArgument<'_> = if fitchars >= 3 { diff --git a/src/flamegraph/svg.rs b/src/flamegraph/svg.rs index ae0ac95c..5055bab6 100644 --- a/src/flamegraph/svg.rs +++ b/src/flamegraph/svg.rs @@ -87,9 +87,9 @@ where Ok(()) } -pub(super) fn write_prelude<'a, W>( +pub(super) fn write_prelude( svg: &mut Writer, - style_options: &StyleOptions<'a>, + style_options: &StyleOptions, opt: &Options<'_>, ) -> quick_xml::Result<()> where diff --git a/src/lib.rs b/src/lib.rs index 23cc43c2..54f0f9a4 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -146,6 +146,7 @@ #![deny(missing_docs)] #![warn(unreachable_pub)] #![cfg_attr(all(test, feature = "nightly"), feature(test))] +#![allow(clippy::disallowed_names)] #[cfg(all(test, feature = "nightly"))] extern crate test; diff --git a/tests/common/collapse.rs b/tests/common/collapse.rs index f272b3be..0dd6eca4 100644 --- a/tests/common/collapse.rs +++ b/tests/common/collapse.rs @@ -15,7 +15,7 @@ where let mut line_num = 1; for line in result.lines() { let line = if strip_quotes { - line.unwrap().replace('\"', "").replace('\'', "") + line.unwrap().replace(['\"', '\''], "") } else { line.unwrap() }; diff --git a/tests/diff-folded.rs b/tests/diff-folded.rs index db044e98..4cbcaf34 100644 --- a/tests/diff-folded.rs +++ b/tests/diff-folded.rs @@ -22,7 +22,7 @@ fn test_diff_folded( if e.kind() == io::ErrorKind::NotFound { // be nice to the dev and make the file let mut f = File::create(expected_result_file).unwrap(); - differential::from_files(options, &infile1, &infile2, &mut f)?; + differential::from_files(options, infile1, infile2, &mut f)?; fs::metadata(expected_result_file).unwrap() } else { return Err(e); From 305be4266220bef82a4bc37d5540d7d83a553b75 Mon Sep 17 00:00:00 2001 From: David Hewson Date: Sat, 16 Sep 2023 20:40:02 +0100 Subject: [PATCH 13/39] add inferno-collapse-ghcprof to handle GHC's prof files (#300) --- CHANGELOG.md | 2 + Cargo.toml | 5 + src/bin/collapse-ghcprof.rs | 84 +++++ src/collapse/ghcprof.rs | 242 +++++++++++++ src/collapse/guess.rs | 6 +- src/collapse/mod.rs | 7 + tests/collapse-ghcprof.rs | 117 +++++++ tests/data/collapse-ghcprof/percent.prof | 321 ++++++++++++++++++ .../data/collapse-ghcprof/results/percent.txt | 299 ++++++++++++++++ tests/data/collapse-ghcprof/results/ticks.txt | 299 ++++++++++++++++ .../collapse-ghcprof/results/ticks_bytes.txt | 299 ++++++++++++++++ .../collapse-ghcprof/results/ticks_ticks.txt | 299 ++++++++++++++++ tests/data/collapse-ghcprof/results/utf8.txt | 14 + .../collapse-ghcprof/results/utf8_bytes.txt | 14 + .../collapse-ghcprof/results/utf8_ticks.txt | 14 + tests/data/collapse-ghcprof/ticks.prof | 321 ++++++++++++++++++ tests/data/collapse-ghcprof/utf8.prof | 30 ++ 17 files changed, 2371 insertions(+), 2 deletions(-) create mode 100644 src/bin/collapse-ghcprof.rs create mode 100644 src/collapse/ghcprof.rs create mode 100644 tests/collapse-ghcprof.rs create mode 100644 tests/data/collapse-ghcprof/percent.prof create mode 100644 tests/data/collapse-ghcprof/results/percent.txt create mode 100644 tests/data/collapse-ghcprof/results/ticks.txt create mode 100644 tests/data/collapse-ghcprof/results/ticks_bytes.txt create mode 100644 tests/data/collapse-ghcprof/results/ticks_ticks.txt create mode 100644 tests/data/collapse-ghcprof/results/utf8.txt create mode 100644 tests/data/collapse-ghcprof/results/utf8_bytes.txt create mode 100644 tests/data/collapse-ghcprof/results/utf8_ticks.txt create mode 100644 tests/data/collapse-ghcprof/ticks.prof create mode 100644 tests/data/collapse-ghcprof/utf8.prof diff --git a/CHANGELOG.md b/CHANGELOG.md index 6b3090cb..5f48d2d0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ### Added +- Added collapse-ghcprof. [#300](https://github.com/jonhoo/inferno/pull/300) + ### Changed ### Removed diff --git a/Cargo.toml b/Cargo.toml index 1e1031d1..52000fc7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -97,6 +97,11 @@ name = "inferno-collapse-vsprof" path = "src/bin/collapse-vsprof.rs" required-features = ["cli"] +[[bin]] +name = "inferno-collapse-ghcprof" +path = "src/bin/collapse-ghcprof.rs" +required-features = ["cli"] + [[bin]] name = "inferno-collapse-guess" path = "src/bin/collapse-guess.rs" diff --git a/src/bin/collapse-ghcprof.rs b/src/bin/collapse-ghcprof.rs new file mode 100644 index 00000000..c7901dd4 --- /dev/null +++ b/src/bin/collapse-ghcprof.rs @@ -0,0 +1,84 @@ +use std::io; +use std::path::PathBuf; + +use clap::{ArgAction, ArgGroup, Parser}; +use env_logger::Env; +use inferno::collapse::ghcprof::{Folder, Options, Source}; +use inferno::collapse::Collapse; + +#[derive(Debug, Parser)] +#[clap( + name = "inferno-collapse-ghcprof", + about, + after_help = "\ +[1] This processes the .prof output of GHC (Glasgow Haskell Compiler) + " +)] +#[command(group( + ArgGroup::new("source") + .required(false) + .args(["time", "bytes", "ticks"]), +))] +struct Opt { + // ************* // + // *** FLAGS *** // + // ************* // + /// Source stack cost centre from the %time column (individual total % of runtime) + /// (This is the default if no cost centre specified) + #[clap(long = "time")] + time: bool, + /// Source stack cost centre from the bytes column (bytes allocated) + #[clap(long = "bytes")] + bytes: bool, + /// Source stack cost centre from the ticks column (runtime ticks) + #[clap(long = "ticks")] + ticks: bool, + + /// Silence all log output + #[clap(short = 'q', long = "quiet")] + quiet: bool, + + /// Verbose logging mode (-v, -vv, -vvv) + #[clap(short = 'v', long = "verbose", action = ArgAction::Count)] + verbose: u8, + + // ************ // + // *** ARGS *** // + // ************ // + /// ghc .prof output file, or STDIN if not specified + #[clap(value_name = "PATH")] + infile: Option, +} + +impl Opt { + fn into_parts(self) -> (Option, Options) { + let mut options = Options::default(); + options.source = if self.ticks { + Source::Ticks + } else if self.bytes { + Source::Bytes + } else { + Source::PercentTime + }; + (self.infile, options) + } +} + +fn main() -> io::Result<()> { + let opt = Opt::parse(); + + // Initialize logger + if !opt.quiet { + env_logger::Builder::from_env(Env::default().default_filter_or(match opt.verbose { + 0 => "warn", + 1 => "info", + 2 => "debug", + _ => "trace", + })) + .format_timestamp(None) + .init(); + } + + let (infile, options) = opt.into_parts(); + Folder::from(options).collapse_file_to_stdout(infile.as_ref()) +} diff --git a/src/collapse/ghcprof.rs b/src/collapse/ghcprof.rs new file mode 100644 index 00000000..be1fab89 --- /dev/null +++ b/src/collapse/ghcprof.rs @@ -0,0 +1,242 @@ +use std::io::{self, BufRead}; + +use log::warn; + +use crate::collapse::common::Occurrences; +use crate::collapse::Collapse; + +// These are the identifying words of the callgraph table, note that ticks and bytes columns are optional so not present +static START_LINE: &[&str] = &[ + "COST", "CENTRE", "MODULE", "SRC", "no.", "entries", "%time", "%alloc", "%time", "%alloc", +]; + +/// `ghcprof` folder configuration options. +#[derive(Clone, Debug, Default)] +#[non_exhaustive] +pub struct Options { + /// Column to source associated value from, default is `Source::PercentTime`. + pub source: Source, +} + +/// Which prof column to use as the cost centre of the output stacks +#[derive(Clone, Debug, Default)] +#[non_exhaustive] +pub enum Source { + #[default] + /// The indivial %time column representing individual time as a percent of the total + PercentTime, + /// The ticks column representing individual runtime ticks + Ticks, + /// The bytes column representing individual bytes allocated + Bytes, +} + +/// A stack collapser for the output of `ghc`'s prof files. +/// +/// To construct one, either use `ghcprof::Folder::default()` or create an [`Options`] and use +/// `ghcprof::Folder::from(options)`. +#[derive(Clone, Default)] +pub struct Folder { + /// Cost for the current stack frame. + current_cost: usize, + + /// Function on the stack in this entry thus far. + stack: Vec, + + opt: Options, +} + +// The starting character offset of important columns +#[derive(Debug)] +struct Cols { + cost_centre: usize, + module: usize, + source: usize, +} + +impl Collapse for Folder { + fn collapse(&mut self, mut reader: R, writer: W) -> io::Result<()> + where + R: io::BufRead, + W: io::Write, + { + // Consume the header... + let mut line = Vec::new(); + let cols = loop { + line.clear(); + if reader.read_until(b'\n', &mut line)? == 0 { + warn!("File ended before start of call graph"); + return Ok(()); + }; + let l = String::from_utf8_lossy(&line); + + if l.split_whitespace() + .take(START_LINE.len()) + .eq(START_LINE.iter().cloned()) + { + let cost_centre = 0; + let module = l.find("MODULE").unwrap_or(0); + // Pick out these fixed columns, first two are individual only + // "%time %alloc %time %alloc" + // `ticks` and `bytes` columns are optional and might appear on the end + // ticks header is right aligned + // bytes header is right aligned + // - BUT it has a max width of 9 whilst its values can exceed (but are always space separted) + // "%time %alloc %time %alloc ticks bytes" + let source = match self.opt.source { + Source::PercentTime => l + .find("%time") + .expect("%time is present from matching START_LINE"), + // See note above about ticks and bytes columns + Source::Ticks => one_off_end_of_col_before(l.as_ref(), "ticks")?, + Source::Bytes => one_off_end_of_col_before(l.as_ref(), "bytes")?, + }; + break Cols { + cost_centre, + module, + source, + }; + } + }; + // Skip one line + reader.read_until(b'\n', &mut line)?; + + // Process the data... + let mut occurrences = Occurrences::new(1); + loop { + line.clear(); + if reader.read_until(b'\n', &mut line)? == 0 { + // The format is not expected to contain any blank lines within the callgraph + break; + } + let l = String::from_utf8_lossy(&line); + let line = l.trim_end(); + if line.is_empty() { + break; + } else { + self.on_line(line, &mut occurrences, &cols)?; + } + } + + // Write the results... + occurrences.write_and_clear(writer)?; + + // Reset the state... + self.current_cost = 0; + self.stack.clear(); + Ok(()) + } + + /// Check for start line of a call graph. + fn is_applicable(&mut self, input: &str) -> Option { + let mut input = input.as_bytes(); + let mut line = String::new(); + loop { + line.clear(); + if let Ok(n) = input.read_line(&mut line) { + if n == 0 { + break; + } + } else { + return Some(false); + } + + if line + .split_whitespace() + .take(START_LINE.len()) + .eq(START_LINE.iter().cloned()) + { + return Some(true); + } + } + None + } +} + +fn one_off_end_of_col_before(line: &str, col: &str) -> io::Result { + let col_start = match line.find(col) { + Some(col_start) => col_start, + _ => return invalid_data_error!("Expected '{col}' column but it was not present"), + }; + let col_end = match line[..col_start].rfind(|c: char| !c.is_whitespace()) { + Some(col_end) => col_end, + _ => return invalid_data_error!("Expected a column before '{col}' but there was none"), + }; + Ok(col_end + 1) +} + +impl From for Folder { + fn from(opt: Options) -> Self { + Folder { + opt, + ..Default::default() + } + } +} + +impl Folder { + // Handle call graph lines of the form: + // + // MAIN MAIN ... + // CAF Options.Applicative.Builder ... + // defaultPrefs Options.Applicative.Builder ... + // idm Options.Applicative.Builder ... + // prefs Options.Applicative.Builder ... + // fullDesc Options.Applicative.Builder ... + // hidden Options.Applicative.Builder ... + // option Options.Applicative.Builder ... + // metavar Options.Applicative.Builder ... + // CAF Options.Applicative.Builder.Internal ... + // internal Options.Applicative.Builder.Internal ... + // noGlobal Options.Applicative.Builder.Internal ... + // optionMod Options.Applicative.Builder.Internal ... + + fn on_line( + &mut self, + line: &str, + occurrences: &mut Occurrences, + cols: &Cols, + ) -> io::Result<()> { + if let Some(indent_chars) = line.find(|c| c != ' ') { + let prev_len = self.stack.len(); + let depth = indent_chars; + + if depth < prev_len { + // If the line is not a child, pop stack to the stack before the new depth + self.stack.truncate(depth); + } else if depth != prev_len { + return invalid_data_error!("Skipped indentation level at line:\n{}", line); + } + // There can be non-ascii names so take care to char offset not byte offset + let string_range = |col_start: usize| { + line.chars() + .skip(col_start) + .skip_while(|c| c.is_whitespace()) + // it is expected that the values to extract do not contain whitespace + // since this is used for functions/modules/costs where it is not allowed + .take_while(|c| !c.is_whitespace()) + .collect::() + }; + let cost = string_range(cols.source); + if let Ok(cost) = cost.trim().parse::() { + let func = string_range(cols.cost_centre); + let module = string_range(cols.module); + // The columns we extract costs from all exclude the cost of their children + self.current_cost = match self.opt.source { + // We must `insert_or_add` a `usize` so convert to per-mille to not lose the 1dp + Source::PercentTime => cost * 10.0, + Source::Ticks => cost, + Source::Bytes => cost, + } as usize; + self.stack + .push(format!("{}.{}", module.trim(), func.trim())); + // identical stacks from other threads can appear so need to insert or add + occurrences.insert_or_add(self.stack.join(";"), self.current_cost); + } else { + return invalid_data_error!("Invalid cost field: \"{}\"", cost); + } + } + + Ok(()) + } +} diff --git a/src/collapse/guess.rs b/src/collapse/guess.rs index 0002fea7..fbecc4db 100644 --- a/src/collapse/guess.rs +++ b/src/collapse/guess.rs @@ -3,7 +3,7 @@ use std::io::{self, Cursor}; use log::{error, info}; -use crate::collapse::{self, dtrace, perf, sample, vsprof, vtune, Collapse}; +use crate::collapse::{self, dtrace, ghcprof, perf, sample, vsprof, vtune, Collapse}; const LINES_PER_ITERATION: usize = 10; @@ -70,10 +70,11 @@ impl Collapse for Folder { let mut sample = sample::Folder::default(); let mut vtune = vtune::Folder::default(); let mut vsprof = vsprof::Folder::default(); + let mut ghcprof = ghcprof::Folder::default(); // Each Collapse impl gets its own flag in this array. // It gets set to true when the impl has been ruled out. - let mut not_applicable = [false; 5]; + let mut not_applicable = [false; 6]; let mut buffer = String::new(); loop { @@ -108,6 +109,7 @@ impl Collapse for Folder { try_collapse_impl!(sample, 2); try_collapse_impl!(vtune, 3); try_collapse_impl!(vsprof, 4); + try_collapse_impl!(ghcprof, 5); if eof { break; diff --git a/src/collapse/mod.rs b/src/collapse/mod.rs index c1d85492..37dc7561 100644 --- a/src/collapse/mod.rs +++ b/src/collapse/mod.rs @@ -60,6 +60,13 @@ pub mod recursive; /// [crate-level documentation]: ../../index.html pub mod vsprof; +/// Stack collapsing for the output of the [GHC's built-in profiler](https://downloads.haskell.org/ghc/latest/docs/users_guide/profiling.html). +/// +/// See the [crate-level documentation] for details. +/// +/// [crate-level documentation]: ../../index.html +pub mod ghcprof; + use is_terminal::IsTerminal; // DEFAULT_NTHREADS is public because we use it in the help text of the binaries, diff --git a/tests/collapse-ghcprof.rs b/tests/collapse-ghcprof.rs new file mode 100644 index 00000000..b3e27b18 --- /dev/null +++ b/tests/collapse-ghcprof.rs @@ -0,0 +1,117 @@ +mod common; + +use std::fs::File; +use std::io::{self, BufReader, Cursor}; +use std::process::{Command, Stdio}; + +use assert_cmd::prelude::CommandCargoExt; +use inferno::collapse::ghcprof::{Folder, Options, Source}; + +fn test_collapse_ghcprof(test_file: &str, expected_file: &str, options: Options) -> io::Result<()> { + common::test_collapse(Folder::from(options), test_file, expected_file, false) +} + +#[test] +fn collapse_percent_default() { + let test_file = "./tests/data/collapse-ghcprof/percent.prof"; + let result_file = "./tests/data/collapse-ghcprof/results/percent.txt"; + test_collapse_ghcprof(test_file, result_file, Options::default()).unwrap() +} + +#[test] +fn collapse_ticks_default() { + let test_file = "./tests/data/collapse-ghcprof/ticks.prof"; + let result_file = "./tests/data/collapse-ghcprof/results/ticks.txt"; + test_collapse_ghcprof(test_file, result_file, Options::default()).unwrap() +} + +#[test] +fn collapse_ticks_percent() { + let test_file = "./tests/data/collapse-ghcprof/ticks.prof"; + let result_file = "./tests/data/collapse-ghcprof/results/ticks.txt"; + let mut options = Options::default(); + options.source = Source::PercentTime; + test_collapse_ghcprof(test_file, result_file, options).unwrap() +} + +#[test] +fn collapse_ticks_ticks() { + let test_file = "./tests/data/collapse-ghcprof/ticks.prof"; + let result_file = "./tests/data/collapse-ghcprof/results/ticks_ticks.txt"; + let mut options = Options::default(); + options.source = Source::Ticks; + test_collapse_ghcprof(test_file, result_file, options).unwrap() +} + +#[test] +fn collapse_bytes_bytes() { + let test_file = "./tests/data/collapse-ghcprof/ticks.prof"; + let result_file = "./tests/data/collapse-ghcprof/results/ticks_bytes.txt"; + let mut options = Options::default(); + options.source = Source::Bytes; + test_collapse_ghcprof(test_file, result_file, options).unwrap() +} + +#[test] +fn collapse_utf8_default() { + let test_file = "./tests/data/collapse-ghcprof/utf8.prof"; + let result_file = "./tests/data/collapse-ghcprof/results/utf8.txt"; + test_collapse_ghcprof(test_file, result_file, Options::default()).unwrap() +} + +#[test] +fn collapse_utf8_ticks() { + let test_file = "./tests/data/collapse-ghcprof/utf8.prof"; + let result_file = "./tests/data/collapse-ghcprof/results/utf8_ticks.txt"; + let mut options = Options::default(); + options.source = Source::Ticks; + test_collapse_ghcprof(test_file, result_file, options).unwrap() +} + +#[test] +fn collapse_utf8_bytes() { + let test_file = "./tests/data/collapse-ghcprof/utf8.prof"; + let result_file = "./tests/data/collapse-ghcprof/results/utf8_bytes.txt"; + let mut options = Options::default(); + options.source = Source::Bytes; + test_collapse_ghcprof(test_file, result_file, options).unwrap() +} + +#[test] +fn collapse_ghcprof_cli() { + let input_file = "./tests/data/collapse-ghcprof/ticks.prof"; + let expected_file = "./tests/data/collapse-ghcprof/results/ticks.txt"; + + // Test with file passed in + let output = Command::cargo_bin("inferno-collapse-ghcprof") + .unwrap() + .arg(input_file) + .output() + .expect("failed to execute process"); + let expected = BufReader::new(File::open(expected_file).unwrap()); + common::compare_results(Cursor::new(output.stdout), expected, expected_file, false); + + // Test with STDIN + let mut child = Command::cargo_bin("inferno-collapse-ghcprof") + .unwrap() + .stdin(Stdio::piped()) + .stdout(Stdio::piped()) + .spawn() + .expect("Failed to spawn child process"); + let mut input = BufReader::new(File::open(input_file).unwrap()); + let stdin = child.stdin.as_mut().expect("Failed to open stdin"); + io::copy(&mut input, stdin).unwrap(); + let output = child.wait_with_output().expect("Failed to read stdout"); + let expected = BufReader::new(File::open(expected_file).unwrap()); + common::compare_results(Cursor::new(output.stdout), expected, expected_file, false); + + // Test --ticks and --bytes conflict + let output = Command::cargo_bin("inferno-collapse-ghcprof") + .unwrap() + .arg(input_file) + .arg("--ticks") + .arg("--bytes") + .output() + .expect("failed to execute process"); + assert_eq!(output.status.success(), false); +} diff --git a/tests/data/collapse-ghcprof/percent.prof b/tests/data/collapse-ghcprof/percent.prof new file mode 100644 index 00000000..5e37ec05 --- /dev/null +++ b/tests/data/collapse-ghcprof/percent.prof @@ -0,0 +1,321 @@ + Sun Aug 6 14:50 2023 Time and Allocation Profiling Report (Final) + + ghc-prof-flamegraph +RTS -p -RTS sample.prof + + total time = 0.02 secs (20 ticks @ 1000 us, 1 processor) + total alloc = 59,542,576 bytes (excludes profiling overheads) + +COST CENTRE MODULE SRC %time %alloc + +parseLine.readEither' ProfFile ProfFile.hs:(117,5)-(118,43) 35.0 26.8 +main Main ghc-prof-flamegraph.hs:(108,1)-(120,56) 30.0 9.4 +parseLine ProfFile ProfFile.hs:(57,1)-(118,43) 15.0 7.7 +parse ProfFile ProfFile.hs:(157,1)-(159,57) 15.0 23.5 +generateFrames.go.frame Main ghc-prof-flamegraph.hs:95:11-83 5.0 27.5 +generateFrames.go.symbol Main ghc-prof-flamegraph.hs:94:11-68 0.0 1.2 +processLines.go.(...) ProfFile ProfFile.hs:133:11-53 0.0 2.0 + + + individual inherited +COST CENTRE MODULE SRC no. entries %time %alloc %time %alloc + +MAIN MAIN 337 0 0.0 0.0 100.0 100.0 + CAF Options.Applicative.Builder 532 0 0.0 0.0 0.0 0.0 + defaultPrefs Options.Applicative.Builder src/Options/Applicative/Builder.hs:558:1-24 694 1 0.0 0.0 0.0 0.0 + idm Options.Applicative.Builder src/Options/Applicative/Builder.hs:554:1-12 696 1 0.0 0.0 0.0 0.0 + prefs Options.Applicative.Builder src/Options/Applicative/Builder.hs:(537,1)-(548,31) 695 1 0.0 0.0 0.0 0.0 + fullDesc Options.Applicative.Builder src/Options/Applicative/Builder.hs:395:1-52 703 1 0.0 0.0 0.0 0.0 + hidden Options.Applicative.Builder src/Options/Applicative/Builder.hs:(212,1)-(213,54) 761 1 0.0 0.0 0.0 0.0 + option Options.Applicative.Builder src/Options/Applicative/Builder.hs:(375,1)-(380,65) 725 0 0.0 0.0 0.0 0.0 + metavar Options.Applicative.Builder src/Options/Applicative/Builder.hs:206:1-55 726 0 0.0 0.0 0.0 0.0 + CAF Options.Applicative.Builder.Internal 530 0 0.0 0.0 0.0 0.0 + internal Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:189:1-60 711 1 0.0 0.0 0.0 0.0 + noGlobal Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:194:1-59 757 1 0.0 0.0 0.0 0.0 + optionMod Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:130:1-25 712 1 0.0 0.0 0.0 0.0 + CAF Options.Applicative.Common 529 0 0.0 0.0 0.0 0.0 + liftOpt Options.Applicative.Common src/Options/Applicative/Common.hs:81:1-14 715 1 0.0 0.0 0.0 0.0 + CAF Options.Applicative.Extra 528 0 0.0 0.0 0.0 0.0 + execParser Options.Applicative.Extra src/Options/Applicative/Extra.hs:115:1-42 676 1 0.0 0.0 0.0 0.0 + helper Options.Applicative.Extra src/Options/Applicative/Extra.hs:(51,1)-(56,4) 746 1 0.0 0.0 0.0 0.0 + help Options.Applicative.Builder src/Options/Applicative/Builder.hs:190:1-55 751 1 0.0 0.0 0.0 0.0 + helperWith Options.Applicative.Extra src/Options/Applicative/Extra.hs:(69,1)-(83,44) 752 1 0.0 0.0 0.0 0.0 + metavar Options.Applicative.Builder src/Options/Applicative/Builder.hs:206:1-55 754 1 0.0 0.0 0.0 0.0 + noArgError Options.Applicative.Builder src/Options/Applicative/Builder.hs:199:1-61 758 1 0.0 0.0 0.0 0.0 + option Options.Applicative.Builder src/Options/Applicative/Builder.hs:(375,1)-(380,65) 762 1 0.0 0.0 0.0 0.0 + metavar Options.Applicative.Builder src/Options/Applicative/Builder.hs:206:1-55 763 1 0.0 0.0 0.0 0.0 + mkParser Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:(165,1)-(169,36) 764 1 0.0 0.0 0.0 0.0 + mkOption Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:175:1-43 765 1 0.0 0.0 0.0 0.0 + value Options.Applicative.Builder src/Options/Applicative/Builder.hs:178:1-50 753 1 0.0 0.0 0.0 0.0 + long Options.Applicative.Builder src/Options/Applicative/Builder.hs:166:1-32 747 1 0.0 0.0 0.0 0.0 + fieldMod Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:133:1-28 748 1 0.0 0.0 0.0 0.0 + short Options.Applicative.Builder src/Options/Applicative/Builder.hs:162:1-34 749 1 0.0 0.0 0.0 0.0 + fieldMod Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:133:1-28 750 1 0.0 0.0 0.0 0.0 + execParserPure Options.Applicative.Extra src/Options/Applicative/Extra.hs:(155,1)-(164,33) 682 0 0.0 0.0 0.0 0.0 + runP Options.Applicative.Internal src/Options/Applicative/Internal.hs:91:1-59 683 0 0.0 0.0 0.0 0.0 + runParserInfo Options.Applicative.Common src/Options/Applicative/Common.hs:233:1-62 684 0 0.0 0.0 0.0 0.0 + runParserFully Options.Applicative.Common src/Options/Applicative/Common.hs:(236,1)-(240,33) 686 0 0.0 0.0 0.0 0.0 + runParser Options.Applicative.Common src/Options/Applicative/Common.hs:(203,1)-(220,24) 688 0 0.0 0.0 0.0 0.0 + runParserStep Options.Applicative.Common src/Options/Applicative/Common.hs:(223,1)-(227,35) 690 0 0.0 0.0 0.0 0.0 + disamb Options.Applicative.Internal src/Options/Applicative/Internal.hs:(258,1)-(265,18) 697 0 0.0 0.0 0.0 0.0 + takeListT Options.Applicative.Internal src/Options/Applicative/Internal.hs:(179,1)-(180,75) 698 2 0.0 0.0 0.0 0.0 + helperWith Options.Applicative.Extra src/Options/Applicative/Extra.hs:(69,1)-(83,44) 755 0 0.0 0.0 0.0 0.0 + metavar Options.Applicative.Builder src/Options/Applicative/Builder.hs:206:1-55 756 0 0.0 0.0 0.0 0.0 + noArgError Options.Applicative.Builder src/Options/Applicative/Builder.hs:199:1-61 759 0 0.0 0.0 0.0 0.0 + fieldMod Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:133:1-28 760 1 0.0 0.0 0.0 0.0 + CAF Options.Applicative.Types 522 0 0.0 0.0 0.0 0.0 + readerAsk Options.Applicative.Types src/Options/Applicative/Types.hs:220:1-21 851 1 0.0 0.0 0.0 0.0 + CAF Options.Applicative.BashCompletion 520 0 0.0 0.0 0.0 0.0 + bashCompletionParser Options.Applicative.BashCompletion src/Options/Applicative/BashCompletion.hs:(40,1)-(72,7) 708 0 0.0 0.0 0.0 0.0 + long Options.Applicative.Builder src/Options/Applicative/Builder.hs:166:1-32 709 8 0.0 0.0 0.0 0.0 + fieldMod Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:133:1-28 710 8 0.0 0.0 0.0 0.0 + strOption Options.Applicative.Builder src/Options/Applicative/Builder.hs:365:1-22 733 4 0.0 0.0 0.0 0.0 + option Options.Applicative.Builder src/Options/Applicative/Builder.hs:(375,1)-(380,65) 734 4 0.0 0.0 0.0 0.0 + metavar Options.Applicative.Builder src/Options/Applicative/Builder.hs:206:1-55 735 4 0.0 0.0 0.0 0.0 + mkParser Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:(165,1)-(169,36) 736 4 0.0 0.0 0.0 0.0 + mkOption Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:175:1-43 737 4 0.0 0.0 0.0 0.0 + option Options.Applicative.Builder src/Options/Applicative/Builder.hs:(375,1)-(380,65) 723 3 0.0 0.0 0.0 0.0 + metavar Options.Applicative.Builder src/Options/Applicative/Builder.hs:206:1-55 724 3 0.0 0.0 0.0 0.0 + mkParser Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:(165,1)-(169,36) 727 3 0.0 0.0 0.0 0.0 + mkOption Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:175:1-43 728 3 0.0 0.0 0.0 0.0 + value Options.Applicative.Builder src/Options/Applicative/Builder.hs:178:1-50 722 2 0.0 0.0 0.0 0.0 + flag' Options.Applicative.Builder src/Options/Applicative/Builder.hs:(332,1)-(336,43) 713 1 0.0 0.0 0.0 0.0 + flagActive Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:42:5-14 718 1 0.0 0.0 0.0 0.0 + mkParser Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:(165,1)-(169,36) 714 1 0.0 0.0 0.0 0.0 + mkOption Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:175:1-43 717 1 0.0 0.0 0.0 0.0 + long Options.Applicative.Builder src/Options/Applicative/Builder.hs:166:1-32 720 0 0.0 0.0 0.0 0.0 + fieldMod Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:133:1-28 721 0 0.0 0.0 0.0 0.0 + fromM Options.Applicative.Types src/Options/Applicative/Types.hs:288:1-26 729 1 0.0 0.0 0.0 0.0 + manyM Options.Applicative.Types src/Options/Applicative/Types.hs:(294,1)-(298,30) 731 0 0.0 0.0 0.0 0.0 + manyM Options.Applicative.Types src/Options/Applicative/Types.hs:(294,1)-(298,30) 730 1 0.0 0.0 0.0 0.0 + oneM Options.Applicative.Types src/Options/Applicative/Types.hs:291:1-26 732 1 0.0 0.0 0.0 0.0 + CAF GHC.Conc.Signal 454 0 0.0 0.0 0.0 0.0 + CAF GHC.IO.Encoding 437 0 0.0 0.0 0.0 0.0 + CAF GHC.IO.Encoding.Iconv 435 0 0.0 0.0 0.0 0.0 + CAF GHC.IO.Exception 429 0 0.0 0.0 0.0 0.0 + CAF GHC.IO.FD 428 0 0.0 0.0 0.0 0.0 + CAF GHC.IO.Handle.FD 426 0 0.0 0.1 0.0 0.1 + CAF GHC.IO.Handle.Internals 425 0 0.0 0.0 0.0 0.0 + CAF GHC.Read 410 0 0.0 0.0 0.0 0.0 + CAF:ds_r5B6 Main 595 0 0.0 0.0 0.0 0.0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 869 0 0.0 0.0 0.0 0.0 + manyM Options.Applicative.Types src/Options/Applicative/Types.hs:(294,1)-(298,30) 870 1 0.0 0.0 0.0 0.0 + oneM Options.Applicative.Types src/Options/Applicative/Types.hs:291:1-26 872 1 0.0 0.0 0.0 0.0 + CAF:firstLineIncludesSources2_r3VA ProfFile 617 0 0.0 0.0 0.0 0.0 + CAF:firstLineIncludesSources_r2x3 ProfFile ProfFile.hs:148:1-24 618 0 0.0 0.0 0.0 0.0 + firstLineIncludesSources ProfFile ProfFile.hs:148:1-118 893 1 0.0 0.0 0.0 0.0 + CAF:firstLineNoSources10_r3Vm ProfFile 613 0 0.0 0.0 0.0 0.0 + CAF:firstLineNoSources12_r3Vo ProfFile 614 0 0.0 0.0 0.0 0.0 + CAF:firstLineNoSources14_r3Vq ProfFile 615 0 0.0 0.0 0.0 0.0 + CAF:firstLineNoSources2_r3Ve ProfFile 609 0 0.0 0.0 0.0 0.0 + CAF:firstLineNoSources4_r3Vg ProfFile 610 0 0.0 0.0 0.0 0.0 + CAF:firstLineNoSources6_r3Vi ProfFile 611 0 0.0 0.0 0.0 0.0 + CAF:firstLineNoSources8_r3Vk ProfFile 612 0 0.0 0.0 0.0 0.0 + CAF:firstLineNoSources_r2x2 ProfFile ProfFile.hs:144:1-18 616 0 0.0 0.0 0.0 0.0 + firstLineNoSources ProfFile ProfFile.hs:144:1-105 892 1 0.0 0.0 0.0 0.0 + CAF:lIndividualTime ProfFile ProfFile.hs:41:1-15 605 0 0.0 0.0 0.0 0.0 + lIndividualTime ProfFile ProfFile.hs:41:1-37 916 1 0.0 0.0 0.0 0.0 + CAF:lvl13_r3Wl ProfFile 627 0 0.0 0.0 0.0 0.0 + parseLine.readEither' ProfFile ProfFile.hs:(117,5)-(118,43) 904 0 0.0 0.0 0.0 0.0 + CAF:lvl14_r3Wn ProfFile 628 0 0.0 0.0 0.0 0.0 + parseLine.readEither' ProfFile ProfFile.hs:(117,5)-(118,43) 903 0 0.0 0.0 0.0 0.0 + CAF:lvl15_r5zq Main 549 0 0.0 0.0 0.0 0.0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 788 0 0.0 0.0 0.0 0.0 + long Options.Applicative.Builder src/Options/Applicative/Builder.hs:166:1-32 789 0 0.0 0.0 0.0 0.0 + CAF:lvl18_r5zt Main 550 0 0.0 0.0 0.0 0.0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 780 0 0.0 0.0 0.0 0.0 + flag' Options.Applicative.Builder src/Options/Applicative/Builder.hs:(332,1)-(336,43) 784 1 0.0 0.0 0.0 0.0 + flagActive Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:42:5-14 787 1 0.0 0.0 0.0 0.0 + mkParser Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:(165,1)-(169,36) 785 1 0.0 0.0 0.0 0.0 + mkOption Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:175:1-43 786 1 0.0 0.0 0.0 0.0 + help Options.Applicative.Builder src/Options/Applicative/Builder.hs:190:1-55 783 1 0.0 0.0 0.0 0.0 + long Options.Applicative.Builder src/Options/Applicative/Builder.hs:166:1-32 781 1 0.0 0.0 0.0 0.0 + fieldMod Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:133:1-28 782 1 0.0 0.0 0.0 0.0 + CAF:lvl25_r5zE Main 555 0 0.0 0.0 0.0 0.0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 800 0 0.0 0.0 0.0 0.0 + long Options.Applicative.Builder src/Options/Applicative/Builder.hs:166:1-32 801 0 0.0 0.0 0.0 0.0 + CAF:lvl28_r5zH Main 556 0 0.0 0.0 0.0 0.0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 792 0 0.0 0.0 0.0 0.0 + flag' Options.Applicative.Builder src/Options/Applicative/Builder.hs:(332,1)-(336,43) 796 1 0.0 0.0 0.0 0.0 + flagActive Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:42:5-14 799 1 0.0 0.0 0.0 0.0 + mkParser Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:(165,1)-(169,36) 797 1 0.0 0.0 0.0 0.0 + mkOption Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:175:1-43 798 1 0.0 0.0 0.0 0.0 + help Options.Applicative.Builder src/Options/Applicative/Builder.hs:190:1-55 795 1 0.0 0.0 0.0 0.0 + long Options.Applicative.Builder src/Options/Applicative/Builder.hs:166:1-32 793 1 0.0 0.0 0.0 0.0 + fieldMod Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:133:1-28 794 1 0.0 0.0 0.0 0.0 + CAF:lvl35_r5zS Main 561 0 0.0 0.0 0.0 0.0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 812 0 0.0 0.0 0.0 0.0 + long Options.Applicative.Builder src/Options/Applicative/Builder.hs:166:1-32 813 0 0.0 0.0 0.0 0.0 + CAF:lvl38_r5zV Main 562 0 0.0 0.0 0.0 0.0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 804 0 0.0 0.0 0.0 0.0 + flag' Options.Applicative.Builder src/Options/Applicative/Builder.hs:(332,1)-(336,43) 808 1 0.0 0.0 0.0 0.0 + flagActive Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:42:5-14 811 1 0.0 0.0 0.0 0.0 + mkParser Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:(165,1)-(169,36) 809 1 0.0 0.0 0.0 0.0 + mkOption Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:175:1-43 810 1 0.0 0.0 0.0 0.0 + help Options.Applicative.Builder src/Options/Applicative/Builder.hs:190:1-55 807 1 0.0 0.0 0.0 0.0 + long Options.Applicative.Builder src/Options/Applicative/Builder.hs:166:1-32 805 1 0.0 0.0 0.0 0.0 + fieldMod Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:133:1-28 806 1 0.0 0.0 0.0 0.0 + CAF:lvl45_r5A6 Main 567 0 0.0 0.0 0.0 0.0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 828 0 0.0 0.0 0.0 0.0 + long Options.Applicative.Builder src/Options/Applicative/Builder.hs:166:1-32 829 0 0.0 0.0 0.0 0.0 + CAF:lvl47_r5A9 Main 569 0 0.0 0.0 0.0 0.0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 818 0 0.0 0.0 0.0 0.0 + flag Options.Applicative.Builder src/Options/Applicative/Builder.hs:312:1-45 819 0 0.0 0.0 0.0 0.0 + flag' Options.Applicative.Builder src/Options/Applicative/Builder.hs:(332,1)-(336,43) 824 1 0.0 0.0 0.0 0.0 + flagActive Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:42:5-14 827 1 0.0 0.0 0.0 0.0 + mkParser Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:(165,1)-(169,36) 825 1 0.0 0.0 0.0 0.0 + mkOption Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:175:1-43 826 1 0.0 0.0 0.0 0.0 + long Options.Applicative.Builder src/Options/Applicative/Builder.hs:166:1-32 832 0 0.0 0.0 0.0 0.0 + fieldMod Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:133:1-28 833 0 0.0 0.0 0.0 0.0 + CAF:lvl50_r5Ac Main 570 0 0.0 0.0 0.0 0.0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 816 0 0.0 0.0 0.0 0.0 + flag Options.Applicative.Builder src/Options/Applicative/Builder.hs:312:1-45 817 1 0.0 0.0 0.0 0.0 + CAF:lvl6_r5zd Main 543 0 0.0 0.0 0.0 0.0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 776 0 0.0 0.0 0.0 0.0 + long Options.Applicative.Builder src/Options/Applicative/Builder.hs:166:1-32 777 0 0.0 0.0 0.0 0.0 + CAF:lvl79_r5B5 Main 594 0 0.0 0.0 0.0 0.0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 873 0 0.0 0.0 0.0 0.0 + strOption Options.Applicative.Builder src/Options/Applicative/Builder.hs:365:1-22 874 1 0.0 0.0 0.0 0.0 + option Options.Applicative.Builder src/Options/Applicative/Builder.hs:(375,1)-(380,65) 880 1 0.0 0.0 0.0 0.0 + metavar Options.Applicative.Builder src/Options/Applicative/Builder.hs:206:1-55 881 1 0.0 0.0 0.0 0.0 + mkParser Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:(165,1)-(169,36) 882 1 0.0 0.0 0.0 0.0 + CAF:lvl87_r5Bf Main 600 0 0.0 0.0 0.0 0.0 + CAF:lvl94_r5Bp Main 602 0 0.0 0.0 0.0 0.0 + main Main ghc-prof-flamegraph.hs:(108,1)-(120,56) 701 0 0.0 0.0 0.0 0.0 + info Options.Applicative.Builder src/Options/Applicative/Builder.hs:(459,1)-(468,34) 702 1 0.0 0.0 0.0 0.0 + fullDesc Options.Applicative.Builder src/Options/Applicative/Builder.hs:395:1-52 704 0 0.0 0.0 0.0 0.0 + CAF:lvl9_r5zg Main 544 0 0.0 0.0 0.0 0.0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 768 0 0.0 0.0 0.0 0.0 + flag' Options.Applicative.Builder src/Options/Applicative/Builder.hs:(332,1)-(336,43) 772 1 0.0 0.0 0.0 0.0 + flagActive Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:42:5-14 775 1 0.0 0.0 0.0 0.0 + mkParser Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:(165,1)-(169,36) 773 1 0.0 0.0 0.0 0.0 + mkOption Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:175:1-43 774 1 0.0 0.0 0.0 0.0 + help Options.Applicative.Builder src/Options/Applicative/Builder.hs:190:1-55 771 1 0.0 0.0 0.0 0.0 + long Options.Applicative.Builder src/Options/Applicative/Builder.hs:166:1-32 769 1 0.0 0.0 0.0 0.0 + fieldMod Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:133:1-28 770 1 0.0 0.0 0.0 0.0 + CAF:m1_r5Am Main 575 0 0.0 0.0 0.0 0.0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 836 0 0.0 0.0 0.0 0.0 + help Options.Applicative.Builder src/Options/Applicative/Builder.hs:190:1-55 838 1 0.0 0.0 0.0 0.0 + metavar Options.Applicative.Builder src/Options/Applicative/Builder.hs:206:1-55 837 1 0.0 0.0 0.0 0.0 + CAF:m2_r5AM Main 585 0 0.0 0.0 0.0 0.0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 857 0 0.0 0.0 0.0 0.0 + help Options.Applicative.Builder src/Options/Applicative/Builder.hs:190:1-55 863 1 0.0 0.0 0.0 0.0 + long Options.Applicative.Builder src/Options/Applicative/Builder.hs:166:1-32 860 1 0.0 0.0 0.0 0.0 + fieldMod Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:133:1-28 861 1 0.0 0.0 0.0 0.0 + metavar Options.Applicative.Builder src/Options/Applicative/Builder.hs:206:1-55 862 1 0.0 0.0 0.0 0.0 + short Options.Applicative.Builder src/Options/Applicative/Builder.hs:162:1-34 858 1 0.0 0.0 0.0 0.0 + fieldMod Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:133:1-28 859 1 0.0 0.0 0.0 0.0 + CAF:m3_r5B4 Main 593 0 0.0 0.0 0.0 0.0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 875 0 0.0 0.0 0.0 0.0 + help Options.Applicative.Builder src/Options/Applicative/Builder.hs:190:1-55 879 1 0.0 0.0 0.0 0.0 + long Options.Applicative.Builder src/Options/Applicative/Builder.hs:166:1-32 876 1 0.0 0.0 0.0 0.0 + fieldMod Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:133:1-28 877 1 0.0 0.0 0.0 0.0 + metavar Options.Applicative.Builder src/Options/Applicative/Builder.hs:206:1-55 878 1 0.0 0.0 0.0 0.0 + CAF:m_r5A8 Main 568 0 0.0 0.0 0.0 0.0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 820 0 0.0 0.0 0.0 0.0 + help Options.Applicative.Builder src/Options/Applicative/Builder.hs:190:1-55 823 1 0.0 0.0 0.0 0.0 + long Options.Applicative.Builder src/Options/Applicative/Builder.hs:166:1-32 821 1 0.0 0.0 0.0 0.0 + fieldMod Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:133:1-28 822 1 0.0 0.0 0.0 0.0 + CAF:main1 Main 603 0 0.0 0.0 0.0 0.0 + main Main ghc-prof-flamegraph.hs:(108,1)-(120,56) 674 1 0.0 0.0 0.0 0.0 + CAF:optionsParser10_r5B7 Main 596 0 0.0 0.0 0.0 0.0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 867 0 0.0 0.0 0.0 0.0 + fromM Options.Applicative.Types src/Options/Applicative/Types.hs:288:1-26 868 1 0.0 0.0 0.0 0.0 + manyM Options.Applicative.Types src/Options/Applicative/Types.hs:(294,1)-(298,30) 871 0 0.0 0.0 0.0 0.0 + CAF:optionsParser1_r5Ae Main 571 0 0.0 0.0 0.0 0.0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 767 0 0.0 0.0 0.0 0.0 + CAF:optionsParser2_r5Ao Main 576 0 0.0 0.0 0.0 0.0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 834 0 0.0 0.0 0.0 0.0 + strArgument Options.Applicative.Builder src/Options/Applicative/Builder.hs:298:1-26 835 1 0.0 0.0 0.0 0.0 + argument Options.Applicative.Builder src/Options/Applicative/Builder.hs:(290,1)-(294,25) 839 1 0.0 0.0 0.0 0.0 + mkParser Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:(165,1)-(169,36) 840 1 0.0 0.0 0.0 0.0 + mkOption Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:175:1-43 841 1 0.0 0.0 0.0 0.0 + str Options.Applicative.Builder src/Options/Applicative/Builder.hs:134:1-30 848 1 0.0 0.0 0.0 0.0 + CAF:optionsParser7_r5AN Main 586 0 0.0 0.0 0.0 0.0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 855 0 0.0 0.0 0.0 0.0 + strOption Options.Applicative.Builder src/Options/Applicative/Builder.hs:365:1-22 856 1 0.0 0.0 0.0 0.0 + option Options.Applicative.Builder src/Options/Applicative/Builder.hs:(375,1)-(380,65) 864 1 0.0 0.0 0.0 0.0 + metavar Options.Applicative.Builder src/Options/Applicative/Builder.hs:206:1-55 865 1 0.0 0.0 0.0 0.0 + mkParser Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:(165,1)-(169,36) 866 1 0.0 0.0 0.0 0.0 + CAF:optionsParser_r33i Main ghc-prof-flamegraph.hs:35:1-13 597 0 0.0 0.0 0.0 0.0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 766 1 0.0 0.0 0.0 0.0 + main Main ghc-prof-flamegraph.hs:(108,1)-(120,56) 675 0 30.0 9.4 100.0 99.9 + checkNames Main ghc-prof-flamegraph.hs:(58,1)-(66,83) 905 1 0.0 0.0 0.0 0.0 + generateFrames Main ghc-prof-flamegraph.hs:(87,1)-(105,43) 907 1 0.0 0.0 5.0 29.7 + generateFrames.go Main ghc-prof-flamegraph.hs:(90,5)-(98,88) 910 1411 0.0 0.9 5.0 29.7 + generateFrames.go.(...) Main ghc-prof-flamegraph.hs:97:11-53 925 705 0.0 0.0 0.0 0.0 + generateFrames.go.(...) Main ghc-prof-flamegraph.hs:96:11-87 922 705 0.0 0.1 0.0 0.1 + lChildren ProfFile ProfFile.hs:37:5-13 923 705 0.0 0.0 0.0 0.0 + generateFrames.go.childrenEntries Main ghc-prof-flamegraph.hs:96:11-87 921 705 0.0 0.0 0.0 0.0 + generateFrames.go.childrenFrames Main ghc-prof-flamegraph.hs:96:11-87 932 705 0.0 0.0 0.0 0.0 + generateFrames.go.entries Main ghc-prof-flamegraph.hs:93:11-82 911 705 0.0 0.0 0.0 0.1 + normalize Main ghc-prof-flamegraph.hs:(69,1)-(71,23) 912 705 0.0 0.0 0.0 0.0 + optionsReportType Main ghc-prof-flamegraph.hs:21:5-21 913 1 0.0 0.0 0.0 0.0 + generateFrames.individualMeasure Main ghc-prof-flamegraph.hs:(100,5)-(105,43) 917 0 0.0 0.0 0.0 0.0 + lIndividualTime ProfFile ProfFile.hs:41:1-37 918 0 0.0 0.0 0.0 0.0 + lTime ProfFile ProfFile.hs:33:5-9 919 705 0.0 0.0 0.0 0.0 + tIndividual ProfFile ProfFile.hs:24:5-15 920 705 0.0 0.0 0.0 0.0 + generateFrames.go.frame Main ghc-prof-flamegraph.hs:95:11-83 928 705 5.0 27.5 5.0 27.5 + generateFrames.go.restEntries Main ghc-prof-flamegraph.hs:97:11-53 924 705 0.0 0.0 0.0 0.0 + generateFrames.go.restFrames Main ghc-prof-flamegraph.hs:97:11-53 933 705 0.0 0.0 0.0 0.0 + generateFrames.go.symbol Main ghc-prof-flamegraph.hs:94:11-68 929 705 0.0 1.2 0.0 1.2 + lCostCentre ProfFile ProfFile.hs:29:5-15 931 705 0.0 0.0 0.0 0.0 + lModule ProfFile ProfFile.hs:30:5-11 930 705 0.0 0.0 0.0 0.0 + addUnknown Main ghc-prof-flamegraph.hs:(74,1)-(84,18) 909 1 0.0 0.0 0.0 0.0 + addUnknown.\ Main ghc-prof-flamegraph.hs:(75,3)-(78,16) 926 1 0.0 0.0 0.0 0.0 + addUnknown.\.unknown Main ghc-prof-flamegraph.hs:75:7-30 927 1 0.0 0.0 0.0 0.0 + generateFrames.individualMeasure Main ghc-prof-flamegraph.hs:(100,5)-(105,43) 914 1 0.0 0.0 0.0 0.0 + optionsReportType Main ghc-prof-flamegraph.hs:21:5-21 915 1 0.0 0.0 0.0 0.0 + optionsReportType Main ghc-prof-flamegraph.hs:21:5-21 908 1 0.0 0.0 0.0 0.0 + optionsProfFile Main ghc-prof-flamegraph.hs:22:5-19 889 1 0.0 0.0 0.0 0.0 + optionsReportType Main ghc-prof-flamegraph.hs:21:5-21 906 1 0.0 0.0 0.0 0.0 + parse ProfFile ProfFile.hs:(157,1)-(159,57) 890 1 15.0 23.5 65.0 60.5 + findStart ProfFile ProfFile.hs:(151,1)-(154,73) 891 27 0.0 0.0 0.0 0.0 + processLines ProfFile ProfFile.hs:(123,1)-(141,74) 894 1 0.0 0.0 50.0 37.0 + processLines.go ProfFile ProfFile.hs:(130,5)-(141,74) 895 1411 0.0 0.3 50.0 37.0 + processLines.go.(...) ProfFile ProfFile.hs:133:11-53 896 1408 0.0 2.0 0.0 2.0 + processLines.go.depth ProfFile ProfFile.hs:134:11-31 898 1408 0.0 0.0 0.0 0.0 + processLines.go.spaces ProfFile ProfFile.hs:133:11-53 897 1408 0.0 0.0 0.0 0.0 + parseLine ProfFile ProfFile.hs:(57,1)-(118,43) 900 705 15.0 7.7 50.0 34.7 + parseLine.parse' ProfFile ProfFile.hs:(106,5)-(115,78) 901 705 0.0 0.2 35.0 27.0 + parseLine.readEither' ProfFile ProfFile.hs:(117,5)-(118,43) 902 4230 35.0 26.8 35.0 26.8 + processLines.go.rest ProfFile ProfFile.hs:133:11-53 899 705 0.0 0.0 0.0 0.0 + execParser Options.Applicative.Extra src/Options/Applicative/Extra.hs:115:1-42 677 0 0.0 0.0 0.0 0.2 + customExecParser Options.Applicative.Extra src/Options/Applicative/Extra.hs:(119,1)-(121,23) 678 1 0.0 0.0 0.0 0.2 + execParserPure Options.Applicative.Extra src/Options/Applicative/Extra.hs:(155,1)-(164,33) 679 1 0.0 0.0 0.0 0.2 + runP Options.Applicative.Internal src/Options/Applicative/Internal.hs:91:1-59 680 1 0.0 0.0 0.0 0.2 + bashCompletionParser Options.Applicative.BashCompletion src/Options/Applicative/BashCompletion.hs:(40,1)-(72,7) 706 1 0.0 0.0 0.0 0.0 + infoParser Options.Applicative.Types src/Options/Applicative/Types.hs:90:5-14 745 1 0.0 0.0 0.0 0.0 + runParserInfo Options.Applicative.Common src/Options/Applicative/Common.hs:233:1-62 681 1 0.0 0.0 0.0 0.2 + infoParser Options.Applicative.Types src/Options/Applicative/Types.hs:90:5-14 705 1 0.0 0.0 0.0 0.0 + infoPolicy Options.Applicative.Types src/Options/Applicative/Types.hs:97:5-14 700 1 0.0 0.0 0.0 0.0 + runParserFully Options.Applicative.Common src/Options/Applicative/Common.hs:(236,1)-(240,33) 685 1 0.0 0.0 0.0 0.2 + runParser Options.Applicative.Common src/Options/Applicative/Common.hs:(203,1)-(220,24) 687 2 0.0 0.0 0.0 0.2 + evalParser Options.Applicative.Common src/Options/Applicative/Common.hs:(245,1)-(249,56) 854 27 0.0 0.0 0.0 0.0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 884 0 0.0 0.0 0.0 0.0 + manyM Options.Applicative.Types src/Options/Applicative/Types.hs:(294,1)-(298,30) 885 0 0.0 0.0 0.0 0.0 + runParserM Options.Applicative.Types src/Options/Applicative/Types.hs:274:5-14 887 1 0.0 0.0 0.0 0.0 + oneM Options.Applicative.Types src/Options/Applicative/Types.hs:291:1-26 886 0 0.0 0.0 0.0 0.0 + runParserStep Options.Applicative.Common src/Options/Applicative/Common.hs:(223,1)-(227,35) 689 1 0.0 0.1 0.0 0.2 + optMain Options.Applicative.Types src/Options/Applicative/Types.hs:172:5-11 716 30 0.0 0.0 0.0 0.0 + Options.Applicative.Internal src/Options/Applicative/Internal.hs:(249,1)-(252,15) 707 8 0.0 0.1 0.0 0.1 + cut Options.Applicative.Internal src/Options/Applicative/Internal.hs:255:1-31 843 0 0.0 0.0 0.0 0.0 + runReadM Options.Applicative.Internal src/Options/Applicative/Internal.hs:98:1-63 852 0 0.0 0.0 0.0 0.0 + hoistEither Options.Applicative.Internal src/Options/Applicative/Internal.hs:88:1-34 853 0 0.0 0.0 0.0 0.0 + evalParser Options.Applicative.Common src/Options/Applicative/Common.hs:(245,1)-(249,56) 738 3 0.0 0.0 0.0 0.0 + cut Options.Applicative.Internal src/Options/Applicative/Internal.hs:255:1-31 842 1 0.0 0.0 0.0 0.0 + disamb Options.Applicative.Internal src/Options/Applicative/Internal.hs:(258,1)-(265,18) 691 1 0.0 0.0 0.0 0.0 + runListT Options.Applicative.Internal src/Options/Applicative/Internal.hs:(183,1)-(187,43) 692 2 0.0 0.0 0.0 0.0 + takeListT Options.Applicative.Internal src/Options/Applicative/Internal.hs:(179,1)-(180,75) 699 0 0.0 0.0 0.0 0.0 + prefDisambiguate Options.Applicative.Types src/Options/Applicative/Types.hs:113:5-20 693 1 0.0 0.0 0.0 0.0 + runReadM Options.Applicative.Internal src/Options/Applicative/Internal.hs:98:1-63 844 1 0.0 0.0 0.0 0.0 + crReader Options.Applicative.Types src/Options/Applicative/Types.hs:232:5-12 846 1 0.0 0.0 0.0 0.0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 847 0 0.0 0.0 0.0 0.0 + strArgument Options.Applicative.Builder src/Options/Applicative/Builder.hs:298:1-26 849 0 0.0 0.0 0.0 0.0 + str Options.Applicative.Builder src/Options/Applicative/Builder.hs:134:1-30 850 0 0.0 0.0 0.0 0.0 + hoistEither Options.Applicative.Internal src/Options/Applicative/Internal.hs:88:1-34 845 1 0.0 0.0 0.0 0.0 + bashCompletionParser Options.Applicative.BashCompletion src/Options/Applicative/BashCompletion.hs:(40,1)-(72,7) 740 0 0.0 0.0 0.0 0.0 + fromM Options.Applicative.Types src/Options/Applicative/Types.hs:288:1-26 741 0 0.0 0.0 0.0 0.0 + manyM Options.Applicative.Types src/Options/Applicative/Types.hs:(294,1)-(298,30) 742 0 0.0 0.0 0.0 0.0 + runParserM Options.Applicative.Types src/Options/Applicative/Types.hs:274:5-14 744 1 0.0 0.0 0.0 0.0 + oneM Options.Applicative.Types src/Options/Applicative/Types.hs:291:1-26 743 0 0.0 0.0 0.0 0.0 + handleParseResult Options.Applicative.Extra src/Options/Applicative/Extra.hs:(125,1)-(137,17) 888 1 0.0 0.0 0.0 0.0 diff --git a/tests/data/collapse-ghcprof/results/percent.txt b/tests/data/collapse-ghcprof/results/percent.txt new file mode 100644 index 00000000..7d4cd6a7 --- /dev/null +++ b/tests/data/collapse-ghcprof/results/percent.txt @@ -0,0 +1,299 @@ +MAIN.MAIN 0 +MAIN.MAIN;GHC.Conc.Signal.CAF 0 +MAIN.MAIN;GHC.IO.Encoding.CAF 0 +MAIN.MAIN;GHC.IO.Encoding.Iconv.CAF 0 +MAIN.MAIN;GHC.IO.Exception.CAF 0 +MAIN.MAIN;GHC.IO.FD.CAF 0 +MAIN.MAIN;GHC.IO.Handle.FD.CAF 0 +MAIN.MAIN;GHC.IO.Handle.Internals.CAF 0 +MAIN.MAIN;GHC.Read.CAF 0 +MAIN.MAIN;Main.CAF:ds_r5B6 0 +MAIN.MAIN;Main.CAF:ds_r5B6;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:ds_r5B6;Main.optionsParser;Options.Applicative.Types.manyM 0 +MAIN.MAIN;Main.CAF:ds_r5B6;Main.optionsParser;Options.Applicative.Types.manyM;Options.Applicative.Types.oneM 0 +MAIN.MAIN;Main.CAF:lvl15_r5zq 0 +MAIN.MAIN;Main.CAF:lvl15_r5zq;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:lvl15_r5zq;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:lvl18_r5zt 0 +MAIN.MAIN;Main.CAF:lvl18_r5zt;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:lvl18_r5zt;Main.optionsParser;Options.Applicative.Builder.flag' 0 +MAIN.MAIN;Main.CAF:lvl18_r5zt;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.flagActive 0 +MAIN.MAIN;Main.CAF:lvl18_r5zt;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser 0 +MAIN.MAIN;Main.CAF:lvl18_r5zt;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser;Options.Applicative.Builder.Internal.mkOption 0 +MAIN.MAIN;Main.CAF:lvl18_r5zt;Main.optionsParser;Options.Applicative.Builder.help 0 +MAIN.MAIN;Main.CAF:lvl18_r5zt;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:lvl18_r5zt;Main.optionsParser;Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Main.CAF:lvl25_r5zE 0 +MAIN.MAIN;Main.CAF:lvl25_r5zE;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:lvl25_r5zE;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:lvl28_r5zH 0 +MAIN.MAIN;Main.CAF:lvl28_r5zH;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:lvl28_r5zH;Main.optionsParser;Options.Applicative.Builder.flag' 0 +MAIN.MAIN;Main.CAF:lvl28_r5zH;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.flagActive 0 +MAIN.MAIN;Main.CAF:lvl28_r5zH;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser 0 +MAIN.MAIN;Main.CAF:lvl28_r5zH;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser;Options.Applicative.Builder.Internal.mkOption 0 +MAIN.MAIN;Main.CAF:lvl28_r5zH;Main.optionsParser;Options.Applicative.Builder.help 0 +MAIN.MAIN;Main.CAF:lvl28_r5zH;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:lvl28_r5zH;Main.optionsParser;Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Main.CAF:lvl35_r5zS 0 +MAIN.MAIN;Main.CAF:lvl35_r5zS;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:lvl35_r5zS;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:lvl38_r5zV 0 +MAIN.MAIN;Main.CAF:lvl38_r5zV;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:lvl38_r5zV;Main.optionsParser;Options.Applicative.Builder.flag' 0 +MAIN.MAIN;Main.CAF:lvl38_r5zV;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.flagActive 0 +MAIN.MAIN;Main.CAF:lvl38_r5zV;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser 0 +MAIN.MAIN;Main.CAF:lvl38_r5zV;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser;Options.Applicative.Builder.Internal.mkOption 0 +MAIN.MAIN;Main.CAF:lvl38_r5zV;Main.optionsParser;Options.Applicative.Builder.help 0 +MAIN.MAIN;Main.CAF:lvl38_r5zV;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:lvl38_r5zV;Main.optionsParser;Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Main.CAF:lvl45_r5A6 0 +MAIN.MAIN;Main.CAF:lvl45_r5A6;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:lvl45_r5A6;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:lvl47_r5A9 0 +MAIN.MAIN;Main.CAF:lvl47_r5A9;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:lvl47_r5A9;Main.optionsParser;Options.Applicative.Builder.flag 0 +MAIN.MAIN;Main.CAF:lvl47_r5A9;Main.optionsParser;Options.Applicative.Builder.flag;Options.Applicative.Builder.flag' 0 +MAIN.MAIN;Main.CAF:lvl47_r5A9;Main.optionsParser;Options.Applicative.Builder.flag;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.flagActive 0 +MAIN.MAIN;Main.CAF:lvl47_r5A9;Main.optionsParser;Options.Applicative.Builder.flag;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser 0 +MAIN.MAIN;Main.CAF:lvl47_r5A9;Main.optionsParser;Options.Applicative.Builder.flag;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser;Options.Applicative.Builder.Internal.mkOption 0 +MAIN.MAIN;Main.CAF:lvl47_r5A9;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:lvl47_r5A9;Main.optionsParser;Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Main.CAF:lvl50_r5Ac 0 +MAIN.MAIN;Main.CAF:lvl50_r5Ac;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:lvl50_r5Ac;Main.optionsParser;Options.Applicative.Builder.flag 0 +MAIN.MAIN;Main.CAF:lvl6_r5zd 0 +MAIN.MAIN;Main.CAF:lvl6_r5zd;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:lvl6_r5zd;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:lvl79_r5B5 0 +MAIN.MAIN;Main.CAF:lvl79_r5B5;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:lvl79_r5B5;Main.optionsParser;Options.Applicative.Builder.strOption 0 +MAIN.MAIN;Main.CAF:lvl79_r5B5;Main.optionsParser;Options.Applicative.Builder.strOption;Options.Applicative.Builder.option 0 +MAIN.MAIN;Main.CAF:lvl79_r5B5;Main.optionsParser;Options.Applicative.Builder.strOption;Options.Applicative.Builder.option;Options.Applicative.Builder.Internal.mkParser 0 +MAIN.MAIN;Main.CAF:lvl79_r5B5;Main.optionsParser;Options.Applicative.Builder.strOption;Options.Applicative.Builder.option;Options.Applicative.Builder.metavar 0 +MAIN.MAIN;Main.CAF:lvl87_r5Bf 0 +MAIN.MAIN;Main.CAF:lvl94_r5Bp 0 +MAIN.MAIN;Main.CAF:lvl94_r5Bp;Main.main 0 +MAIN.MAIN;Main.CAF:lvl94_r5Bp;Main.main;Options.Applicative.Builder.info 0 +MAIN.MAIN;Main.CAF:lvl94_r5Bp;Main.main;Options.Applicative.Builder.info;Options.Applicative.Builder.fullDesc 0 +MAIN.MAIN;Main.CAF:lvl9_r5zg 0 +MAIN.MAIN;Main.CAF:lvl9_r5zg;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:lvl9_r5zg;Main.optionsParser;Options.Applicative.Builder.flag' 0 +MAIN.MAIN;Main.CAF:lvl9_r5zg;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.flagActive 0 +MAIN.MAIN;Main.CAF:lvl9_r5zg;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser 0 +MAIN.MAIN;Main.CAF:lvl9_r5zg;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser;Options.Applicative.Builder.Internal.mkOption 0 +MAIN.MAIN;Main.CAF:lvl9_r5zg;Main.optionsParser;Options.Applicative.Builder.help 0 +MAIN.MAIN;Main.CAF:lvl9_r5zg;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:lvl9_r5zg;Main.optionsParser;Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Main.CAF:m1_r5Am 0 +MAIN.MAIN;Main.CAF:m1_r5Am;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:m1_r5Am;Main.optionsParser;Options.Applicative.Builder.help 0 +MAIN.MAIN;Main.CAF:m1_r5Am;Main.optionsParser;Options.Applicative.Builder.metavar 0 +MAIN.MAIN;Main.CAF:m2_r5AM 0 +MAIN.MAIN;Main.CAF:m2_r5AM;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:m2_r5AM;Main.optionsParser;Options.Applicative.Builder.help 0 +MAIN.MAIN;Main.CAF:m2_r5AM;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:m2_r5AM;Main.optionsParser;Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Main.CAF:m2_r5AM;Main.optionsParser;Options.Applicative.Builder.metavar 0 +MAIN.MAIN;Main.CAF:m2_r5AM;Main.optionsParser;Options.Applicative.Builder.short 0 +MAIN.MAIN;Main.CAF:m2_r5AM;Main.optionsParser;Options.Applicative.Builder.short;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Main.CAF:m3_r5B4 0 +MAIN.MAIN;Main.CAF:m3_r5B4;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:m3_r5B4;Main.optionsParser;Options.Applicative.Builder.help 0 +MAIN.MAIN;Main.CAF:m3_r5B4;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:m3_r5B4;Main.optionsParser;Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Main.CAF:m3_r5B4;Main.optionsParser;Options.Applicative.Builder.metavar 0 +MAIN.MAIN;Main.CAF:m_r5A8 0 +MAIN.MAIN;Main.CAF:m_r5A8;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:m_r5A8;Main.optionsParser;Options.Applicative.Builder.help 0 +MAIN.MAIN;Main.CAF:m_r5A8;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:m_r5A8;Main.optionsParser;Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Main.CAF:main1 0 +MAIN.MAIN;Main.CAF:main1;Main.main 0 +MAIN.MAIN;Main.CAF:optionsParser10_r5B7 0 +MAIN.MAIN;Main.CAF:optionsParser10_r5B7;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:optionsParser10_r5B7;Main.optionsParser;Options.Applicative.Types.fromM 0 +MAIN.MAIN;Main.CAF:optionsParser10_r5B7;Main.optionsParser;Options.Applicative.Types.manyM 0 +MAIN.MAIN;Main.CAF:optionsParser1_r5Ae 0 +MAIN.MAIN;Main.CAF:optionsParser1_r5Ae;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:optionsParser2_r5Ao 0 +MAIN.MAIN;Main.CAF:optionsParser2_r5Ao;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:optionsParser2_r5Ao;Main.optionsParser;Options.Applicative.Builder.strArgument 0 +MAIN.MAIN;Main.CAF:optionsParser2_r5Ao;Main.optionsParser;Options.Applicative.Builder.strArgument;Options.Applicative.Builder.argument 0 +MAIN.MAIN;Main.CAF:optionsParser2_r5Ao;Main.optionsParser;Options.Applicative.Builder.strArgument;Options.Applicative.Builder.argument;Options.Applicative.Builder.Internal.mkParser 0 +MAIN.MAIN;Main.CAF:optionsParser2_r5Ao;Main.optionsParser;Options.Applicative.Builder.strArgument;Options.Applicative.Builder.argument;Options.Applicative.Builder.Internal.mkParser;Options.Applicative.Builder.Internal.mkOption 0 +MAIN.MAIN;Main.CAF:optionsParser2_r5Ao;Main.optionsParser;Options.Applicative.Builder.strArgument;Options.Applicative.Builder.str 0 +MAIN.MAIN;Main.CAF:optionsParser7_r5AN 0 +MAIN.MAIN;Main.CAF:optionsParser7_r5AN;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:optionsParser7_r5AN;Main.optionsParser;Options.Applicative.Builder.strOption 0 +MAIN.MAIN;Main.CAF:optionsParser7_r5AN;Main.optionsParser;Options.Applicative.Builder.strOption;Options.Applicative.Builder.option 0 +MAIN.MAIN;Main.CAF:optionsParser7_r5AN;Main.optionsParser;Options.Applicative.Builder.strOption;Options.Applicative.Builder.option;Options.Applicative.Builder.Internal.mkParser 0 +MAIN.MAIN;Main.CAF:optionsParser7_r5AN;Main.optionsParser;Options.Applicative.Builder.strOption;Options.Applicative.Builder.option;Options.Applicative.Builder.metavar 0 +MAIN.MAIN;Main.CAF:optionsParser_r33i 0 +MAIN.MAIN;Main.CAF:optionsParser_r33i;Main.optionsParser 0 +MAIN.MAIN;Main.main 300 +MAIN.MAIN;Main.main;Main.checkNames 0 +MAIN.MAIN;Main.main;Main.generateFrames 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.addUnknown 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.addUnknown;Main.addUnknown.\ 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.addUnknown;Main.addUnknown.\;Main.addUnknown.\.unknown 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.(...) 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.(...);ProfFile.lChildren 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.childrenEntries 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.childrenFrames 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.entries 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.entries;Main.generateFrames.individualMeasure 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.entries;Main.generateFrames.individualMeasure;ProfFile.lIndividualTime 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.entries;Main.generateFrames.individualMeasure;ProfFile.lIndividualTime;ProfFile.lTime 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.entries;Main.generateFrames.individualMeasure;ProfFile.lIndividualTime;ProfFile.tIndividual 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.entries;Main.normalize 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.entries;Main.optionsReportType 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.frame 50 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.restEntries 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.restFrames 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.symbol 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.symbol;ProfFile.lCostCentre 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.symbol;ProfFile.lModule 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.individualMeasure 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.individualMeasure;Main.optionsReportType 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.optionsReportType 0 +MAIN.MAIN;Main.main;Main.optionsProfFile 0 +MAIN.MAIN;Main.main;Main.optionsReportType 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.BashCompletion.bashCompletionParser 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.evalParser 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.evalParser;Main.optionsParser 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.evalParser;Main.optionsParser;Options.Applicative.Types.manyM 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.evalParser;Main.optionsParser;Options.Applicative.Types.manyM;Options.Applicative.Types.oneM 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.evalParser;Main.optionsParser;Options.Applicative.Types.manyM;Options.Applicative.Types.runParserM 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.BashCompletion.bashCompletionParser 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Types.fromM 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Types.fromM;Options.Applicative.Types.manyM 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Types.fromM;Options.Applicative.Types.manyM;Options.Applicative.Types.oneM 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Types.fromM;Options.Applicative.Types.manyM;Options.Applicative.Types.runParserM 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Common.evalParser 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal. 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.;Options.Applicative.Internal.cut 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.;Options.Applicative.Internal.runReadM 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.;Options.Applicative.Internal.runReadM;Options.Applicative.Internal.hoistEither 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.cut 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.disamb 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.disamb;Options.Applicative.Internal.runListT 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.disamb;Options.Applicative.Internal.takeListT 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.runReadM 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.runReadM;Options.Applicative.Internal.hoistEither 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.runReadM;Options.Applicative.Types.crReader 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.runReadM;Options.Applicative.Types.crReader;Main.optionsParser 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.runReadM;Options.Applicative.Types.crReader;Main.optionsParser;Options.Applicative.Builder.strArgument 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.runReadM;Options.Applicative.Types.crReader;Main.optionsParser;Options.Applicative.Builder.strArgument;Options.Applicative.Builder.str 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Types.optMain 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Types.prefDisambiguate 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Types.infoParser 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Types.infoPolicy 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Types.infoParser 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.handleParseResult 0 +MAIN.MAIN;Main.main;ProfFile.parse 150 +MAIN.MAIN;Main.main;ProfFile.parse;ProfFile.findStart 0 +MAIN.MAIN;Main.main;ProfFile.parse;ProfFile.processLines 0 +MAIN.MAIN;Main.main;ProfFile.parse;ProfFile.processLines;ProfFile.processLines.go 0 +MAIN.MAIN;Main.main;ProfFile.parse;ProfFile.processLines;ProfFile.processLines.go;ProfFile.parseLine 150 +MAIN.MAIN;Main.main;ProfFile.parse;ProfFile.processLines;ProfFile.processLines.go;ProfFile.parseLine;ProfFile.parseLine.parse' 0 +MAIN.MAIN;Main.main;ProfFile.parse;ProfFile.processLines;ProfFile.processLines.go;ProfFile.parseLine;ProfFile.parseLine.parse';ProfFile.parseLine.readEither' 350 +MAIN.MAIN;Main.main;ProfFile.parse;ProfFile.processLines;ProfFile.processLines.go;ProfFile.processLines.go.(...) 0 +MAIN.MAIN;Main.main;ProfFile.parse;ProfFile.processLines;ProfFile.processLines.go;ProfFile.processLines.go.depth 0 +MAIN.MAIN;Main.main;ProfFile.parse;ProfFile.processLines;ProfFile.processLines.go;ProfFile.processLines.go.rest 0 +MAIN.MAIN;Main.main;ProfFile.parse;ProfFile.processLines;ProfFile.processLines.go;ProfFile.processLines.go.spaces 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.flag' 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.flagActive 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser;Options.Applicative.Builder.Internal.mkOption 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.long 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.option 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.option;Options.Applicative.Builder.Internal.mkParser 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.option;Options.Applicative.Builder.Internal.mkParser;Options.Applicative.Builder.Internal.mkOption 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.option;Options.Applicative.Builder.metavar 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.strOption 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.strOption;Options.Applicative.Builder.option 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.strOption;Options.Applicative.Builder.option;Options.Applicative.Builder.Internal.mkParser 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.strOption;Options.Applicative.Builder.option;Options.Applicative.Builder.Internal.mkParser;Options.Applicative.Builder.Internal.mkOption 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.strOption;Options.Applicative.Builder.option;Options.Applicative.Builder.metavar 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.value 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Types.fromM 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Types.fromM;Options.Applicative.Types.manyM 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Types.manyM 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Types.manyM;Options.Applicative.Types.oneM 0 +MAIN.MAIN;Options.Applicative.Builder.CAF 0 +MAIN.MAIN;Options.Applicative.Builder.CAF;Options.Applicative.Builder.defaultPrefs 0 +MAIN.MAIN;Options.Applicative.Builder.CAF;Options.Applicative.Builder.defaultPrefs;Options.Applicative.Builder.idm 0 +MAIN.MAIN;Options.Applicative.Builder.CAF;Options.Applicative.Builder.defaultPrefs;Options.Applicative.Builder.prefs 0 +MAIN.MAIN;Options.Applicative.Builder.CAF;Options.Applicative.Builder.fullDesc 0 +MAIN.MAIN;Options.Applicative.Builder.CAF;Options.Applicative.Builder.hidden 0 +MAIN.MAIN;Options.Applicative.Builder.CAF;Options.Applicative.Builder.option 0 +MAIN.MAIN;Options.Applicative.Builder.CAF;Options.Applicative.Builder.option;Options.Applicative.Builder.metavar 0 +MAIN.MAIN;Options.Applicative.Builder.Internal.CAF 0 +MAIN.MAIN;Options.Applicative.Builder.Internal.CAF;Options.Applicative.Builder.Internal.internal 0 +MAIN.MAIN;Options.Applicative.Builder.Internal.CAF;Options.Applicative.Builder.Internal.noGlobal 0 +MAIN.MAIN;Options.Applicative.Builder.Internal.CAF;Options.Applicative.Builder.Internal.optionMod 0 +MAIN.MAIN;Options.Applicative.Common.CAF 0 +MAIN.MAIN;Options.Applicative.Common.CAF;Options.Applicative.Common.liftOpt 0 +MAIN.MAIN;Options.Applicative.Extra.CAF 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.execParser 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.execParserPure 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.disamb 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.disamb;Options.Applicative.Internal.takeListT 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Builder.help 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Builder.long 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Builder.short 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Builder.short;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Extra.helperWith 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Extra.helperWith;Options.Applicative.Builder.metavar 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Extra.helperWith;Options.Applicative.Builder.noArgError 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Extra.helperWith;Options.Applicative.Builder.option 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Extra.helperWith;Options.Applicative.Builder.option;Options.Applicative.Builder.Internal.mkParser 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Extra.helperWith;Options.Applicative.Builder.option;Options.Applicative.Builder.Internal.mkParser;Options.Applicative.Builder.Internal.mkOption 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Extra.helperWith;Options.Applicative.Builder.option;Options.Applicative.Builder.metavar 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Extra.helperWith;Options.Applicative.Builder.value 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helperWith 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helperWith;Options.Applicative.Builder.metavar 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helperWith;Options.Applicative.Builder.noArgError 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helperWith;Options.Applicative.Builder.noArgError;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Options.Applicative.Types.CAF 0 +MAIN.MAIN;Options.Applicative.Types.CAF;Options.Applicative.Types.readerAsk 0 +MAIN.MAIN;ProfFile.CAF:firstLineIncludesSources2_r3VA 0 +MAIN.MAIN;ProfFile.CAF:firstLineIncludesSources_r2x3 0 +MAIN.MAIN;ProfFile.CAF:firstLineIncludesSources_r2x3;ProfFile.firstLineIncludesSources 0 +MAIN.MAIN;ProfFile.CAF:firstLineNoSources10_r3Vm 0 +MAIN.MAIN;ProfFile.CAF:firstLineNoSources12_r3Vo 0 +MAIN.MAIN;ProfFile.CAF:firstLineNoSources14_r3Vq 0 +MAIN.MAIN;ProfFile.CAF:firstLineNoSources2_r3Ve 0 +MAIN.MAIN;ProfFile.CAF:firstLineNoSources4_r3Vg 0 +MAIN.MAIN;ProfFile.CAF:firstLineNoSources6_r3Vi 0 +MAIN.MAIN;ProfFile.CAF:firstLineNoSources8_r3Vk 0 +MAIN.MAIN;ProfFile.CAF:firstLineNoSources_r2x2 0 +MAIN.MAIN;ProfFile.CAF:firstLineNoSources_r2x2;ProfFile.firstLineNoSources 0 +MAIN.MAIN;ProfFile.CAF:lIndividualTime 0 +MAIN.MAIN;ProfFile.CAF:lIndividualTime;ProfFile.lIndividualTime 0 +MAIN.MAIN;ProfFile.CAF:lvl13_r3Wl 0 +MAIN.MAIN;ProfFile.CAF:lvl13_r3Wl;ProfFile.parseLine.readEither' 0 +MAIN.MAIN;ProfFile.CAF:lvl14_r3Wn 0 +MAIN.MAIN;ProfFile.CAF:lvl14_r3Wn;ProfFile.parseLine.readEither' 0 diff --git a/tests/data/collapse-ghcprof/results/ticks.txt b/tests/data/collapse-ghcprof/results/ticks.txt new file mode 100644 index 00000000..8fea1027 --- /dev/null +++ b/tests/data/collapse-ghcprof/results/ticks.txt @@ -0,0 +1,299 @@ +MAIN.MAIN 0 +MAIN.MAIN;GHC.Conc.Signal.CAF 0 +MAIN.MAIN;GHC.IO.Encoding.CAF 0 +MAIN.MAIN;GHC.IO.Encoding.Iconv.CAF 0 +MAIN.MAIN;GHC.IO.Exception.CAF 0 +MAIN.MAIN;GHC.IO.FD.CAF 0 +MAIN.MAIN;GHC.IO.Handle.FD.CAF 0 +MAIN.MAIN;GHC.IO.Handle.Internals.CAF 0 +MAIN.MAIN;GHC.Read.CAF 0 +MAIN.MAIN;Main.CAF:ds_r5B6 0 +MAIN.MAIN;Main.CAF:ds_r5B6;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:ds_r5B6;Main.optionsParser;Options.Applicative.Types.manyM 0 +MAIN.MAIN;Main.CAF:ds_r5B6;Main.optionsParser;Options.Applicative.Types.manyM;Options.Applicative.Types.oneM 0 +MAIN.MAIN;Main.CAF:lvl15_r5zq 0 +MAIN.MAIN;Main.CAF:lvl15_r5zq;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:lvl15_r5zq;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:lvl18_r5zt 0 +MAIN.MAIN;Main.CAF:lvl18_r5zt;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:lvl18_r5zt;Main.optionsParser;Options.Applicative.Builder.flag' 0 +MAIN.MAIN;Main.CAF:lvl18_r5zt;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.flagActive 0 +MAIN.MAIN;Main.CAF:lvl18_r5zt;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser 0 +MAIN.MAIN;Main.CAF:lvl18_r5zt;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser;Options.Applicative.Builder.Internal.mkOption 0 +MAIN.MAIN;Main.CAF:lvl18_r5zt;Main.optionsParser;Options.Applicative.Builder.help 0 +MAIN.MAIN;Main.CAF:lvl18_r5zt;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:lvl18_r5zt;Main.optionsParser;Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Main.CAF:lvl25_r5zE 0 +MAIN.MAIN;Main.CAF:lvl25_r5zE;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:lvl25_r5zE;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:lvl28_r5zH 0 +MAIN.MAIN;Main.CAF:lvl28_r5zH;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:lvl28_r5zH;Main.optionsParser;Options.Applicative.Builder.flag' 0 +MAIN.MAIN;Main.CAF:lvl28_r5zH;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.flagActive 0 +MAIN.MAIN;Main.CAF:lvl28_r5zH;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser 0 +MAIN.MAIN;Main.CAF:lvl28_r5zH;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser;Options.Applicative.Builder.Internal.mkOption 0 +MAIN.MAIN;Main.CAF:lvl28_r5zH;Main.optionsParser;Options.Applicative.Builder.help 0 +MAIN.MAIN;Main.CAF:lvl28_r5zH;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:lvl28_r5zH;Main.optionsParser;Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Main.CAF:lvl35_r5zS 0 +MAIN.MAIN;Main.CAF:lvl35_r5zS;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:lvl35_r5zS;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:lvl38_r5zV 0 +MAIN.MAIN;Main.CAF:lvl38_r5zV;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:lvl38_r5zV;Main.optionsParser;Options.Applicative.Builder.flag' 0 +MAIN.MAIN;Main.CAF:lvl38_r5zV;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.flagActive 0 +MAIN.MAIN;Main.CAF:lvl38_r5zV;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser 0 +MAIN.MAIN;Main.CAF:lvl38_r5zV;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser;Options.Applicative.Builder.Internal.mkOption 0 +MAIN.MAIN;Main.CAF:lvl38_r5zV;Main.optionsParser;Options.Applicative.Builder.help 0 +MAIN.MAIN;Main.CAF:lvl38_r5zV;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:lvl38_r5zV;Main.optionsParser;Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Main.CAF:lvl45_r5A6 0 +MAIN.MAIN;Main.CAF:lvl45_r5A6;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:lvl45_r5A6;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:lvl47_r5A9 0 +MAIN.MAIN;Main.CAF:lvl47_r5A9;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:lvl47_r5A9;Main.optionsParser;Options.Applicative.Builder.flag 0 +MAIN.MAIN;Main.CAF:lvl47_r5A9;Main.optionsParser;Options.Applicative.Builder.flag;Options.Applicative.Builder.flag' 0 +MAIN.MAIN;Main.CAF:lvl47_r5A9;Main.optionsParser;Options.Applicative.Builder.flag;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.flagActive 0 +MAIN.MAIN;Main.CAF:lvl47_r5A9;Main.optionsParser;Options.Applicative.Builder.flag;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser 0 +MAIN.MAIN;Main.CAF:lvl47_r5A9;Main.optionsParser;Options.Applicative.Builder.flag;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser;Options.Applicative.Builder.Internal.mkOption 0 +MAIN.MAIN;Main.CAF:lvl47_r5A9;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:lvl47_r5A9;Main.optionsParser;Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Main.CAF:lvl50_r5Ac 0 +MAIN.MAIN;Main.CAF:lvl50_r5Ac;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:lvl50_r5Ac;Main.optionsParser;Options.Applicative.Builder.flag 0 +MAIN.MAIN;Main.CAF:lvl6_r5zd 0 +MAIN.MAIN;Main.CAF:lvl6_r5zd;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:lvl6_r5zd;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:lvl79_r5B5 0 +MAIN.MAIN;Main.CAF:lvl79_r5B5;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:lvl79_r5B5;Main.optionsParser;Options.Applicative.Builder.strOption 0 +MAIN.MAIN;Main.CAF:lvl79_r5B5;Main.optionsParser;Options.Applicative.Builder.strOption;Options.Applicative.Builder.option 0 +MAIN.MAIN;Main.CAF:lvl79_r5B5;Main.optionsParser;Options.Applicative.Builder.strOption;Options.Applicative.Builder.option;Options.Applicative.Builder.Internal.mkParser 0 +MAIN.MAIN;Main.CAF:lvl79_r5B5;Main.optionsParser;Options.Applicative.Builder.strOption;Options.Applicative.Builder.option;Options.Applicative.Builder.metavar 0 +MAIN.MAIN;Main.CAF:lvl87_r5Bf 0 +MAIN.MAIN;Main.CAF:lvl94_r5Bp 0 +MAIN.MAIN;Main.CAF:lvl94_r5Bp;Main.main 0 +MAIN.MAIN;Main.CAF:lvl94_r5Bp;Main.main;Options.Applicative.Builder.info 0 +MAIN.MAIN;Main.CAF:lvl94_r5Bp;Main.main;Options.Applicative.Builder.info;Options.Applicative.Builder.fullDesc 0 +MAIN.MAIN;Main.CAF:lvl9_r5zg 0 +MAIN.MAIN;Main.CAF:lvl9_r5zg;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:lvl9_r5zg;Main.optionsParser;Options.Applicative.Builder.flag' 0 +MAIN.MAIN;Main.CAF:lvl9_r5zg;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.flagActive 0 +MAIN.MAIN;Main.CAF:lvl9_r5zg;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser 0 +MAIN.MAIN;Main.CAF:lvl9_r5zg;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser;Options.Applicative.Builder.Internal.mkOption 0 +MAIN.MAIN;Main.CAF:lvl9_r5zg;Main.optionsParser;Options.Applicative.Builder.help 0 +MAIN.MAIN;Main.CAF:lvl9_r5zg;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:lvl9_r5zg;Main.optionsParser;Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Main.CAF:m1_r5Am 0 +MAIN.MAIN;Main.CAF:m1_r5Am;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:m1_r5Am;Main.optionsParser;Options.Applicative.Builder.help 0 +MAIN.MAIN;Main.CAF:m1_r5Am;Main.optionsParser;Options.Applicative.Builder.metavar 0 +MAIN.MAIN;Main.CAF:m2_r5AM 0 +MAIN.MAIN;Main.CAF:m2_r5AM;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:m2_r5AM;Main.optionsParser;Options.Applicative.Builder.help 0 +MAIN.MAIN;Main.CAF:m2_r5AM;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:m2_r5AM;Main.optionsParser;Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Main.CAF:m2_r5AM;Main.optionsParser;Options.Applicative.Builder.metavar 0 +MAIN.MAIN;Main.CAF:m2_r5AM;Main.optionsParser;Options.Applicative.Builder.short 0 +MAIN.MAIN;Main.CAF:m2_r5AM;Main.optionsParser;Options.Applicative.Builder.short;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Main.CAF:m3_r5B4 0 +MAIN.MAIN;Main.CAF:m3_r5B4;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:m3_r5B4;Main.optionsParser;Options.Applicative.Builder.help 0 +MAIN.MAIN;Main.CAF:m3_r5B4;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:m3_r5B4;Main.optionsParser;Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Main.CAF:m3_r5B4;Main.optionsParser;Options.Applicative.Builder.metavar 0 +MAIN.MAIN;Main.CAF:m_r5A8 0 +MAIN.MAIN;Main.CAF:m_r5A8;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:m_r5A8;Main.optionsParser;Options.Applicative.Builder.help 0 +MAIN.MAIN;Main.CAF:m_r5A8;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:m_r5A8;Main.optionsParser;Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Main.CAF:main1 0 +MAIN.MAIN;Main.CAF:main1;Main.main 0 +MAIN.MAIN;Main.CAF:optionsParser10_r5B7 0 +MAIN.MAIN;Main.CAF:optionsParser10_r5B7;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:optionsParser10_r5B7;Main.optionsParser;Options.Applicative.Types.fromM 0 +MAIN.MAIN;Main.CAF:optionsParser10_r5B7;Main.optionsParser;Options.Applicative.Types.manyM 0 +MAIN.MAIN;Main.CAF:optionsParser1_r5Ae 0 +MAIN.MAIN;Main.CAF:optionsParser1_r5Ae;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:optionsParser2_r5Ao 0 +MAIN.MAIN;Main.CAF:optionsParser2_r5Ao;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:optionsParser2_r5Ao;Main.optionsParser;Options.Applicative.Builder.strArgument 0 +MAIN.MAIN;Main.CAF:optionsParser2_r5Ao;Main.optionsParser;Options.Applicative.Builder.strArgument;Options.Applicative.Builder.argument 0 +MAIN.MAIN;Main.CAF:optionsParser2_r5Ao;Main.optionsParser;Options.Applicative.Builder.strArgument;Options.Applicative.Builder.argument;Options.Applicative.Builder.Internal.mkParser 0 +MAIN.MAIN;Main.CAF:optionsParser2_r5Ao;Main.optionsParser;Options.Applicative.Builder.strArgument;Options.Applicative.Builder.argument;Options.Applicative.Builder.Internal.mkParser;Options.Applicative.Builder.Internal.mkOption 0 +MAIN.MAIN;Main.CAF:optionsParser2_r5Ao;Main.optionsParser;Options.Applicative.Builder.strArgument;Options.Applicative.Builder.str 0 +MAIN.MAIN;Main.CAF:optionsParser7_r5AN 0 +MAIN.MAIN;Main.CAF:optionsParser7_r5AN;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:optionsParser7_r5AN;Main.optionsParser;Options.Applicative.Builder.strOption 0 +MAIN.MAIN;Main.CAF:optionsParser7_r5AN;Main.optionsParser;Options.Applicative.Builder.strOption;Options.Applicative.Builder.option 0 +MAIN.MAIN;Main.CAF:optionsParser7_r5AN;Main.optionsParser;Options.Applicative.Builder.strOption;Options.Applicative.Builder.option;Options.Applicative.Builder.Internal.mkParser 0 +MAIN.MAIN;Main.CAF:optionsParser7_r5AN;Main.optionsParser;Options.Applicative.Builder.strOption;Options.Applicative.Builder.option;Options.Applicative.Builder.metavar 0 +MAIN.MAIN;Main.CAF:optionsParser_r33i 0 +MAIN.MAIN;Main.CAF:optionsParser_r33i;Main.optionsParser 0 +MAIN.MAIN;Main.main 304 +MAIN.MAIN;Main.main;Main.checkNames 0 +MAIN.MAIN;Main.main;Main.generateFrames 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.addUnknown 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.addUnknown;Main.addUnknown.\ 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.addUnknown;Main.addUnknown.\;Main.addUnknown.\.unknown 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.(...) 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.(...);ProfFile.lChildren 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.childrenEntries 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.childrenFrames 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.entries 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.entries;Main.generateFrames.individualMeasure 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.entries;Main.generateFrames.individualMeasure;ProfFile.lIndividualTime 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.entries;Main.generateFrames.individualMeasure;ProfFile.lIndividualTime;ProfFile.lTime 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.entries;Main.generateFrames.individualMeasure;ProfFile.lIndividualTime;ProfFile.tIndividual 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.entries;Main.normalize 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.entries;Main.optionsReportType 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.frame 174 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.restEntries 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.restFrames 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.symbol 43 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.symbol;ProfFile.lCostCentre 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.symbol;ProfFile.lModule 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.individualMeasure 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.individualMeasure;Main.optionsReportType 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.optionsReportType 0 +MAIN.MAIN;Main.main;Main.optionsProfFile 0 +MAIN.MAIN;Main.main;Main.optionsReportType 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.BashCompletion.bashCompletionParser 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.evalParser 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.evalParser;Main.optionsParser 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.evalParser;Main.optionsParser;Options.Applicative.Types.manyM 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.evalParser;Main.optionsParser;Options.Applicative.Types.manyM;Options.Applicative.Types.oneM 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.evalParser;Main.optionsParser;Options.Applicative.Types.manyM;Options.Applicative.Types.runParserM 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.BashCompletion.bashCompletionParser 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Types.fromM 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Types.fromM;Options.Applicative.Types.manyM 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Types.fromM;Options.Applicative.Types.manyM;Options.Applicative.Types.oneM 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Types.fromM;Options.Applicative.Types.manyM;Options.Applicative.Types.runParserM 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Common.evalParser 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal. 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.;Options.Applicative.Internal.cut 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.;Options.Applicative.Internal.runReadM 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.;Options.Applicative.Internal.runReadM;Options.Applicative.Internal.hoistEither 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.cut 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.disamb 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.disamb;Options.Applicative.Internal.runListT 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.disamb;Options.Applicative.Internal.takeListT 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.runReadM 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.runReadM;Options.Applicative.Internal.hoistEither 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.runReadM;Options.Applicative.Types.crReader 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.runReadM;Options.Applicative.Types.crReader;Main.optionsParser 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.runReadM;Options.Applicative.Types.crReader;Main.optionsParser;Options.Applicative.Builder.strArgument 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.runReadM;Options.Applicative.Types.crReader;Main.optionsParser;Options.Applicative.Builder.strArgument;Options.Applicative.Builder.str 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Types.optMain 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Types.prefDisambiguate 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Types.infoParser 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Types.infoPolicy 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Types.infoParser 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.handleParseResult 0 +MAIN.MAIN;Main.main;ProfFile.parse 261 +MAIN.MAIN;Main.main;ProfFile.parse;ProfFile.findStart 0 +MAIN.MAIN;Main.main;ProfFile.parse;ProfFile.processLines 0 +MAIN.MAIN;Main.main;ProfFile.parse;ProfFile.processLines;ProfFile.processLines.go 0 +MAIN.MAIN;Main.main;ProfFile.parse;ProfFile.processLines;ProfFile.processLines.go;ProfFile.parseLine 0 +MAIN.MAIN;Main.main;ProfFile.parse;ProfFile.processLines;ProfFile.processLines.go;ProfFile.parseLine;ProfFile.parseLine.parse' 0 +MAIN.MAIN;Main.main;ProfFile.parse;ProfFile.processLines;ProfFile.processLines.go;ProfFile.parseLine;ProfFile.parseLine.parse';ProfFile.parseLine.readEither' 217 +MAIN.MAIN;Main.main;ProfFile.parse;ProfFile.processLines;ProfFile.processLines.go;ProfFile.processLines.go.(...) 0 +MAIN.MAIN;Main.main;ProfFile.parse;ProfFile.processLines;ProfFile.processLines.go;ProfFile.processLines.go.depth 0 +MAIN.MAIN;Main.main;ProfFile.parse;ProfFile.processLines;ProfFile.processLines.go;ProfFile.processLines.go.rest 0 +MAIN.MAIN;Main.main;ProfFile.parse;ProfFile.processLines;ProfFile.processLines.go;ProfFile.processLines.go.spaces 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.flag' 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.flagActive 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser;Options.Applicative.Builder.Internal.mkOption 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.long 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.option 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.option;Options.Applicative.Builder.Internal.mkParser 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.option;Options.Applicative.Builder.Internal.mkParser;Options.Applicative.Builder.Internal.mkOption 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.option;Options.Applicative.Builder.metavar 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.strOption 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.strOption;Options.Applicative.Builder.option 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.strOption;Options.Applicative.Builder.option;Options.Applicative.Builder.Internal.mkParser 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.strOption;Options.Applicative.Builder.option;Options.Applicative.Builder.Internal.mkParser;Options.Applicative.Builder.Internal.mkOption 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.strOption;Options.Applicative.Builder.option;Options.Applicative.Builder.metavar 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.value 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Types.fromM 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Types.fromM;Options.Applicative.Types.manyM 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Types.manyM 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Types.manyM;Options.Applicative.Types.oneM 0 +MAIN.MAIN;Options.Applicative.Builder.CAF 0 +MAIN.MAIN;Options.Applicative.Builder.CAF;Options.Applicative.Builder.defaultPrefs 0 +MAIN.MAIN;Options.Applicative.Builder.CAF;Options.Applicative.Builder.defaultPrefs;Options.Applicative.Builder.idm 0 +MAIN.MAIN;Options.Applicative.Builder.CAF;Options.Applicative.Builder.defaultPrefs;Options.Applicative.Builder.prefs 0 +MAIN.MAIN;Options.Applicative.Builder.CAF;Options.Applicative.Builder.fullDesc 0 +MAIN.MAIN;Options.Applicative.Builder.CAF;Options.Applicative.Builder.hidden 0 +MAIN.MAIN;Options.Applicative.Builder.CAF;Options.Applicative.Builder.option 0 +MAIN.MAIN;Options.Applicative.Builder.CAF;Options.Applicative.Builder.option;Options.Applicative.Builder.metavar 0 +MAIN.MAIN;Options.Applicative.Builder.Internal.CAF 0 +MAIN.MAIN;Options.Applicative.Builder.Internal.CAF;Options.Applicative.Builder.Internal.internal 0 +MAIN.MAIN;Options.Applicative.Builder.Internal.CAF;Options.Applicative.Builder.Internal.noGlobal 0 +MAIN.MAIN;Options.Applicative.Builder.Internal.CAF;Options.Applicative.Builder.Internal.optionMod 0 +MAIN.MAIN;Options.Applicative.Common.CAF 0 +MAIN.MAIN;Options.Applicative.Common.CAF;Options.Applicative.Common.liftOpt 0 +MAIN.MAIN;Options.Applicative.Extra.CAF 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.execParser 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.execParserPure 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.disamb 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.disamb;Options.Applicative.Internal.takeListT 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Builder.help 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Builder.long 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Builder.short 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Builder.short;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Extra.helperWith 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Extra.helperWith;Options.Applicative.Builder.metavar 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Extra.helperWith;Options.Applicative.Builder.noArgError 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Extra.helperWith;Options.Applicative.Builder.option 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Extra.helperWith;Options.Applicative.Builder.option;Options.Applicative.Builder.Internal.mkParser 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Extra.helperWith;Options.Applicative.Builder.option;Options.Applicative.Builder.Internal.mkParser;Options.Applicative.Builder.Internal.mkOption 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Extra.helperWith;Options.Applicative.Builder.option;Options.Applicative.Builder.metavar 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Extra.helperWith;Options.Applicative.Builder.value 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helperWith 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helperWith;Options.Applicative.Builder.metavar 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helperWith;Options.Applicative.Builder.noArgError 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helperWith;Options.Applicative.Builder.noArgError;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Options.Applicative.Types.CAF 0 +MAIN.MAIN;Options.Applicative.Types.CAF;Options.Applicative.Types.readerAsk 0 +MAIN.MAIN;ProfFile.CAF:firstLineIncludesSources2_r3VA 0 +MAIN.MAIN;ProfFile.CAF:firstLineIncludesSources_r2x3 0 +MAIN.MAIN;ProfFile.CAF:firstLineIncludesSources_r2x3;ProfFile.firstLineIncludesSources 0 +MAIN.MAIN;ProfFile.CAF:firstLineNoSources10_r3Vm 0 +MAIN.MAIN;ProfFile.CAF:firstLineNoSources12_r3Vo 0 +MAIN.MAIN;ProfFile.CAF:firstLineNoSources14_r3Vq 0 +MAIN.MAIN;ProfFile.CAF:firstLineNoSources2_r3Ve 0 +MAIN.MAIN;ProfFile.CAF:firstLineNoSources4_r3Vg 0 +MAIN.MAIN;ProfFile.CAF:firstLineNoSources6_r3Vi 0 +MAIN.MAIN;ProfFile.CAF:firstLineNoSources8_r3Vk 0 +MAIN.MAIN;ProfFile.CAF:firstLineNoSources_r2x2 0 +MAIN.MAIN;ProfFile.CAF:firstLineNoSources_r2x2;ProfFile.firstLineNoSources 0 +MAIN.MAIN;ProfFile.CAF:lIndividualTime 0 +MAIN.MAIN;ProfFile.CAF:lIndividualTime;ProfFile.lIndividualTime 0 +MAIN.MAIN;ProfFile.CAF:lvl13_r3Wl 0 +MAIN.MAIN;ProfFile.CAF:lvl13_r3Wl;ProfFile.parseLine.readEither' 0 +MAIN.MAIN;ProfFile.CAF:lvl14_r3Wn 0 +MAIN.MAIN;ProfFile.CAF:lvl14_r3Wn;ProfFile.parseLine.readEither' 0 diff --git a/tests/data/collapse-ghcprof/results/ticks_bytes.txt b/tests/data/collapse-ghcprof/results/ticks_bytes.txt new file mode 100644 index 00000000..22deff34 --- /dev/null +++ b/tests/data/collapse-ghcprof/results/ticks_bytes.txt @@ -0,0 +1,299 @@ +MAIN.MAIN 728 +MAIN.MAIN;GHC.Conc.Signal.CAF 640 +MAIN.MAIN;GHC.IO.Encoding.CAF 2976 +MAIN.MAIN;GHC.IO.Encoding.Iconv.CAF 200 +MAIN.MAIN;GHC.IO.Exception.CAF 496 +MAIN.MAIN;GHC.IO.FD.CAF 16 +MAIN.MAIN;GHC.IO.Handle.FD.CAF 34704 +MAIN.MAIN;GHC.IO.Handle.Internals.CAF 24 +MAIN.MAIN;GHC.Read.CAF 96 +MAIN.MAIN;Main.CAF:ds_r5B6 0 +MAIN.MAIN;Main.CAF:ds_r5B6;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:ds_r5B6;Main.optionsParser;Options.Applicative.Types.manyM 176 +MAIN.MAIN;Main.CAF:ds_r5B6;Main.optionsParser;Options.Applicative.Types.manyM;Options.Applicative.Types.oneM 0 +MAIN.MAIN;Main.CAF:lvl15_r5zq 0 +MAIN.MAIN;Main.CAF:lvl15_r5zq;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:lvl15_r5zq;Main.optionsParser;Options.Applicative.Builder.long 16 +MAIN.MAIN;Main.CAF:lvl18_r5zt 0 +MAIN.MAIN;Main.CAF:lvl18_r5zt;Main.optionsParser 64 +MAIN.MAIN;Main.CAF:lvl18_r5zt;Main.optionsParser;Options.Applicative.Builder.flag' 120 +MAIN.MAIN;Main.CAF:lvl18_r5zt;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.flagActive 0 +MAIN.MAIN;Main.CAF:lvl18_r5zt;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser 200 +MAIN.MAIN;Main.CAF:lvl18_r5zt;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser;Options.Applicative.Builder.Internal.mkOption 0 +MAIN.MAIN;Main.CAF:lvl18_r5zt;Main.optionsParser;Options.Applicative.Builder.help 56 +MAIN.MAIN;Main.CAF:lvl18_r5zt;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:lvl18_r5zt;Main.optionsParser;Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 72 +MAIN.MAIN;Main.CAF:lvl25_r5zE 0 +MAIN.MAIN;Main.CAF:lvl25_r5zE;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:lvl25_r5zE;Main.optionsParser;Options.Applicative.Builder.long 16 +MAIN.MAIN;Main.CAF:lvl28_r5zH 0 +MAIN.MAIN;Main.CAF:lvl28_r5zH;Main.optionsParser 64 +MAIN.MAIN;Main.CAF:lvl28_r5zH;Main.optionsParser;Options.Applicative.Builder.flag' 120 +MAIN.MAIN;Main.CAF:lvl28_r5zH;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.flagActive 0 +MAIN.MAIN;Main.CAF:lvl28_r5zH;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser 200 +MAIN.MAIN;Main.CAF:lvl28_r5zH;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser;Options.Applicative.Builder.Internal.mkOption 0 +MAIN.MAIN;Main.CAF:lvl28_r5zH;Main.optionsParser;Options.Applicative.Builder.help 56 +MAIN.MAIN;Main.CAF:lvl28_r5zH;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:lvl28_r5zH;Main.optionsParser;Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 72 +MAIN.MAIN;Main.CAF:lvl35_r5zS 0 +MAIN.MAIN;Main.CAF:lvl35_r5zS;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:lvl35_r5zS;Main.optionsParser;Options.Applicative.Builder.long 16 +MAIN.MAIN;Main.CAF:lvl38_r5zV 0 +MAIN.MAIN;Main.CAF:lvl38_r5zV;Main.optionsParser 64 +MAIN.MAIN;Main.CAF:lvl38_r5zV;Main.optionsParser;Options.Applicative.Builder.flag' 120 +MAIN.MAIN;Main.CAF:lvl38_r5zV;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.flagActive 0 +MAIN.MAIN;Main.CAF:lvl38_r5zV;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser 200 +MAIN.MAIN;Main.CAF:lvl38_r5zV;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser;Options.Applicative.Builder.Internal.mkOption 0 +MAIN.MAIN;Main.CAF:lvl38_r5zV;Main.optionsParser;Options.Applicative.Builder.help 56 +MAIN.MAIN;Main.CAF:lvl38_r5zV;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:lvl38_r5zV;Main.optionsParser;Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 72 +MAIN.MAIN;Main.CAF:lvl45_r5A6 0 +MAIN.MAIN;Main.CAF:lvl45_r5A6;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:lvl45_r5A6;Main.optionsParser;Options.Applicative.Builder.long 16 +MAIN.MAIN;Main.CAF:lvl47_r5A9 0 +MAIN.MAIN;Main.CAF:lvl47_r5A9;Main.optionsParser 48 +MAIN.MAIN;Main.CAF:lvl47_r5A9;Main.optionsParser;Options.Applicative.Builder.flag 16 +MAIN.MAIN;Main.CAF:lvl47_r5A9;Main.optionsParser;Options.Applicative.Builder.flag;Options.Applicative.Builder.flag' 104 +MAIN.MAIN;Main.CAF:lvl47_r5A9;Main.optionsParser;Options.Applicative.Builder.flag;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.flagActive 0 +MAIN.MAIN;Main.CAF:lvl47_r5A9;Main.optionsParser;Options.Applicative.Builder.flag;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser 176 +MAIN.MAIN;Main.CAF:lvl47_r5A9;Main.optionsParser;Options.Applicative.Builder.flag;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser;Options.Applicative.Builder.Internal.mkOption 0 +MAIN.MAIN;Main.CAF:lvl47_r5A9;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:lvl47_r5A9;Main.optionsParser;Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 72 +MAIN.MAIN;Main.CAF:lvl50_r5Ac 0 +MAIN.MAIN;Main.CAF:lvl50_r5Ac;Main.optionsParser 24 +MAIN.MAIN;Main.CAF:lvl50_r5Ac;Main.optionsParser;Options.Applicative.Builder.flag 0 +MAIN.MAIN;Main.CAF:lvl6_r5zd 0 +MAIN.MAIN;Main.CAF:lvl6_r5zd;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:lvl6_r5zd;Main.optionsParser;Options.Applicative.Builder.long 16 +MAIN.MAIN;Main.CAF:lvl79_r5B5 0 +MAIN.MAIN;Main.CAF:lvl79_r5B5;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:lvl79_r5B5;Main.optionsParser;Options.Applicative.Builder.strOption 32 +MAIN.MAIN;Main.CAF:lvl79_r5B5;Main.optionsParser;Options.Applicative.Builder.strOption;Options.Applicative.Builder.option 224 +MAIN.MAIN;Main.CAF:lvl79_r5B5;Main.optionsParser;Options.Applicative.Builder.strOption;Options.Applicative.Builder.option;Options.Applicative.Builder.Internal.mkParser 128 +MAIN.MAIN;Main.CAF:lvl79_r5B5;Main.optionsParser;Options.Applicative.Builder.strOption;Options.Applicative.Builder.option;Options.Applicative.Builder.metavar 0 +MAIN.MAIN;Main.CAF:lvl87_r5Bf 64 +MAIN.MAIN;Main.CAF:lvl94_r5Bp 0 +MAIN.MAIN;Main.CAF:lvl94_r5Bp;Main.main 0 +MAIN.MAIN;Main.CAF:lvl94_r5Bp;Main.main;Options.Applicative.Builder.info 16 +MAIN.MAIN;Main.CAF:lvl94_r5Bp;Main.main;Options.Applicative.Builder.info;Options.Applicative.Builder.fullDesc 64 +MAIN.MAIN;Main.CAF:lvl9_r5zg 0 +MAIN.MAIN;Main.CAF:lvl9_r5zg;Main.optionsParser 64 +MAIN.MAIN;Main.CAF:lvl9_r5zg;Main.optionsParser;Options.Applicative.Builder.flag' 120 +MAIN.MAIN;Main.CAF:lvl9_r5zg;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.flagActive 0 +MAIN.MAIN;Main.CAF:lvl9_r5zg;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser 200 +MAIN.MAIN;Main.CAF:lvl9_r5zg;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser;Options.Applicative.Builder.Internal.mkOption 0 +MAIN.MAIN;Main.CAF:lvl9_r5zg;Main.optionsParser;Options.Applicative.Builder.help 56 +MAIN.MAIN;Main.CAF:lvl9_r5zg;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:lvl9_r5zg;Main.optionsParser;Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 72 +MAIN.MAIN;Main.CAF:m1_r5Am 0 +MAIN.MAIN;Main.CAF:m1_r5Am;Main.optionsParser 200 +MAIN.MAIN;Main.CAF:m1_r5Am;Main.optionsParser;Options.Applicative.Builder.help 56 +MAIN.MAIN;Main.CAF:m1_r5Am;Main.optionsParser;Options.Applicative.Builder.metavar 56 +MAIN.MAIN;Main.CAF:m2_r5AM 0 +MAIN.MAIN;Main.CAF:m2_r5AM;Main.optionsParser 280 +MAIN.MAIN;Main.CAF:m2_r5AM;Main.optionsParser;Options.Applicative.Builder.help 56 +MAIN.MAIN;Main.CAF:m2_r5AM;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:m2_r5AM;Main.optionsParser;Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Main.CAF:m2_r5AM;Main.optionsParser;Options.Applicative.Builder.metavar 56 +MAIN.MAIN;Main.CAF:m2_r5AM;Main.optionsParser;Options.Applicative.Builder.short 0 +MAIN.MAIN;Main.CAF:m2_r5AM;Main.optionsParser;Options.Applicative.Builder.short;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Main.CAF:m3_r5B4 0 +MAIN.MAIN;Main.CAF:m3_r5B4;Main.optionsParser 240 +MAIN.MAIN;Main.CAF:m3_r5B4;Main.optionsParser;Options.Applicative.Builder.help 56 +MAIN.MAIN;Main.CAF:m3_r5B4;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:m3_r5B4;Main.optionsParser;Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Main.CAF:m3_r5B4;Main.optionsParser;Options.Applicative.Builder.metavar 56 +MAIN.MAIN;Main.CAF:m_r5A8 0 +MAIN.MAIN;Main.CAF:m_r5A8;Main.optionsParser 200 +MAIN.MAIN;Main.CAF:m_r5A8;Main.optionsParser;Options.Applicative.Builder.help 56 +MAIN.MAIN;Main.CAF:m_r5A8;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:m_r5A8;Main.optionsParser;Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Main.CAF:main1 16 +MAIN.MAIN;Main.CAF:main1;Main.main 0 +MAIN.MAIN;Main.CAF:optionsParser10_r5B7 0 +MAIN.MAIN;Main.CAF:optionsParser10_r5B7;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:optionsParser10_r5B7;Main.optionsParser;Options.Applicative.Types.fromM 16 +MAIN.MAIN;Main.CAF:optionsParser10_r5B7;Main.optionsParser;Options.Applicative.Types.manyM 136 +MAIN.MAIN;Main.CAF:optionsParser1_r5Ae 0 +MAIN.MAIN;Main.CAF:optionsParser1_r5Ae;Main.optionsParser 1464 +MAIN.MAIN;Main.CAF:optionsParser2_r5Ao 0 +MAIN.MAIN;Main.CAF:optionsParser2_r5Ao;Main.optionsParser 200 +MAIN.MAIN;Main.CAF:optionsParser2_r5Ao;Main.optionsParser;Options.Applicative.Builder.strArgument 32 +MAIN.MAIN;Main.CAF:optionsParser2_r5Ao;Main.optionsParser;Options.Applicative.Builder.strArgument;Options.Applicative.Builder.argument 136 +MAIN.MAIN;Main.CAF:optionsParser2_r5Ao;Main.optionsParser;Options.Applicative.Builder.strArgument;Options.Applicative.Builder.argument;Options.Applicative.Builder.Internal.mkParser 200 +MAIN.MAIN;Main.CAF:optionsParser2_r5Ao;Main.optionsParser;Options.Applicative.Builder.strArgument;Options.Applicative.Builder.argument;Options.Applicative.Builder.Internal.mkParser;Options.Applicative.Builder.Internal.mkOption 0 +MAIN.MAIN;Main.CAF:optionsParser2_r5Ao;Main.optionsParser;Options.Applicative.Builder.strArgument;Options.Applicative.Builder.str 0 +MAIN.MAIN;Main.CAF:optionsParser7_r5AN 0 +MAIN.MAIN;Main.CAF:optionsParser7_r5AN;Main.optionsParser 48 +MAIN.MAIN;Main.CAF:optionsParser7_r5AN;Main.optionsParser;Options.Applicative.Builder.strOption 32 +MAIN.MAIN;Main.CAF:optionsParser7_r5AN;Main.optionsParser;Options.Applicative.Builder.strOption;Options.Applicative.Builder.option 224 +MAIN.MAIN;Main.CAF:optionsParser7_r5AN;Main.optionsParser;Options.Applicative.Builder.strOption;Options.Applicative.Builder.option;Options.Applicative.Builder.Internal.mkParser 128 +MAIN.MAIN;Main.CAF:optionsParser7_r5AN;Main.optionsParser;Options.Applicative.Builder.strOption;Options.Applicative.Builder.option;Options.Applicative.Builder.metavar 0 +MAIN.MAIN;Main.CAF:optionsParser_r33i 24 +MAIN.MAIN;Main.CAF:optionsParser_r33i;Main.optionsParser 0 +MAIN.MAIN;Main.main 5617272 +MAIN.MAIN;Main.main;Main.checkNames 0 +MAIN.MAIN;Main.main;Main.generateFrames 112 +MAIN.MAIN;Main.main;Main.generateFrames;Main.addUnknown 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.addUnknown;Main.addUnknown.\ 728 +MAIN.MAIN;Main.main;Main.generateFrames;Main.addUnknown;Main.addUnknown.\;Main.addUnknown.\.unknown 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go 525080 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.(...) 50760 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.(...);ProfFile.lChildren 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.childrenEntries 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.childrenFrames 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.entries 22560 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.entries;Main.generateFrames.individualMeasure 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.entries;Main.generateFrames.individualMeasure;ProfFile.lIndividualTime 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.entries;Main.generateFrames.individualMeasure;ProfFile.lIndividualTime;ProfFile.lTime 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.entries;Main.generateFrames.individualMeasure;ProfFile.lIndividualTime;ProfFile.tIndividual 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.entries;Main.normalize 11280 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.entries;Main.optionsReportType 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.frame 16391432 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.restEntries 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.restFrames 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.symbol 699032 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.symbol;ProfFile.lCostCentre 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.symbol;ProfFile.lModule 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.individualMeasure 16 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.individualMeasure;Main.optionsReportType 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.optionsReportType 0 +MAIN.MAIN;Main.main;Main.optionsProfFile 0 +MAIN.MAIN;Main.main;Main.optionsReportType 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser 24 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser 1280 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure 16 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP 2304 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.BashCompletion.bashCompletionParser 1160 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo 136 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully 184 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser 1440 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.evalParser 360 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.evalParser;Main.optionsParser 40 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.evalParser;Main.optionsParser;Options.Applicative.Types.manyM 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.evalParser;Main.optionsParser;Options.Applicative.Types.manyM;Options.Applicative.Types.oneM 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.evalParser;Main.optionsParser;Options.Applicative.Types.manyM;Options.Applicative.Types.runParserM 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep 30432 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.BashCompletion.bashCompletionParser 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Types.fromM 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Types.fromM;Options.Applicative.Types.manyM 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Types.fromM;Options.Applicative.Types.manyM;Options.Applicative.Types.oneM 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Types.fromM;Options.Applicative.Types.manyM;Options.Applicative.Types.runParserM 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Common.evalParser 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal. 74688 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.;Options.Applicative.Internal.cut 480 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.;Options.Applicative.Internal.runReadM 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.;Options.Applicative.Internal.runReadM;Options.Applicative.Internal.hoistEither 80 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.cut 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.disamb 296 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.disamb;Options.Applicative.Internal.runListT 360 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.disamb;Options.Applicative.Internal.takeListT 160 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.runReadM 80 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.runReadM;Options.Applicative.Internal.hoistEither 104 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.runReadM;Options.Applicative.Types.crReader 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.runReadM;Options.Applicative.Types.crReader;Main.optionsParser 64 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.runReadM;Options.Applicative.Types.crReader;Main.optionsParser;Options.Applicative.Builder.strArgument 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.runReadM;Options.Applicative.Types.crReader;Main.optionsParser;Options.Applicative.Builder.strArgument;Options.Applicative.Builder.str 32 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Types.optMain 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Types.prefDisambiguate 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Types.infoParser 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Types.infoPolicy 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Types.infoParser 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.handleParseResult 16 +MAIN.MAIN;Main.main;ProfFile.parse 13979640 +MAIN.MAIN;Main.main;ProfFile.parse;ProfFile.findStart 23160 +MAIN.MAIN;Main.main;ProfFile.parse;ProfFile.processLines 32 +MAIN.MAIN;Main.main;ProfFile.parse;ProfFile.processLines;ProfFile.processLines.go 186184 +MAIN.MAIN;Main.main;ProfFile.parse;ProfFile.processLines;ProfFile.processLines.go;ProfFile.parseLine 4595648 +MAIN.MAIN;Main.main;ProfFile.parse;ProfFile.processLines;ProfFile.processLines.go;ProfFile.parseLine;ProfFile.parseLine.parse' 141000 +MAIN.MAIN;Main.main;ProfFile.parse;ProfFile.processLines;ProfFile.processLines.go;ProfFile.parseLine;ProfFile.parseLine.parse';ProfFile.parseLine.readEither' 15935424 +MAIN.MAIN;Main.main;ProfFile.parse;ProfFile.processLines;ProfFile.processLines.go;ProfFile.processLines.go.(...) 1191040 +MAIN.MAIN;Main.main;ProfFile.parse;ProfFile.processLines;ProfFile.processLines.go;ProfFile.processLines.go.depth 0 +MAIN.MAIN;Main.main;ProfFile.parse;ProfFile.processLines;ProfFile.processLines.go;ProfFile.processLines.go.rest 0 +MAIN.MAIN;Main.main;ProfFile.parse;ProfFile.processLines;ProfFile.processLines.go;ProfFile.processLines.go.spaces 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser 1624 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.flag' 136 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.flagActive 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser 216 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser;Options.Applicative.Builder.Internal.mkOption 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.long 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 72 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.long 16 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.option 688 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.option;Options.Applicative.Builder.Internal.mkParser 680 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.option;Options.Applicative.Builder.Internal.mkParser;Options.Applicative.Builder.Internal.mkOption 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.option;Options.Applicative.Builder.metavar 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.strOption 128 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.strOption;Options.Applicative.Builder.option 896 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.strOption;Options.Applicative.Builder.option;Options.Applicative.Builder.Internal.mkParser 800 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.strOption;Options.Applicative.Builder.option;Options.Applicative.Builder.Internal.mkParser;Options.Applicative.Builder.Internal.mkOption 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.strOption;Options.Applicative.Builder.option;Options.Applicative.Builder.metavar 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.value 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Types.fromM 16 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Types.fromM;Options.Applicative.Types.manyM 136 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Types.manyM 296 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Types.manyM;Options.Applicative.Types.oneM 0 +MAIN.MAIN;Options.Applicative.Builder.CAF 16 +MAIN.MAIN;Options.Applicative.Builder.CAF;Options.Applicative.Builder.defaultPrefs 0 +MAIN.MAIN;Options.Applicative.Builder.CAF;Options.Applicative.Builder.defaultPrefs;Options.Applicative.Builder.idm 0 +MAIN.MAIN;Options.Applicative.Builder.CAF;Options.Applicative.Builder.defaultPrefs;Options.Applicative.Builder.prefs 16 +MAIN.MAIN;Options.Applicative.Builder.CAF;Options.Applicative.Builder.fullDesc 0 +MAIN.MAIN;Options.Applicative.Builder.CAF;Options.Applicative.Builder.hidden 56 +MAIN.MAIN;Options.Applicative.Builder.CAF;Options.Applicative.Builder.option 0 +MAIN.MAIN;Options.Applicative.Builder.CAF;Options.Applicative.Builder.option;Options.Applicative.Builder.metavar 56 +MAIN.MAIN;Options.Applicative.Builder.Internal.CAF 16 +MAIN.MAIN;Options.Applicative.Builder.Internal.CAF;Options.Applicative.Builder.Internal.internal 72 +MAIN.MAIN;Options.Applicative.Builder.Internal.CAF;Options.Applicative.Builder.Internal.noGlobal 56 +MAIN.MAIN;Options.Applicative.Builder.Internal.CAF;Options.Applicative.Builder.Internal.optionMod 0 +MAIN.MAIN;Options.Applicative.Common.CAF 80 +MAIN.MAIN;Options.Applicative.Common.CAF;Options.Applicative.Common.liftOpt 0 +MAIN.MAIN;Options.Applicative.Extra.CAF 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.execParser 32 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.execParserPure 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo 128 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully 200 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser 496 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep 288 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.disamb 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.disamb;Options.Applicative.Internal.takeListT 152 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper 256 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Builder.help 56 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Builder.long 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Builder.short 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Builder.short;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Extra.helperWith 216 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Extra.helperWith;Options.Applicative.Builder.metavar 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Extra.helperWith;Options.Applicative.Builder.noArgError 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Extra.helperWith;Options.Applicative.Builder.option 224 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Extra.helperWith;Options.Applicative.Builder.option;Options.Applicative.Builder.Internal.mkParser 240 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Extra.helperWith;Options.Applicative.Builder.option;Options.Applicative.Builder.Internal.mkParser;Options.Applicative.Builder.Internal.mkOption 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Extra.helperWith;Options.Applicative.Builder.option;Options.Applicative.Builder.metavar 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Extra.helperWith;Options.Applicative.Builder.value 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helperWith 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helperWith;Options.Applicative.Builder.metavar 56 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helperWith;Options.Applicative.Builder.noArgError 32 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helperWith;Options.Applicative.Builder.noArgError;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Options.Applicative.Types.CAF 16 +MAIN.MAIN;Options.Applicative.Types.CAF;Options.Applicative.Types.readerAsk 0 +MAIN.MAIN;ProfFile.CAF:firstLineIncludesSources2_r3VA 64 +MAIN.MAIN;ProfFile.CAF:firstLineIncludesSources_r2x3 24 +MAIN.MAIN;ProfFile.CAF:firstLineIncludesSources_r2x3;ProfFile.firstLineIncludesSources 0 +MAIN.MAIN;ProfFile.CAF:firstLineNoSources10_r3Vm 448 +MAIN.MAIN;ProfFile.CAF:firstLineNoSources12_r3Vo 320 +MAIN.MAIN;ProfFile.CAF:firstLineNoSources14_r3Vq 384 +MAIN.MAIN;ProfFile.CAF:firstLineNoSources2_r3Ve 256 +MAIN.MAIN;ProfFile.CAF:firstLineNoSources4_r3Vg 384 +MAIN.MAIN;ProfFile.CAF:firstLineNoSources6_r3Vi 384 +MAIN.MAIN;ProfFile.CAF:firstLineNoSources8_r3Vk 192 +MAIN.MAIN;ProfFile.CAF:firstLineNoSources_r2x2 24 +MAIN.MAIN;ProfFile.CAF:firstLineNoSources_r2x2;ProfFile.firstLineNoSources 0 +MAIN.MAIN;ProfFile.CAF:lIndividualTime 16 +MAIN.MAIN;ProfFile.CAF:lIndividualTime;ProfFile.lIndividualTime 0 +MAIN.MAIN;ProfFile.CAF:lvl13_r3Wl 0 +MAIN.MAIN;ProfFile.CAF:lvl13_r3Wl;ProfFile.parseLine.readEither' 104 +MAIN.MAIN;ProfFile.CAF:lvl14_r3Wn 0 +MAIN.MAIN;ProfFile.CAF:lvl14_r3Wn;ProfFile.parseLine.readEither' 104 diff --git a/tests/data/collapse-ghcprof/results/ticks_ticks.txt b/tests/data/collapse-ghcprof/results/ticks_ticks.txt new file mode 100644 index 00000000..3d9264a3 --- /dev/null +++ b/tests/data/collapse-ghcprof/results/ticks_ticks.txt @@ -0,0 +1,299 @@ +MAIN.MAIN 0 +MAIN.MAIN;GHC.Conc.Signal.CAF 0 +MAIN.MAIN;GHC.IO.Encoding.CAF 0 +MAIN.MAIN;GHC.IO.Encoding.Iconv.CAF 0 +MAIN.MAIN;GHC.IO.Exception.CAF 0 +MAIN.MAIN;GHC.IO.FD.CAF 0 +MAIN.MAIN;GHC.IO.Handle.FD.CAF 0 +MAIN.MAIN;GHC.IO.Handle.Internals.CAF 0 +MAIN.MAIN;GHC.Read.CAF 0 +MAIN.MAIN;Main.CAF:ds_r5B6 0 +MAIN.MAIN;Main.CAF:ds_r5B6;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:ds_r5B6;Main.optionsParser;Options.Applicative.Types.manyM 0 +MAIN.MAIN;Main.CAF:ds_r5B6;Main.optionsParser;Options.Applicative.Types.manyM;Options.Applicative.Types.oneM 0 +MAIN.MAIN;Main.CAF:lvl15_r5zq 0 +MAIN.MAIN;Main.CAF:lvl15_r5zq;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:lvl15_r5zq;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:lvl18_r5zt 0 +MAIN.MAIN;Main.CAF:lvl18_r5zt;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:lvl18_r5zt;Main.optionsParser;Options.Applicative.Builder.flag' 0 +MAIN.MAIN;Main.CAF:lvl18_r5zt;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.flagActive 0 +MAIN.MAIN;Main.CAF:lvl18_r5zt;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser 0 +MAIN.MAIN;Main.CAF:lvl18_r5zt;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser;Options.Applicative.Builder.Internal.mkOption 0 +MAIN.MAIN;Main.CAF:lvl18_r5zt;Main.optionsParser;Options.Applicative.Builder.help 0 +MAIN.MAIN;Main.CAF:lvl18_r5zt;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:lvl18_r5zt;Main.optionsParser;Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Main.CAF:lvl25_r5zE 0 +MAIN.MAIN;Main.CAF:lvl25_r5zE;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:lvl25_r5zE;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:lvl28_r5zH 0 +MAIN.MAIN;Main.CAF:lvl28_r5zH;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:lvl28_r5zH;Main.optionsParser;Options.Applicative.Builder.flag' 0 +MAIN.MAIN;Main.CAF:lvl28_r5zH;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.flagActive 0 +MAIN.MAIN;Main.CAF:lvl28_r5zH;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser 0 +MAIN.MAIN;Main.CAF:lvl28_r5zH;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser;Options.Applicative.Builder.Internal.mkOption 0 +MAIN.MAIN;Main.CAF:lvl28_r5zH;Main.optionsParser;Options.Applicative.Builder.help 0 +MAIN.MAIN;Main.CAF:lvl28_r5zH;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:lvl28_r5zH;Main.optionsParser;Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Main.CAF:lvl35_r5zS 0 +MAIN.MAIN;Main.CAF:lvl35_r5zS;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:lvl35_r5zS;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:lvl38_r5zV 0 +MAIN.MAIN;Main.CAF:lvl38_r5zV;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:lvl38_r5zV;Main.optionsParser;Options.Applicative.Builder.flag' 0 +MAIN.MAIN;Main.CAF:lvl38_r5zV;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.flagActive 0 +MAIN.MAIN;Main.CAF:lvl38_r5zV;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser 0 +MAIN.MAIN;Main.CAF:lvl38_r5zV;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser;Options.Applicative.Builder.Internal.mkOption 0 +MAIN.MAIN;Main.CAF:lvl38_r5zV;Main.optionsParser;Options.Applicative.Builder.help 0 +MAIN.MAIN;Main.CAF:lvl38_r5zV;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:lvl38_r5zV;Main.optionsParser;Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Main.CAF:lvl45_r5A6 0 +MAIN.MAIN;Main.CAF:lvl45_r5A6;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:lvl45_r5A6;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:lvl47_r5A9 0 +MAIN.MAIN;Main.CAF:lvl47_r5A9;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:lvl47_r5A9;Main.optionsParser;Options.Applicative.Builder.flag 0 +MAIN.MAIN;Main.CAF:lvl47_r5A9;Main.optionsParser;Options.Applicative.Builder.flag;Options.Applicative.Builder.flag' 0 +MAIN.MAIN;Main.CAF:lvl47_r5A9;Main.optionsParser;Options.Applicative.Builder.flag;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.flagActive 0 +MAIN.MAIN;Main.CAF:lvl47_r5A9;Main.optionsParser;Options.Applicative.Builder.flag;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser 0 +MAIN.MAIN;Main.CAF:lvl47_r5A9;Main.optionsParser;Options.Applicative.Builder.flag;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser;Options.Applicative.Builder.Internal.mkOption 0 +MAIN.MAIN;Main.CAF:lvl47_r5A9;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:lvl47_r5A9;Main.optionsParser;Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Main.CAF:lvl50_r5Ac 0 +MAIN.MAIN;Main.CAF:lvl50_r5Ac;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:lvl50_r5Ac;Main.optionsParser;Options.Applicative.Builder.flag 0 +MAIN.MAIN;Main.CAF:lvl6_r5zd 0 +MAIN.MAIN;Main.CAF:lvl6_r5zd;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:lvl6_r5zd;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:lvl79_r5B5 0 +MAIN.MAIN;Main.CAF:lvl79_r5B5;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:lvl79_r5B5;Main.optionsParser;Options.Applicative.Builder.strOption 0 +MAIN.MAIN;Main.CAF:lvl79_r5B5;Main.optionsParser;Options.Applicative.Builder.strOption;Options.Applicative.Builder.option 0 +MAIN.MAIN;Main.CAF:lvl79_r5B5;Main.optionsParser;Options.Applicative.Builder.strOption;Options.Applicative.Builder.option;Options.Applicative.Builder.Internal.mkParser 0 +MAIN.MAIN;Main.CAF:lvl79_r5B5;Main.optionsParser;Options.Applicative.Builder.strOption;Options.Applicative.Builder.option;Options.Applicative.Builder.metavar 0 +MAIN.MAIN;Main.CAF:lvl87_r5Bf 0 +MAIN.MAIN;Main.CAF:lvl94_r5Bp 0 +MAIN.MAIN;Main.CAF:lvl94_r5Bp;Main.main 0 +MAIN.MAIN;Main.CAF:lvl94_r5Bp;Main.main;Options.Applicative.Builder.info 0 +MAIN.MAIN;Main.CAF:lvl94_r5Bp;Main.main;Options.Applicative.Builder.info;Options.Applicative.Builder.fullDesc 0 +MAIN.MAIN;Main.CAF:lvl9_r5zg 0 +MAIN.MAIN;Main.CAF:lvl9_r5zg;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:lvl9_r5zg;Main.optionsParser;Options.Applicative.Builder.flag' 0 +MAIN.MAIN;Main.CAF:lvl9_r5zg;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.flagActive 0 +MAIN.MAIN;Main.CAF:lvl9_r5zg;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser 0 +MAIN.MAIN;Main.CAF:lvl9_r5zg;Main.optionsParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser;Options.Applicative.Builder.Internal.mkOption 0 +MAIN.MAIN;Main.CAF:lvl9_r5zg;Main.optionsParser;Options.Applicative.Builder.help 0 +MAIN.MAIN;Main.CAF:lvl9_r5zg;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:lvl9_r5zg;Main.optionsParser;Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Main.CAF:m1_r5Am 0 +MAIN.MAIN;Main.CAF:m1_r5Am;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:m1_r5Am;Main.optionsParser;Options.Applicative.Builder.help 0 +MAIN.MAIN;Main.CAF:m1_r5Am;Main.optionsParser;Options.Applicative.Builder.metavar 0 +MAIN.MAIN;Main.CAF:m2_r5AM 0 +MAIN.MAIN;Main.CAF:m2_r5AM;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:m2_r5AM;Main.optionsParser;Options.Applicative.Builder.help 0 +MAIN.MAIN;Main.CAF:m2_r5AM;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:m2_r5AM;Main.optionsParser;Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Main.CAF:m2_r5AM;Main.optionsParser;Options.Applicative.Builder.metavar 0 +MAIN.MAIN;Main.CAF:m2_r5AM;Main.optionsParser;Options.Applicative.Builder.short 0 +MAIN.MAIN;Main.CAF:m2_r5AM;Main.optionsParser;Options.Applicative.Builder.short;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Main.CAF:m3_r5B4 0 +MAIN.MAIN;Main.CAF:m3_r5B4;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:m3_r5B4;Main.optionsParser;Options.Applicative.Builder.help 0 +MAIN.MAIN;Main.CAF:m3_r5B4;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:m3_r5B4;Main.optionsParser;Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Main.CAF:m3_r5B4;Main.optionsParser;Options.Applicative.Builder.metavar 0 +MAIN.MAIN;Main.CAF:m_r5A8 0 +MAIN.MAIN;Main.CAF:m_r5A8;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:m_r5A8;Main.optionsParser;Options.Applicative.Builder.help 0 +MAIN.MAIN;Main.CAF:m_r5A8;Main.optionsParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Main.CAF:m_r5A8;Main.optionsParser;Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Main.CAF:main1 0 +MAIN.MAIN;Main.CAF:main1;Main.main 0 +MAIN.MAIN;Main.CAF:optionsParser10_r5B7 0 +MAIN.MAIN;Main.CAF:optionsParser10_r5B7;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:optionsParser10_r5B7;Main.optionsParser;Options.Applicative.Types.fromM 0 +MAIN.MAIN;Main.CAF:optionsParser10_r5B7;Main.optionsParser;Options.Applicative.Types.manyM 0 +MAIN.MAIN;Main.CAF:optionsParser1_r5Ae 0 +MAIN.MAIN;Main.CAF:optionsParser1_r5Ae;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:optionsParser2_r5Ao 0 +MAIN.MAIN;Main.CAF:optionsParser2_r5Ao;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:optionsParser2_r5Ao;Main.optionsParser;Options.Applicative.Builder.strArgument 0 +MAIN.MAIN;Main.CAF:optionsParser2_r5Ao;Main.optionsParser;Options.Applicative.Builder.strArgument;Options.Applicative.Builder.argument 0 +MAIN.MAIN;Main.CAF:optionsParser2_r5Ao;Main.optionsParser;Options.Applicative.Builder.strArgument;Options.Applicative.Builder.argument;Options.Applicative.Builder.Internal.mkParser 0 +MAIN.MAIN;Main.CAF:optionsParser2_r5Ao;Main.optionsParser;Options.Applicative.Builder.strArgument;Options.Applicative.Builder.argument;Options.Applicative.Builder.Internal.mkParser;Options.Applicative.Builder.Internal.mkOption 0 +MAIN.MAIN;Main.CAF:optionsParser2_r5Ao;Main.optionsParser;Options.Applicative.Builder.strArgument;Options.Applicative.Builder.str 0 +MAIN.MAIN;Main.CAF:optionsParser7_r5AN 0 +MAIN.MAIN;Main.CAF:optionsParser7_r5AN;Main.optionsParser 0 +MAIN.MAIN;Main.CAF:optionsParser7_r5AN;Main.optionsParser;Options.Applicative.Builder.strOption 0 +MAIN.MAIN;Main.CAF:optionsParser7_r5AN;Main.optionsParser;Options.Applicative.Builder.strOption;Options.Applicative.Builder.option 0 +MAIN.MAIN;Main.CAF:optionsParser7_r5AN;Main.optionsParser;Options.Applicative.Builder.strOption;Options.Applicative.Builder.option;Options.Applicative.Builder.Internal.mkParser 0 +MAIN.MAIN;Main.CAF:optionsParser7_r5AN;Main.optionsParser;Options.Applicative.Builder.strOption;Options.Applicative.Builder.option;Options.Applicative.Builder.metavar 0 +MAIN.MAIN;Main.CAF:optionsParser_r33i 0 +MAIN.MAIN;Main.CAF:optionsParser_r33i;Main.optionsParser 0 +MAIN.MAIN;Main.main 7 +MAIN.MAIN;Main.main;Main.checkNames 0 +MAIN.MAIN;Main.main;Main.generateFrames 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.addUnknown 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.addUnknown;Main.addUnknown.\ 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.addUnknown;Main.addUnknown.\;Main.addUnknown.\.unknown 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.(...) 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.(...);ProfFile.lChildren 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.childrenEntries 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.childrenFrames 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.entries 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.entries;Main.generateFrames.individualMeasure 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.entries;Main.generateFrames.individualMeasure;ProfFile.lIndividualTime 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.entries;Main.generateFrames.individualMeasure;ProfFile.lIndividualTime;ProfFile.lTime 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.entries;Main.generateFrames.individualMeasure;ProfFile.lIndividualTime;ProfFile.tIndividual 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.entries;Main.normalize 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.entries;Main.optionsReportType 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.frame 4 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.restEntries 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.restFrames 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.symbol 1 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.symbol;ProfFile.lCostCentre 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.go;Main.generateFrames.go.symbol;ProfFile.lModule 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.individualMeasure 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.generateFrames.individualMeasure;Main.optionsReportType 0 +MAIN.MAIN;Main.main;Main.generateFrames;Main.optionsReportType 0 +MAIN.MAIN;Main.main;Main.optionsProfFile 0 +MAIN.MAIN;Main.main;Main.optionsReportType 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.BashCompletion.bashCompletionParser 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.evalParser 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.evalParser;Main.optionsParser 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.evalParser;Main.optionsParser;Options.Applicative.Types.manyM 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.evalParser;Main.optionsParser;Options.Applicative.Types.manyM;Options.Applicative.Types.oneM 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.evalParser;Main.optionsParser;Options.Applicative.Types.manyM;Options.Applicative.Types.runParserM 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.BashCompletion.bashCompletionParser 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Types.fromM 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Types.fromM;Options.Applicative.Types.manyM 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Types.fromM;Options.Applicative.Types.manyM;Options.Applicative.Types.oneM 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Types.fromM;Options.Applicative.Types.manyM;Options.Applicative.Types.runParserM 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Common.evalParser 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal. 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.;Options.Applicative.Internal.cut 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.;Options.Applicative.Internal.runReadM 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.;Options.Applicative.Internal.runReadM;Options.Applicative.Internal.hoistEither 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.cut 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.disamb 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.disamb;Options.Applicative.Internal.runListT 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.disamb;Options.Applicative.Internal.takeListT 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.runReadM 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.runReadM;Options.Applicative.Internal.hoistEither 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.runReadM;Options.Applicative.Types.crReader 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.runReadM;Options.Applicative.Types.crReader;Main.optionsParser 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.runReadM;Options.Applicative.Types.crReader;Main.optionsParser;Options.Applicative.Builder.strArgument 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.runReadM;Options.Applicative.Types.crReader;Main.optionsParser;Options.Applicative.Builder.strArgument;Options.Applicative.Builder.str 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Types.optMain 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Types.prefDisambiguate 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Types.infoParser 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Types.infoPolicy 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Types.infoParser 0 +MAIN.MAIN;Main.main;Options.Applicative.Extra.execParser;Options.Applicative.Extra.customExecParser;Options.Applicative.Extra.handleParseResult 0 +MAIN.MAIN;Main.main;ProfFile.parse 6 +MAIN.MAIN;Main.main;ProfFile.parse;ProfFile.findStart 0 +MAIN.MAIN;Main.main;ProfFile.parse;ProfFile.processLines 0 +MAIN.MAIN;Main.main;ProfFile.parse;ProfFile.processLines;ProfFile.processLines.go 0 +MAIN.MAIN;Main.main;ProfFile.parse;ProfFile.processLines;ProfFile.processLines.go;ProfFile.parseLine 0 +MAIN.MAIN;Main.main;ProfFile.parse;ProfFile.processLines;ProfFile.processLines.go;ProfFile.parseLine;ProfFile.parseLine.parse' 0 +MAIN.MAIN;Main.main;ProfFile.parse;ProfFile.processLines;ProfFile.processLines.go;ProfFile.parseLine;ProfFile.parseLine.parse';ProfFile.parseLine.readEither' 5 +MAIN.MAIN;Main.main;ProfFile.parse;ProfFile.processLines;ProfFile.processLines.go;ProfFile.processLines.go.(...) 0 +MAIN.MAIN;Main.main;ProfFile.parse;ProfFile.processLines;ProfFile.processLines.go;ProfFile.processLines.go.depth 0 +MAIN.MAIN;Main.main;ProfFile.parse;ProfFile.processLines;ProfFile.processLines.go;ProfFile.processLines.go.rest 0 +MAIN.MAIN;Main.main;ProfFile.parse;ProfFile.processLines;ProfFile.processLines.go;ProfFile.processLines.go.spaces 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.flag' 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.flagActive 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.Internal.mkParser;Options.Applicative.Builder.Internal.mkOption 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.long 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.flag';Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.long 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.option 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.option;Options.Applicative.Builder.Internal.mkParser 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.option;Options.Applicative.Builder.Internal.mkParser;Options.Applicative.Builder.Internal.mkOption 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.option;Options.Applicative.Builder.metavar 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.strOption 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.strOption;Options.Applicative.Builder.option 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.strOption;Options.Applicative.Builder.option;Options.Applicative.Builder.Internal.mkParser 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.strOption;Options.Applicative.Builder.option;Options.Applicative.Builder.Internal.mkParser;Options.Applicative.Builder.Internal.mkOption 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.strOption;Options.Applicative.Builder.option;Options.Applicative.Builder.metavar 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Builder.value 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Types.fromM 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Types.fromM;Options.Applicative.Types.manyM 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Types.manyM 0 +MAIN.MAIN;Options.Applicative.BashCompletion.CAF;Options.Applicative.BashCompletion.bashCompletionParser;Options.Applicative.Types.manyM;Options.Applicative.Types.oneM 0 +MAIN.MAIN;Options.Applicative.Builder.CAF 0 +MAIN.MAIN;Options.Applicative.Builder.CAF;Options.Applicative.Builder.defaultPrefs 0 +MAIN.MAIN;Options.Applicative.Builder.CAF;Options.Applicative.Builder.defaultPrefs;Options.Applicative.Builder.idm 0 +MAIN.MAIN;Options.Applicative.Builder.CAF;Options.Applicative.Builder.defaultPrefs;Options.Applicative.Builder.prefs 0 +MAIN.MAIN;Options.Applicative.Builder.CAF;Options.Applicative.Builder.fullDesc 0 +MAIN.MAIN;Options.Applicative.Builder.CAF;Options.Applicative.Builder.hidden 0 +MAIN.MAIN;Options.Applicative.Builder.CAF;Options.Applicative.Builder.option 0 +MAIN.MAIN;Options.Applicative.Builder.CAF;Options.Applicative.Builder.option;Options.Applicative.Builder.metavar 0 +MAIN.MAIN;Options.Applicative.Builder.Internal.CAF 0 +MAIN.MAIN;Options.Applicative.Builder.Internal.CAF;Options.Applicative.Builder.Internal.internal 0 +MAIN.MAIN;Options.Applicative.Builder.Internal.CAF;Options.Applicative.Builder.Internal.noGlobal 0 +MAIN.MAIN;Options.Applicative.Builder.Internal.CAF;Options.Applicative.Builder.Internal.optionMod 0 +MAIN.MAIN;Options.Applicative.Common.CAF 0 +MAIN.MAIN;Options.Applicative.Common.CAF;Options.Applicative.Common.liftOpt 0 +MAIN.MAIN;Options.Applicative.Extra.CAF 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.execParser 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.execParserPure 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.disamb 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.execParserPure;Options.Applicative.Internal.runP;Options.Applicative.Common.runParserInfo;Options.Applicative.Common.runParserFully;Options.Applicative.Common.runParser;Options.Applicative.Common.runParserStep;Options.Applicative.Internal.disamb;Options.Applicative.Internal.takeListT 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Builder.help 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Builder.long 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Builder.long;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Builder.short 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Builder.short;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Extra.helperWith 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Extra.helperWith;Options.Applicative.Builder.metavar 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Extra.helperWith;Options.Applicative.Builder.noArgError 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Extra.helperWith;Options.Applicative.Builder.option 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Extra.helperWith;Options.Applicative.Builder.option;Options.Applicative.Builder.Internal.mkParser 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Extra.helperWith;Options.Applicative.Builder.option;Options.Applicative.Builder.Internal.mkParser;Options.Applicative.Builder.Internal.mkOption 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Extra.helperWith;Options.Applicative.Builder.option;Options.Applicative.Builder.metavar 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helper;Options.Applicative.Extra.helperWith;Options.Applicative.Builder.value 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helperWith 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helperWith;Options.Applicative.Builder.metavar 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helperWith;Options.Applicative.Builder.noArgError 0 +MAIN.MAIN;Options.Applicative.Extra.CAF;Options.Applicative.Extra.helperWith;Options.Applicative.Builder.noArgError;Options.Applicative.Builder.Internal.fieldMod 0 +MAIN.MAIN;Options.Applicative.Types.CAF 0 +MAIN.MAIN;Options.Applicative.Types.CAF;Options.Applicative.Types.readerAsk 0 +MAIN.MAIN;ProfFile.CAF:firstLineIncludesSources2_r3VA 0 +MAIN.MAIN;ProfFile.CAF:firstLineIncludesSources_r2x3 0 +MAIN.MAIN;ProfFile.CAF:firstLineIncludesSources_r2x3;ProfFile.firstLineIncludesSources 0 +MAIN.MAIN;ProfFile.CAF:firstLineNoSources10_r3Vm 0 +MAIN.MAIN;ProfFile.CAF:firstLineNoSources12_r3Vo 0 +MAIN.MAIN;ProfFile.CAF:firstLineNoSources14_r3Vq 0 +MAIN.MAIN;ProfFile.CAF:firstLineNoSources2_r3Ve 0 +MAIN.MAIN;ProfFile.CAF:firstLineNoSources4_r3Vg 0 +MAIN.MAIN;ProfFile.CAF:firstLineNoSources6_r3Vi 0 +MAIN.MAIN;ProfFile.CAF:firstLineNoSources8_r3Vk 0 +MAIN.MAIN;ProfFile.CAF:firstLineNoSources_r2x2 0 +MAIN.MAIN;ProfFile.CAF:firstLineNoSources_r2x2;ProfFile.firstLineNoSources 0 +MAIN.MAIN;ProfFile.CAF:lIndividualTime 0 +MAIN.MAIN;ProfFile.CAF:lIndividualTime;ProfFile.lIndividualTime 0 +MAIN.MAIN;ProfFile.CAF:lvl13_r3Wl 0 +MAIN.MAIN;ProfFile.CAF:lvl13_r3Wl;ProfFile.parseLine.readEither' 0 +MAIN.MAIN;ProfFile.CAF:lvl14_r3Wn 0 +MAIN.MAIN;ProfFile.CAF:lvl14_r3Wn;ProfFile.parseLine.readEither' 0 diff --git a/tests/data/collapse-ghcprof/results/utf8.txt b/tests/data/collapse-ghcprof/results/utf8.txt new file mode 100644 index 00000000..607af6df --- /dev/null +++ b/tests/data/collapse-ghcprof/results/utf8.txt @@ -0,0 +1,14 @@ +MAIN.MAIN 26 +MAIN.MAIN;GHC.Conc.Signal.CAF 0 +MAIN.MAIN;GHC.Event.Thread.CAF 0 +MAIN.MAIN;GHC.IO.Encoding.CAF 0 +MAIN.MAIN;GHC.IO.Encoding.Iconv.CAF 0 +MAIN.MAIN;GHC.IO.Handle.FD.CAF 0 +MAIN.MAIN;Lib.CAF:f_rPV 0 +MAIN.MAIN;Lib.CAF:一些函数1 0 +MAIN.MAIN;Lib.CAF:一些函数1;Lib.一二三 0 +MAIN.MAIN;Lib.CAF:一些函数1;Lib.一些函数 0 +MAIN.MAIN;Lib.CAF:一些函数1;Lib.你好世界 0 +MAIN.MAIN;Lib.你好世界 974 +MAIN.MAIN;Main.CAF:main1 0 +MAIN.MAIN;Main.CAF:main1;Main.main 0 diff --git a/tests/data/collapse-ghcprof/results/utf8_bytes.txt b/tests/data/collapse-ghcprof/results/utf8_bytes.txt new file mode 100644 index 00000000..67d38629 --- /dev/null +++ b/tests/data/collapse-ghcprof/results/utf8_bytes.txt @@ -0,0 +1,14 @@ +MAIN.MAIN 456096 +MAIN.MAIN;GHC.Conc.Signal.CAF 640 +MAIN.MAIN;GHC.Event.Thread.CAF 1528 +MAIN.MAIN;GHC.IO.Encoding.CAF 2448 +MAIN.MAIN;GHC.IO.Encoding.Iconv.CAF 200 +MAIN.MAIN;GHC.IO.Handle.FD.CAF 34736 +MAIN.MAIN;Lib.CAF:f_rPV 256 +MAIN.MAIN;Lib.CAF:一些函数1 16 +MAIN.MAIN;Lib.CAF:一些函数1;Lib.一二三 0 +MAIN.MAIN;Lib.CAF:一些函数1;Lib.一些函数 0 +MAIN.MAIN;Lib.CAF:一些函数1;Lib.你好世界 0 +MAIN.MAIN;Lib.你好世界 90486357376 +MAIN.MAIN;Main.CAF:main1 16 +MAIN.MAIN;Main.CAF:main1;Main.main 0 diff --git a/tests/data/collapse-ghcprof/results/utf8_ticks.txt b/tests/data/collapse-ghcprof/results/utf8_ticks.txt new file mode 100644 index 00000000..9136140c --- /dev/null +++ b/tests/data/collapse-ghcprof/results/utf8_ticks.txt @@ -0,0 +1,14 @@ +MAIN.MAIN 510 +MAIN.MAIN;GHC.Conc.Signal.CAF 0 +MAIN.MAIN;GHC.Event.Thread.CAF 0 +MAIN.MAIN;GHC.IO.Encoding.CAF 0 +MAIN.MAIN;GHC.IO.Encoding.Iconv.CAF 0 +MAIN.MAIN;GHC.IO.Handle.FD.CAF 0 +MAIN.MAIN;Lib.CAF:f_rPV 0 +MAIN.MAIN;Lib.CAF:一些函数1 0 +MAIN.MAIN;Lib.CAF:一些函数1;Lib.一二三 0 +MAIN.MAIN;Lib.CAF:一些函数1;Lib.一些函数 0 +MAIN.MAIN;Lib.CAF:一些函数1;Lib.你好世界 0 +MAIN.MAIN;Lib.你好世界 19317 +MAIN.MAIN;Main.CAF:main1 0 +MAIN.MAIN;Main.CAF:main1;Main.main 0 diff --git a/tests/data/collapse-ghcprof/ticks.prof b/tests/data/collapse-ghcprof/ticks.prof new file mode 100644 index 00000000..c3c23c63 --- /dev/null +++ b/tests/data/collapse-ghcprof/ticks.prof @@ -0,0 +1,321 @@ + Sun Aug 6 14:52 2023 Time and Allocation Profiling Report (Final) + + ghc-prof-flamegraph +RTS -P -RTS big.prof + + total time = 0.02 secs (23 ticks @ 1000 us, 1 processor) + total alloc = 59,542,424 bytes (excludes profiling overheads) + +COST CENTRE MODULE SRC %time %alloc ticks bytes + +main Main ghc-prof-flamegraph.hs:(108,1)-(120,56) 30.4 9.4 7 5617272 +parse ProfFile ProfFile.hs:(157,1)-(159,57) 26.1 23.5 6 13979640 +parseLine.readEither' ProfFile ProfFile.hs:(117,5)-(118,43) 21.7 26.8 5 15935632 +generateFrames.go.frame Main ghc-prof-flamegraph.hs:95:11-83 17.4 27.5 4 16391432 +generateFrames.go.symbol Main ghc-prof-flamegraph.hs:94:11-68 4.3 1.2 1 699032 +processLines.go.(...) ProfFile ProfFile.hs:133:11-53 0.0 2.0 0 1191040 +parseLine ProfFile ProfFile.hs:(57,1)-(118,43) 0.0 7.7 0 4595648 + + + individual inherited +COST CENTRE MODULE SRC no. entries %time %alloc %time %alloc ticks bytes + +MAIN MAIN 337 0 0.0 0.0 100.0 100.0 0 728 + CAF Options.Applicative.Builder 532 0 0.0 0.0 0.0 0.0 0 16 + defaultPrefs Options.Applicative.Builder src/Options/Applicative/Builder.hs:558:1-24 694 1 0.0 0.0 0.0 0.0 0 0 + idm Options.Applicative.Builder src/Options/Applicative/Builder.hs:554:1-12 696 1 0.0 0.0 0.0 0.0 0 0 + prefs Options.Applicative.Builder src/Options/Applicative/Builder.hs:(537,1)-(548,31) 695 1 0.0 0.0 0.0 0.0 0 16 + fullDesc Options.Applicative.Builder src/Options/Applicative/Builder.hs:395:1-52 703 1 0.0 0.0 0.0 0.0 0 0 + hidden Options.Applicative.Builder src/Options/Applicative/Builder.hs:(212,1)-(213,54) 761 1 0.0 0.0 0.0 0.0 0 56 + option Options.Applicative.Builder src/Options/Applicative/Builder.hs:(375,1)-(380,65) 725 0 0.0 0.0 0.0 0.0 0 0 + metavar Options.Applicative.Builder src/Options/Applicative/Builder.hs:206:1-55 726 0 0.0 0.0 0.0 0.0 0 56 + CAF Options.Applicative.Builder.Internal 530 0 0.0 0.0 0.0 0.0 0 16 + internal Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:189:1-60 711 1 0.0 0.0 0.0 0.0 0 72 + noGlobal Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:194:1-59 757 1 0.0 0.0 0.0 0.0 0 56 + optionMod Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:130:1-25 712 1 0.0 0.0 0.0 0.0 0 0 + CAF Options.Applicative.Common 529 0 0.0 0.0 0.0 0.0 0 80 + liftOpt Options.Applicative.Common src/Options/Applicative/Common.hs:81:1-14 715 1 0.0 0.0 0.0 0.0 0 0 + CAF Options.Applicative.Extra 528 0 0.0 0.0 0.0 0.0 0 0 + execParser Options.Applicative.Extra src/Options/Applicative/Extra.hs:115:1-42 676 1 0.0 0.0 0.0 0.0 0 32 + helper Options.Applicative.Extra src/Options/Applicative/Extra.hs:(51,1)-(56,4) 746 1 0.0 0.0 0.0 0.0 0 256 + help Options.Applicative.Builder src/Options/Applicative/Builder.hs:190:1-55 751 1 0.0 0.0 0.0 0.0 0 56 + helperWith Options.Applicative.Extra src/Options/Applicative/Extra.hs:(69,1)-(83,44) 752 1 0.0 0.0 0.0 0.0 0 216 + metavar Options.Applicative.Builder src/Options/Applicative/Builder.hs:206:1-55 754 1 0.0 0.0 0.0 0.0 0 0 + noArgError Options.Applicative.Builder src/Options/Applicative/Builder.hs:199:1-61 758 1 0.0 0.0 0.0 0.0 0 0 + option Options.Applicative.Builder src/Options/Applicative/Builder.hs:(375,1)-(380,65) 762 1 0.0 0.0 0.0 0.0 0 224 + metavar Options.Applicative.Builder src/Options/Applicative/Builder.hs:206:1-55 763 1 0.0 0.0 0.0 0.0 0 0 + mkParser Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:(165,1)-(169,36) 764 1 0.0 0.0 0.0 0.0 0 240 + mkOption Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:175:1-43 765 1 0.0 0.0 0.0 0.0 0 0 + value Options.Applicative.Builder src/Options/Applicative/Builder.hs:178:1-50 753 1 0.0 0.0 0.0 0.0 0 0 + long Options.Applicative.Builder src/Options/Applicative/Builder.hs:166:1-32 747 1 0.0 0.0 0.0 0.0 0 0 + fieldMod Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:133:1-28 748 1 0.0 0.0 0.0 0.0 0 0 + short Options.Applicative.Builder src/Options/Applicative/Builder.hs:162:1-34 749 1 0.0 0.0 0.0 0.0 0 0 + fieldMod Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:133:1-28 750 1 0.0 0.0 0.0 0.0 0 0 + execParserPure Options.Applicative.Extra src/Options/Applicative/Extra.hs:(155,1)-(164,33) 682 0 0.0 0.0 0.0 0.0 0 0 + runP Options.Applicative.Internal src/Options/Applicative/Internal.hs:91:1-59 683 0 0.0 0.0 0.0 0.0 0 0 + runParserInfo Options.Applicative.Common src/Options/Applicative/Common.hs:233:1-62 684 0 0.0 0.0 0.0 0.0 0 128 + runParserFully Options.Applicative.Common src/Options/Applicative/Common.hs:(236,1)-(240,33) 686 0 0.0 0.0 0.0 0.0 0 200 + runParser Options.Applicative.Common src/Options/Applicative/Common.hs:(203,1)-(220,24) 688 0 0.0 0.0 0.0 0.0 0 496 + runParserStep Options.Applicative.Common src/Options/Applicative/Common.hs:(223,1)-(227,35) 690 0 0.0 0.0 0.0 0.0 0 288 + disamb Options.Applicative.Internal src/Options/Applicative/Internal.hs:(258,1)-(265,18) 697 0 0.0 0.0 0.0 0.0 0 0 + takeListT Options.Applicative.Internal src/Options/Applicative/Internal.hs:(179,1)-(180,75) 698 2 0.0 0.0 0.0 0.0 0 152 + helperWith Options.Applicative.Extra src/Options/Applicative/Extra.hs:(69,1)-(83,44) 755 0 0.0 0.0 0.0 0.0 0 0 + metavar Options.Applicative.Builder src/Options/Applicative/Builder.hs:206:1-55 756 0 0.0 0.0 0.0 0.0 0 56 + noArgError Options.Applicative.Builder src/Options/Applicative/Builder.hs:199:1-61 759 0 0.0 0.0 0.0 0.0 0 32 + fieldMod Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:133:1-28 760 1 0.0 0.0 0.0 0.0 0 0 + CAF Options.Applicative.Types 522 0 0.0 0.0 0.0 0.0 0 16 + readerAsk Options.Applicative.Types src/Options/Applicative/Types.hs:220:1-21 851 1 0.0 0.0 0.0 0.0 0 0 + CAF Options.Applicative.BashCompletion 520 0 0.0 0.0 0.0 0.0 0 0 + bashCompletionParser Options.Applicative.BashCompletion src/Options/Applicative/BashCompletion.hs:(40,1)-(72,7) 708 0 0.0 0.0 0.0 0.0 0 1624 + long Options.Applicative.Builder src/Options/Applicative/Builder.hs:166:1-32 709 8 0.0 0.0 0.0 0.0 0 16 + fieldMod Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:133:1-28 710 8 0.0 0.0 0.0 0.0 0 0 + strOption Options.Applicative.Builder src/Options/Applicative/Builder.hs:365:1-22 733 4 0.0 0.0 0.0 0.0 0 128 + option Options.Applicative.Builder src/Options/Applicative/Builder.hs:(375,1)-(380,65) 734 4 0.0 0.0 0.0 0.0 0 896 + metavar Options.Applicative.Builder src/Options/Applicative/Builder.hs:206:1-55 735 4 0.0 0.0 0.0 0.0 0 0 + mkParser Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:(165,1)-(169,36) 736 4 0.0 0.0 0.0 0.0 0 800 + mkOption Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:175:1-43 737 4 0.0 0.0 0.0 0.0 0 0 + option Options.Applicative.Builder src/Options/Applicative/Builder.hs:(375,1)-(380,65) 723 3 0.0 0.0 0.0 0.0 0 688 + metavar Options.Applicative.Builder src/Options/Applicative/Builder.hs:206:1-55 724 3 0.0 0.0 0.0 0.0 0 0 + mkParser Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:(165,1)-(169,36) 727 3 0.0 0.0 0.0 0.0 0 680 + mkOption Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:175:1-43 728 3 0.0 0.0 0.0 0.0 0 0 + value Options.Applicative.Builder src/Options/Applicative/Builder.hs:178:1-50 722 2 0.0 0.0 0.0 0.0 0 0 + flag' Options.Applicative.Builder src/Options/Applicative/Builder.hs:(332,1)-(336,43) 713 1 0.0 0.0 0.0 0.0 0 136 + flagActive Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:42:5-14 718 1 0.0 0.0 0.0 0.0 0 0 + mkParser Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:(165,1)-(169,36) 714 1 0.0 0.0 0.0 0.0 0 216 + mkOption Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:175:1-43 717 1 0.0 0.0 0.0 0.0 0 0 + long Options.Applicative.Builder src/Options/Applicative/Builder.hs:166:1-32 720 0 0.0 0.0 0.0 0.0 0 0 + fieldMod Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:133:1-28 721 0 0.0 0.0 0.0 0.0 0 72 + fromM Options.Applicative.Types src/Options/Applicative/Types.hs:288:1-26 729 1 0.0 0.0 0.0 0.0 0 16 + manyM Options.Applicative.Types src/Options/Applicative/Types.hs:(294,1)-(298,30) 731 0 0.0 0.0 0.0 0.0 0 136 + manyM Options.Applicative.Types src/Options/Applicative/Types.hs:(294,1)-(298,30) 730 1 0.0 0.0 0.0 0.0 0 296 + oneM Options.Applicative.Types src/Options/Applicative/Types.hs:291:1-26 732 1 0.0 0.0 0.0 0.0 0 0 + CAF GHC.Conc.Signal 454 0 0.0 0.0 0.0 0.0 0 640 + CAF GHC.IO.Encoding 437 0 0.0 0.0 0.0 0.0 0 2976 + CAF GHC.IO.Encoding.Iconv 435 0 0.0 0.0 0.0 0.0 0 200 + CAF GHC.IO.Exception 429 0 0.0 0.0 0.0 0.0 0 496 + CAF GHC.IO.FD 428 0 0.0 0.0 0.0 0.0 0 16 + CAF GHC.IO.Handle.FD 426 0 0.0 0.1 0.0 0.1 0 34704 + CAF GHC.IO.Handle.Internals 425 0 0.0 0.0 0.0 0.0 0 24 + CAF GHC.Read 410 0 0.0 0.0 0.0 0.0 0 96 + CAF:ds_r5B6 Main 595 0 0.0 0.0 0.0 0.0 0 0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 869 0 0.0 0.0 0.0 0.0 0 0 + manyM Options.Applicative.Types src/Options/Applicative/Types.hs:(294,1)-(298,30) 870 1 0.0 0.0 0.0 0.0 0 176 + oneM Options.Applicative.Types src/Options/Applicative/Types.hs:291:1-26 872 1 0.0 0.0 0.0 0.0 0 0 + CAF:firstLineIncludesSources2_r3VA ProfFile 617 0 0.0 0.0 0.0 0.0 0 64 + CAF:firstLineIncludesSources_r2x3 ProfFile ProfFile.hs:148:1-24 618 0 0.0 0.0 0.0 0.0 0 24 + firstLineIncludesSources ProfFile ProfFile.hs:148:1-118 893 1 0.0 0.0 0.0 0.0 0 0 + CAF:firstLineNoSources10_r3Vm ProfFile 613 0 0.0 0.0 0.0 0.0 0 448 + CAF:firstLineNoSources12_r3Vo ProfFile 614 0 0.0 0.0 0.0 0.0 0 320 + CAF:firstLineNoSources14_r3Vq ProfFile 615 0 0.0 0.0 0.0 0.0 0 384 + CAF:firstLineNoSources2_r3Ve ProfFile 609 0 0.0 0.0 0.0 0.0 0 256 + CAF:firstLineNoSources4_r3Vg ProfFile 610 0 0.0 0.0 0.0 0.0 0 384 + CAF:firstLineNoSources6_r3Vi ProfFile 611 0 0.0 0.0 0.0 0.0 0 384 + CAF:firstLineNoSources8_r3Vk ProfFile 612 0 0.0 0.0 0.0 0.0 0 192 + CAF:firstLineNoSources_r2x2 ProfFile ProfFile.hs:144:1-18 616 0 0.0 0.0 0.0 0.0 0 24 + firstLineNoSources ProfFile ProfFile.hs:144:1-105 892 1 0.0 0.0 0.0 0.0 0 0 + CAF:lIndividualTime ProfFile ProfFile.hs:41:1-15 605 0 0.0 0.0 0.0 0.0 0 16 + lIndividualTime ProfFile ProfFile.hs:41:1-37 916 1 0.0 0.0 0.0 0.0 0 0 + CAF:lvl13_r3Wl ProfFile 627 0 0.0 0.0 0.0 0.0 0 0 + parseLine.readEither' ProfFile ProfFile.hs:(117,5)-(118,43) 904 0 0.0 0.0 0.0 0.0 0 104 + CAF:lvl14_r3Wn ProfFile 628 0 0.0 0.0 0.0 0.0 0 0 + parseLine.readEither' ProfFile ProfFile.hs:(117,5)-(118,43) 903 0 0.0 0.0 0.0 0.0 0 104 + CAF:lvl15_r5zq Main 549 0 0.0 0.0 0.0 0.0 0 0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 788 0 0.0 0.0 0.0 0.0 0 0 + long Options.Applicative.Builder src/Options/Applicative/Builder.hs:166:1-32 789 0 0.0 0.0 0.0 0.0 0 16 + CAF:lvl18_r5zt Main 550 0 0.0 0.0 0.0 0.0 0 0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 780 0 0.0 0.0 0.0 0.0 0 64 + flag' Options.Applicative.Builder src/Options/Applicative/Builder.hs:(332,1)-(336,43) 784 1 0.0 0.0 0.0 0.0 0 120 + flagActive Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:42:5-14 787 1 0.0 0.0 0.0 0.0 0 0 + mkParser Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:(165,1)-(169,36) 785 1 0.0 0.0 0.0 0.0 0 200 + mkOption Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:175:1-43 786 1 0.0 0.0 0.0 0.0 0 0 + help Options.Applicative.Builder src/Options/Applicative/Builder.hs:190:1-55 783 1 0.0 0.0 0.0 0.0 0 56 + long Options.Applicative.Builder src/Options/Applicative/Builder.hs:166:1-32 781 1 0.0 0.0 0.0 0.0 0 0 + fieldMod Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:133:1-28 782 1 0.0 0.0 0.0 0.0 0 72 + CAF:lvl25_r5zE Main 555 0 0.0 0.0 0.0 0.0 0 0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 800 0 0.0 0.0 0.0 0.0 0 0 + long Options.Applicative.Builder src/Options/Applicative/Builder.hs:166:1-32 801 0 0.0 0.0 0.0 0.0 0 16 + CAF:lvl28_r5zH Main 556 0 0.0 0.0 0.0 0.0 0 0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 792 0 0.0 0.0 0.0 0.0 0 64 + flag' Options.Applicative.Builder src/Options/Applicative/Builder.hs:(332,1)-(336,43) 796 1 0.0 0.0 0.0 0.0 0 120 + flagActive Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:42:5-14 799 1 0.0 0.0 0.0 0.0 0 0 + mkParser Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:(165,1)-(169,36) 797 1 0.0 0.0 0.0 0.0 0 200 + mkOption Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:175:1-43 798 1 0.0 0.0 0.0 0.0 0 0 + help Options.Applicative.Builder src/Options/Applicative/Builder.hs:190:1-55 795 1 0.0 0.0 0.0 0.0 0 56 + long Options.Applicative.Builder src/Options/Applicative/Builder.hs:166:1-32 793 1 0.0 0.0 0.0 0.0 0 0 + fieldMod Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:133:1-28 794 1 0.0 0.0 0.0 0.0 0 72 + CAF:lvl35_r5zS Main 561 0 0.0 0.0 0.0 0.0 0 0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 812 0 0.0 0.0 0.0 0.0 0 0 + long Options.Applicative.Builder src/Options/Applicative/Builder.hs:166:1-32 813 0 0.0 0.0 0.0 0.0 0 16 + CAF:lvl38_r5zV Main 562 0 0.0 0.0 0.0 0.0 0 0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 804 0 0.0 0.0 0.0 0.0 0 64 + flag' Options.Applicative.Builder src/Options/Applicative/Builder.hs:(332,1)-(336,43) 808 1 0.0 0.0 0.0 0.0 0 120 + flagActive Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:42:5-14 811 1 0.0 0.0 0.0 0.0 0 0 + mkParser Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:(165,1)-(169,36) 809 1 0.0 0.0 0.0 0.0 0 200 + mkOption Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:175:1-43 810 1 0.0 0.0 0.0 0.0 0 0 + help Options.Applicative.Builder src/Options/Applicative/Builder.hs:190:1-55 807 1 0.0 0.0 0.0 0.0 0 56 + long Options.Applicative.Builder src/Options/Applicative/Builder.hs:166:1-32 805 1 0.0 0.0 0.0 0.0 0 0 + fieldMod Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:133:1-28 806 1 0.0 0.0 0.0 0.0 0 72 + CAF:lvl45_r5A6 Main 567 0 0.0 0.0 0.0 0.0 0 0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 828 0 0.0 0.0 0.0 0.0 0 0 + long Options.Applicative.Builder src/Options/Applicative/Builder.hs:166:1-32 829 0 0.0 0.0 0.0 0.0 0 16 + CAF:lvl47_r5A9 Main 569 0 0.0 0.0 0.0 0.0 0 0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 818 0 0.0 0.0 0.0 0.0 0 48 + flag Options.Applicative.Builder src/Options/Applicative/Builder.hs:312:1-45 819 0 0.0 0.0 0.0 0.0 0 16 + flag' Options.Applicative.Builder src/Options/Applicative/Builder.hs:(332,1)-(336,43) 824 1 0.0 0.0 0.0 0.0 0 104 + flagActive Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:42:5-14 827 1 0.0 0.0 0.0 0.0 0 0 + mkParser Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:(165,1)-(169,36) 825 1 0.0 0.0 0.0 0.0 0 176 + mkOption Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:175:1-43 826 1 0.0 0.0 0.0 0.0 0 0 + long Options.Applicative.Builder src/Options/Applicative/Builder.hs:166:1-32 832 0 0.0 0.0 0.0 0.0 0 0 + fieldMod Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:133:1-28 833 0 0.0 0.0 0.0 0.0 0 72 + CAF:lvl50_r5Ac Main 570 0 0.0 0.0 0.0 0.0 0 0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 816 0 0.0 0.0 0.0 0.0 0 24 + flag Options.Applicative.Builder src/Options/Applicative/Builder.hs:312:1-45 817 1 0.0 0.0 0.0 0.0 0 0 + CAF:lvl6_r5zd Main 543 0 0.0 0.0 0.0 0.0 0 0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 776 0 0.0 0.0 0.0 0.0 0 0 + long Options.Applicative.Builder src/Options/Applicative/Builder.hs:166:1-32 777 0 0.0 0.0 0.0 0.0 0 16 + CAF:lvl79_r5B5 Main 594 0 0.0 0.0 0.0 0.0 0 0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 873 0 0.0 0.0 0.0 0.0 0 0 + strOption Options.Applicative.Builder src/Options/Applicative/Builder.hs:365:1-22 874 1 0.0 0.0 0.0 0.0 0 32 + option Options.Applicative.Builder src/Options/Applicative/Builder.hs:(375,1)-(380,65) 880 1 0.0 0.0 0.0 0.0 0 224 + metavar Options.Applicative.Builder src/Options/Applicative/Builder.hs:206:1-55 881 1 0.0 0.0 0.0 0.0 0 0 + mkParser Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:(165,1)-(169,36) 882 1 0.0 0.0 0.0 0.0 0 128 + CAF:lvl87_r5Bf Main 600 0 0.0 0.0 0.0 0.0 0 64 + CAF:lvl94_r5Bp Main 602 0 0.0 0.0 0.0 0.0 0 0 + main Main ghc-prof-flamegraph.hs:(108,1)-(120,56) 701 0 0.0 0.0 0.0 0.0 0 0 + info Options.Applicative.Builder src/Options/Applicative/Builder.hs:(459,1)-(468,34) 702 1 0.0 0.0 0.0 0.0 0 16 + fullDesc Options.Applicative.Builder src/Options/Applicative/Builder.hs:395:1-52 704 0 0.0 0.0 0.0 0.0 0 64 + CAF:lvl9_r5zg Main 544 0 0.0 0.0 0.0 0.0 0 0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 768 0 0.0 0.0 0.0 0.0 0 64 + flag' Options.Applicative.Builder src/Options/Applicative/Builder.hs:(332,1)-(336,43) 772 1 0.0 0.0 0.0 0.0 0 120 + flagActive Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:42:5-14 775 1 0.0 0.0 0.0 0.0 0 0 + mkParser Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:(165,1)-(169,36) 773 1 0.0 0.0 0.0 0.0 0 200 + mkOption Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:175:1-43 774 1 0.0 0.0 0.0 0.0 0 0 + help Options.Applicative.Builder src/Options/Applicative/Builder.hs:190:1-55 771 1 0.0 0.0 0.0 0.0 0 56 + long Options.Applicative.Builder src/Options/Applicative/Builder.hs:166:1-32 769 1 0.0 0.0 0.0 0.0 0 0 + fieldMod Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:133:1-28 770 1 0.0 0.0 0.0 0.0 0 72 + CAF:m1_r5Am Main 575 0 0.0 0.0 0.0 0.0 0 0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 836 0 0.0 0.0 0.0 0.0 0 200 + help Options.Applicative.Builder src/Options/Applicative/Builder.hs:190:1-55 838 1 0.0 0.0 0.0 0.0 0 56 + metavar Options.Applicative.Builder src/Options/Applicative/Builder.hs:206:1-55 837 1 0.0 0.0 0.0 0.0 0 56 + CAF:m2_r5AM Main 585 0 0.0 0.0 0.0 0.0 0 0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 857 0 0.0 0.0 0.0 0.0 0 280 + help Options.Applicative.Builder src/Options/Applicative/Builder.hs:190:1-55 863 1 0.0 0.0 0.0 0.0 0 56 + long Options.Applicative.Builder src/Options/Applicative/Builder.hs:166:1-32 860 1 0.0 0.0 0.0 0.0 0 0 + fieldMod Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:133:1-28 861 1 0.0 0.0 0.0 0.0 0 0 + metavar Options.Applicative.Builder src/Options/Applicative/Builder.hs:206:1-55 862 1 0.0 0.0 0.0 0.0 0 56 + short Options.Applicative.Builder src/Options/Applicative/Builder.hs:162:1-34 858 1 0.0 0.0 0.0 0.0 0 0 + fieldMod Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:133:1-28 859 1 0.0 0.0 0.0 0.0 0 0 + CAF:m3_r5B4 Main 593 0 0.0 0.0 0.0 0.0 0 0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 875 0 0.0 0.0 0.0 0.0 0 240 + help Options.Applicative.Builder src/Options/Applicative/Builder.hs:190:1-55 879 1 0.0 0.0 0.0 0.0 0 56 + long Options.Applicative.Builder src/Options/Applicative/Builder.hs:166:1-32 876 1 0.0 0.0 0.0 0.0 0 0 + fieldMod Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:133:1-28 877 1 0.0 0.0 0.0 0.0 0 0 + metavar Options.Applicative.Builder src/Options/Applicative/Builder.hs:206:1-55 878 1 0.0 0.0 0.0 0.0 0 56 + CAF:m_r5A8 Main 568 0 0.0 0.0 0.0 0.0 0 0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 820 0 0.0 0.0 0.0 0.0 0 200 + help Options.Applicative.Builder src/Options/Applicative/Builder.hs:190:1-55 823 1 0.0 0.0 0.0 0.0 0 56 + long Options.Applicative.Builder src/Options/Applicative/Builder.hs:166:1-32 821 1 0.0 0.0 0.0 0.0 0 0 + fieldMod Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:133:1-28 822 1 0.0 0.0 0.0 0.0 0 0 + CAF:main1 Main 603 0 0.0 0.0 0.0 0.0 0 16 + main Main ghc-prof-flamegraph.hs:(108,1)-(120,56) 674 1 0.0 0.0 0.0 0.0 0 0 + CAF:optionsParser10_r5B7 Main 596 0 0.0 0.0 0.0 0.0 0 0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 867 0 0.0 0.0 0.0 0.0 0 0 + fromM Options.Applicative.Types src/Options/Applicative/Types.hs:288:1-26 868 1 0.0 0.0 0.0 0.0 0 16 + manyM Options.Applicative.Types src/Options/Applicative/Types.hs:(294,1)-(298,30) 871 0 0.0 0.0 0.0 0.0 0 136 + CAF:optionsParser1_r5Ae Main 571 0 0.0 0.0 0.0 0.0 0 0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 767 0 0.0 0.0 0.0 0.0 0 1464 + CAF:optionsParser2_r5Ao Main 576 0 0.0 0.0 0.0 0.0 0 0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 834 0 0.0 0.0 0.0 0.0 0 200 + strArgument Options.Applicative.Builder src/Options/Applicative/Builder.hs:298:1-26 835 1 0.0 0.0 0.0 0.0 0 32 + argument Options.Applicative.Builder src/Options/Applicative/Builder.hs:(290,1)-(294,25) 839 1 0.0 0.0 0.0 0.0 0 136 + mkParser Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:(165,1)-(169,36) 840 1 0.0 0.0 0.0 0.0 0 200 + mkOption Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:175:1-43 841 1 0.0 0.0 0.0 0.0 0 0 + str Options.Applicative.Builder src/Options/Applicative/Builder.hs:134:1-30 848 1 0.0 0.0 0.0 0.0 0 0 + CAF:optionsParser7_r5AN Main 586 0 0.0 0.0 0.0 0.0 0 0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 855 0 0.0 0.0 0.0 0.0 0 48 + strOption Options.Applicative.Builder src/Options/Applicative/Builder.hs:365:1-22 856 1 0.0 0.0 0.0 0.0 0 32 + option Options.Applicative.Builder src/Options/Applicative/Builder.hs:(375,1)-(380,65) 864 1 0.0 0.0 0.0 0.0 0 224 + metavar Options.Applicative.Builder src/Options/Applicative/Builder.hs:206:1-55 865 1 0.0 0.0 0.0 0.0 0 0 + mkParser Options.Applicative.Builder.Internal src/Options/Applicative/Builder/Internal.hs:(165,1)-(169,36) 866 1 0.0 0.0 0.0 0.0 0 128 + CAF:optionsParser_r33i Main ghc-prof-flamegraph.hs:35:1-13 597 0 0.0 0.0 0.0 0.0 0 24 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 766 1 0.0 0.0 0.0 0.0 0 0 + main Main ghc-prof-flamegraph.hs:(108,1)-(120,56) 675 0 30.4 9.4 100.0 99.9 7 5617272 + checkNames Main ghc-prof-flamegraph.hs:(58,1)-(66,83) 905 1 0.0 0.0 0.0 0.0 0 0 + generateFrames Main ghc-prof-flamegraph.hs:(87,1)-(105,43) 907 1 0.0 0.0 21.7 29.7 0 112 + generateFrames.go Main ghc-prof-flamegraph.hs:(90,5)-(98,88) 910 1411 0.0 0.9 21.7 29.7 0 525080 + generateFrames.go.(...) Main ghc-prof-flamegraph.hs:97:11-53 925 705 0.0 0.0 0.0 0.0 0 16920 + generateFrames.go.(...) Main ghc-prof-flamegraph.hs:96:11-87 922 705 0.0 0.1 0.0 0.1 0 33840 + lChildren ProfFile ProfFile.hs:37:5-13 923 705 0.0 0.0 0.0 0.0 0 0 + generateFrames.go.childrenEntries Main ghc-prof-flamegraph.hs:96:11-87 921 705 0.0 0.0 0.0 0.0 0 0 + generateFrames.go.childrenFrames Main ghc-prof-flamegraph.hs:96:11-87 932 705 0.0 0.0 0.0 0.0 0 0 + generateFrames.go.entries Main ghc-prof-flamegraph.hs:93:11-82 911 705 0.0 0.0 0.0 0.1 0 22560 + normalize Main ghc-prof-flamegraph.hs:(69,1)-(71,23) 912 705 0.0 0.0 0.0 0.0 0 11280 + optionsReportType Main ghc-prof-flamegraph.hs:21:5-21 913 1 0.0 0.0 0.0 0.0 0 0 + generateFrames.individualMeasure Main ghc-prof-flamegraph.hs:(100,5)-(105,43) 917 0 0.0 0.0 0.0 0.0 0 0 + lIndividualTime ProfFile ProfFile.hs:41:1-37 918 0 0.0 0.0 0.0 0.0 0 0 + lTime ProfFile ProfFile.hs:33:5-9 919 705 0.0 0.0 0.0 0.0 0 0 + tIndividual ProfFile ProfFile.hs:24:5-15 920 705 0.0 0.0 0.0 0.0 0 0 + generateFrames.go.frame Main ghc-prof-flamegraph.hs:95:11-83 928 705 17.4 27.5 17.4 27.5 4 16391432 + generateFrames.go.restEntries Main ghc-prof-flamegraph.hs:97:11-53 924 705 0.0 0.0 0.0 0.0 0 0 + generateFrames.go.restFrames Main ghc-prof-flamegraph.hs:97:11-53 933 705 0.0 0.0 0.0 0.0 0 0 + generateFrames.go.symbol Main ghc-prof-flamegraph.hs:94:11-68 929 705 4.3 1.2 4.3 1.2 1 699032 + lCostCentre ProfFile ProfFile.hs:29:5-15 931 705 0.0 0.0 0.0 0.0 0 0 + lModule ProfFile ProfFile.hs:30:5-11 930 705 0.0 0.0 0.0 0.0 0 0 + addUnknown Main ghc-prof-flamegraph.hs:(74,1)-(84,18) 909 1 0.0 0.0 0.0 0.0 0 0 + addUnknown.\ Main ghc-prof-flamegraph.hs:(75,3)-(78,16) 926 1 0.0 0.0 0.0 0.0 0 728 + addUnknown.\.unknown Main ghc-prof-flamegraph.hs:75:7-30 927 1 0.0 0.0 0.0 0.0 0 0 + generateFrames.individualMeasure Main ghc-prof-flamegraph.hs:(100,5)-(105,43) 914 1 0.0 0.0 0.0 0.0 0 16 + optionsReportType Main ghc-prof-flamegraph.hs:21:5-21 915 1 0.0 0.0 0.0 0.0 0 0 + optionsReportType Main ghc-prof-flamegraph.hs:21:5-21 908 1 0.0 0.0 0.0 0.0 0 0 + optionsProfFile Main ghc-prof-flamegraph.hs:22:5-19 889 1 0.0 0.0 0.0 0.0 0 0 + optionsReportType Main ghc-prof-flamegraph.hs:21:5-21 906 1 0.0 0.0 0.0 0.0 0 0 + parse ProfFile ProfFile.hs:(157,1)-(159,57) 890 1 26.1 23.5 47.8 60.5 6 13979640 + findStart ProfFile ProfFile.hs:(151,1)-(154,73) 891 27 0.0 0.0 0.0 0.0 0 23160 + processLines ProfFile ProfFile.hs:(123,1)-(141,74) 894 1 0.0 0.0 21.7 37.0 0 32 + processLines.go ProfFile ProfFile.hs:(130,5)-(141,74) 895 1411 0.0 0.3 21.7 37.0 0 186184 + processLines.go.(...) ProfFile ProfFile.hs:133:11-53 896 1408 0.0 2.0 0.0 2.0 0 1191040 + processLines.go.depth ProfFile ProfFile.hs:134:11-31 898 1408 0.0 0.0 0.0 0.0 0 0 + processLines.go.spaces ProfFile ProfFile.hs:133:11-53 897 1408 0.0 0.0 0.0 0.0 0 0 + parseLine ProfFile ProfFile.hs:(57,1)-(118,43) 900 705 0.0 7.7 21.7 34.7 0 4595648 + parseLine.parse' ProfFile ProfFile.hs:(106,5)-(115,78) 901 705 0.0 0.2 21.7 27.0 0 141000 + parseLine.readEither' ProfFile ProfFile.hs:(117,5)-(118,43) 902 4230 21.7 26.8 21.7 26.8 5 15935424 + processLines.go.rest ProfFile ProfFile.hs:133:11-53 899 705 0.0 0.0 0.0 0.0 0 0 + execParser Options.Applicative.Extra src/Options/Applicative/Extra.hs:115:1-42 677 0 0.0 0.0 0.0 0.2 0 24 + customExecParser Options.Applicative.Extra src/Options/Applicative/Extra.hs:(119,1)-(121,23) 678 1 0.0 0.0 0.0 0.2 0 1280 + execParserPure Options.Applicative.Extra src/Options/Applicative/Extra.hs:(155,1)-(164,33) 679 1 0.0 0.0 0.0 0.2 0 16 + runP Options.Applicative.Internal src/Options/Applicative/Internal.hs:91:1-59 680 1 0.0 0.0 0.0 0.2 0 2304 + bashCompletionParser Options.Applicative.BashCompletion src/Options/Applicative/BashCompletion.hs:(40,1)-(72,7) 706 1 0.0 0.0 0.0 0.0 0 1160 + infoParser Options.Applicative.Types src/Options/Applicative/Types.hs:90:5-14 745 1 0.0 0.0 0.0 0.0 0 0 + runParserInfo Options.Applicative.Common src/Options/Applicative/Common.hs:233:1-62 681 1 0.0 0.0 0.0 0.2 0 136 + infoParser Options.Applicative.Types src/Options/Applicative/Types.hs:90:5-14 705 1 0.0 0.0 0.0 0.0 0 0 + infoPolicy Options.Applicative.Types src/Options/Applicative/Types.hs:97:5-14 700 1 0.0 0.0 0.0 0.0 0 0 + runParserFully Options.Applicative.Common src/Options/Applicative/Common.hs:(236,1)-(240,33) 685 1 0.0 0.0 0.0 0.2 0 184 + runParser Options.Applicative.Common src/Options/Applicative/Common.hs:(203,1)-(220,24) 687 2 0.0 0.0 0.0 0.2 0 1440 + evalParser Options.Applicative.Common src/Options/Applicative/Common.hs:(245,1)-(249,56) 854 27 0.0 0.0 0.0 0.0 0 360 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 884 0 0.0 0.0 0.0 0.0 0 40 + manyM Options.Applicative.Types src/Options/Applicative/Types.hs:(294,1)-(298,30) 885 0 0.0 0.0 0.0 0.0 0 0 + runParserM Options.Applicative.Types src/Options/Applicative/Types.hs:274:5-14 887 1 0.0 0.0 0.0 0.0 0 0 + oneM Options.Applicative.Types src/Options/Applicative/Types.hs:291:1-26 886 0 0.0 0.0 0.0 0.0 0 0 + runParserStep Options.Applicative.Common src/Options/Applicative/Common.hs:(223,1)-(227,35) 689 1 0.0 0.1 0.0 0.2 0 30432 + optMain Options.Applicative.Types src/Options/Applicative/Types.hs:172:5-11 716 30 0.0 0.0 0.0 0.0 0 0 + Options.Applicative.Internal src/Options/Applicative/Internal.hs:(249,1)-(252,15) 707 8 0.0 0.1 0.0 0.1 0 74688 + cut Options.Applicative.Internal src/Options/Applicative/Internal.hs:255:1-31 843 0 0.0 0.0 0.0 0.0 0 480 + runReadM Options.Applicative.Internal src/Options/Applicative/Internal.hs:98:1-63 852 0 0.0 0.0 0.0 0.0 0 0 + hoistEither Options.Applicative.Internal src/Options/Applicative/Internal.hs:88:1-34 853 0 0.0 0.0 0.0 0.0 0 80 + evalParser Options.Applicative.Common src/Options/Applicative/Common.hs:(245,1)-(249,56) 738 3 0.0 0.0 0.0 0.0 0 0 + cut Options.Applicative.Internal src/Options/Applicative/Internal.hs:255:1-31 842 1 0.0 0.0 0.0 0.0 0 0 + disamb Options.Applicative.Internal src/Options/Applicative/Internal.hs:(258,1)-(265,18) 691 1 0.0 0.0 0.0 0.0 0 296 + runListT Options.Applicative.Internal src/Options/Applicative/Internal.hs:(183,1)-(187,43) 692 2 0.0 0.0 0.0 0.0 0 360 + takeListT Options.Applicative.Internal src/Options/Applicative/Internal.hs:(179,1)-(180,75) 699 0 0.0 0.0 0.0 0.0 0 160 + prefDisambiguate Options.Applicative.Types src/Options/Applicative/Types.hs:113:5-20 693 1 0.0 0.0 0.0 0.0 0 0 + runReadM Options.Applicative.Internal src/Options/Applicative/Internal.hs:98:1-63 844 1 0.0 0.0 0.0 0.0 0 80 + crReader Options.Applicative.Types src/Options/Applicative/Types.hs:232:5-12 846 1 0.0 0.0 0.0 0.0 0 0 + optionsParser Main ghc-prof-flamegraph.hs:(35,1)-(55,57) 847 0 0.0 0.0 0.0 0.0 0 64 + strArgument Options.Applicative.Builder src/Options/Applicative/Builder.hs:298:1-26 849 0 0.0 0.0 0.0 0.0 0 0 + str Options.Applicative.Builder src/Options/Applicative/Builder.hs:134:1-30 850 0 0.0 0.0 0.0 0.0 0 32 + hoistEither Options.Applicative.Internal src/Options/Applicative/Internal.hs:88:1-34 845 1 0.0 0.0 0.0 0.0 0 104 + bashCompletionParser Options.Applicative.BashCompletion src/Options/Applicative/BashCompletion.hs:(40,1)-(72,7) 740 0 0.0 0.0 0.0 0.0 0 0 + fromM Options.Applicative.Types src/Options/Applicative/Types.hs:288:1-26 741 0 0.0 0.0 0.0 0.0 0 0 + manyM Options.Applicative.Types src/Options/Applicative/Types.hs:(294,1)-(298,30) 742 0 0.0 0.0 0.0 0.0 0 0 + runParserM Options.Applicative.Types src/Options/Applicative/Types.hs:274:5-14 744 1 0.0 0.0 0.0 0.0 0 0 + oneM Options.Applicative.Types src/Options/Applicative/Types.hs:291:1-26 743 0 0.0 0.0 0.0 0.0 0 0 + handleParseResult Options.Applicative.Extra src/Options/Applicative/Extra.hs:(125,1)-(137,17) 888 1 0.0 0.0 0.0 0.0 0 16 diff --git a/tests/data/collapse-ghcprof/utf8.prof b/tests/data/collapse-ghcprof/utf8.prof new file mode 100644 index 00000000..d91d792a --- /dev/null +++ b/tests/data/collapse-ghcprof/utf8.prof @@ -0,0 +1,30 @@ + Sun Aug 13 10:47 2023 Time and Allocation Profiling Report (Final) + + utf8test-exe +RTS -N -P -RTS + + total time = 10.25 secs (19827 ticks @ 1000 us, 32 processors) + total alloc = 90,486,853,312 bytes (excludes profiling overheads) + +COST CENTRE MODULE SRC %time %alloc ticks bytes + +你好世界 Lib src/Lib.hs:(14,1)-(15,41) 97.4 100.0 19317 90486357376 +MAIN MAIN 2.6 0.0 510 456096 + + + individual inherited +COST CENTRE MODULE SRC no. entries %time %alloc %time %alloc ticks bytes + +MAIN MAIN 168 0 2.6 0.0 100.0 100.0 510 456096 + CAF GHC.Conc.Signal 289 0 0.0 0.0 0.0 0.0 0 640 + CAF GHC.IO.Encoding 279 0 0.0 0.0 0.0 0.0 0 2448 + CAF GHC.IO.Encoding.Iconv 277 0 0.0 0.0 0.0 0.0 0 200 + CAF GHC.IO.Handle.FD 269 0 0.0 0.0 0.0 0.0 0 34736 + CAF GHC.Event.Thread 228 0 0.0 0.0 0.0 0.0 0 1528 + CAF:f_rPV Lib 295 0 0.0 0.0 0.0 0.0 0 256 + CAF:main1 Main 334 0 0.0 0.0 0.0 0.0 0 16 + main Main app/Main.hs:6:1-11 336 1 0.0 0.0 0.0 0.0 0 0 + CAF:一些函数1 Lib 296 0 0.0 0.0 0.0 0.0 0 16 + 一二三 Lib src/Lib.hs:11:1-10 338 1 0.0 0.0 0.0 0.0 0 0 + 一些函数 Lib src/Lib.hs:8:1-10 337 1 0.0 0.0 0.0 0.0 0 0 + 你好世界 Lib src/Lib.hs:(14,1)-(15,41) 339 1 0.0 0.0 0.0 0.0 0 0 + 你好世界 Lib src/Lib.hs:(14,1)-(15,41) 340 0 97.4 100.0 97.4 100.0 19317 90486357376 From 45558809934935cae894b62fcc256f2a51bdb987 Mon Sep 17 00:00:00 2001 From: Jon Gjengset Date: Sat, 16 Sep 2023 21:40:54 +0200 Subject: [PATCH 14/39] Release 0.11.17 --- CHANGELOG.md | 7 +++++-- Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f48d2d0..00ec5558 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,12 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ### Added -- Added collapse-ghcprof. [#300](https://github.com/jonhoo/inferno/pull/300) - ### Changed ### Removed +## [0.11.17] - 2023-09-16 +### Added + +- Added collapse-ghcprof. [#300](https://github.com/jonhoo/inferno/pull/300) + ## [0.11.16] - 2023-08-20 ### Added diff --git a/Cargo.lock b/Cargo.lock index 678d0e60..3b9d47c5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -530,7 +530,7 @@ dependencies = [ [[package]] name = "inferno" -version = "0.11.16" +version = "0.11.17" dependencies = [ "ahash", "assert_cmd", diff --git a/Cargo.toml b/Cargo.toml index 52000fc7..11a2ff00 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "inferno" -version = "0.11.16" +version = "0.11.17" edition = "2021" authors = ["Jon Gjengset "] From 993b100480e48f50039b12ea81482c465215f234 Mon Sep 17 00:00:00 2001 From: Jon Gjengset Date: Sat, 11 Nov 2023 15:07:49 +0100 Subject: [PATCH 15/39] Release 0.11.18 with ahash update (for bins) Closes #307 --- CHANGELOG.md | 8 ++++++++ Cargo.lock | 27 ++++++++++++++++++++++++--- Cargo.toml | 2 +- 3 files changed, 33 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 00ec5558..9149f823 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Removed +## [0.11.18] - 2023-11-11 +### Changed + +- Updated ahash version in Cargo.lock for binary consumers. + See https://github.com/tkaitchuck/aHash/issues/163. + +### Removed + ## [0.11.17] - 2023-09-16 ### Added diff --git a/Cargo.lock b/Cargo.lock index 3b9d47c5..6982c9cb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10,14 +10,15 @@ checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" [[package]] name = "ahash" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" +checksum = "cd7d5a2cecb58716e47d67d5703a249964b14c7be1ec3cad3affc295b2d1c35d" dependencies = [ "cfg-if", "getrandom", "once_cell", "version_check", + "zerocopy", ] [[package]] @@ -530,7 +531,7 @@ dependencies = [ [[package]] name = "inferno" -version = "0.11.17" +version = "0.11.18" dependencies = [ "ahash", "assert_cmd", @@ -1270,3 +1271,23 @@ name = "yansi" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" + +[[package]] +name = "zerocopy" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a7af71d8643341260a65f89fa60c0eeaa907f34544d8f6d9b0df72f069b5e74" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9731702e2f0617ad526794ae28fbc6f6ca8849b5ba729666c2a5bc4b6ddee2cd" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] diff --git a/Cargo.toml b/Cargo.toml index 11a2ff00..16c73b25 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "inferno" -version = "0.11.17" +version = "0.11.18" edition = "2021" authors = ["Jon Gjengset "] From 86131d445bbe338c0b178933e1fa93393644fc05 Mon Sep 17 00:00:00 2001 From: Jon Gjengset Date: Sat, 11 Nov 2023 15:10:40 +0100 Subject: [PATCH 16/39] Fix future-incompat --- src/flamegraph/color/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/flamegraph/color/mod.rs b/src/flamegraph/color/mod.rs index 845761d7..4946de0a 100644 --- a/src/flamegraph/color/mod.rs +++ b/src/flamegraph/color/mod.rs @@ -75,7 +75,7 @@ pub enum Palette { impl Palette { /// The valid set of palettes (via `FromStr`). - pub const VARIANTS: &[&'static str] = &[ + pub const VARIANTS: &'static [&'static str] = &[ "aqua", "blue", "green", "hot", "io", "java", "js", "mem", "orange", "perl", "python", "purple", "red", "rust", "wakeup", "yellow", ]; From d877809b74b58d877ee634a38fff9909689949c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Marcos?= Date: Sat, 25 Nov 2023 12:59:28 -0300 Subject: [PATCH 17/39] Strip symbols of inferno binaries to decrease size by 24x (#310) --- CHANGELOG.md | 2 ++ Cargo.toml | 7 ++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9149f823..adb14d79 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- By default, make `cargo install` strip all binaries. [#310](https://github.com/jonhoo/inferno/pull/310) + ### Removed ## [0.11.18] - 2023-11-11 diff --git a/Cargo.toml b/Cargo.toml index 16c73b25..bb983cf9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,6 +15,10 @@ license = "CDDL-1.0" exclude = ["/tests/**", "/flamegraph/**", "/*.perf"] +[profile.release] +strip = true # To use flamegraph on inferno binaries, comment this line +# debug = true # and uncomment this line. + [features] default = ["cli", "multithreaded", "nameattr"] cli = ["clap", "env_logger"] @@ -65,9 +69,6 @@ regex = { version = "1.6", default-features = false, features = ["std"] } serde = { version = "1.0.145" } testing_logger = "0.1.1" -[profile.release] -debug = true - [lib] name = "inferno" path = "src/lib.rs" From 1b61f2ed9b2d91b43679992538d1ed4a7a150840 Mon Sep 17 00:00:00 2001 From: Jon Gjengset Date: Sat, 25 Nov 2023 17:00:45 +0100 Subject: [PATCH 18/39] Release 0.11.19 with stripped binaries --- CHANGELOG.md | 7 +- Cargo.lock | 285 +++++++++++++++++++++++---------------------------- Cargo.toml | 2 +- 3 files changed, 136 insertions(+), 158 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index adb14d79..9f910e86 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,10 +9,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed -- By default, make `cargo install` strip all binaries. [#310](https://github.com/jonhoo/inferno/pull/310) - ### Removed +## [0.11.19] - 2023-11-25 +### Changed + +- By default, make `cargo install` strip all binaries. [#310](https://github.com/jonhoo/inferno/pull/310) + ## [0.11.18] - 2023-11-11 ### Changed diff --git a/Cargo.lock b/Cargo.lock index 6982c9cb..01e397ce 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10,9 +10,9 @@ checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" [[package]] name = "ahash" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd7d5a2cecb58716e47d67d5703a249964b14c7be1ec3cad3affc295b2d1c35d" +checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a" dependencies = [ "cfg-if", "getrandom", @@ -23,9 +23,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.0.4" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6748e8def348ed4d14996fa801f4122cd763fff530258cdc03f64b25f89d3a5a" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" dependencies = [ "memchr", ] @@ -38,30 +38,29 @@ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" [[package]] name = "anstream" -version = "0.3.2" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163" +checksum = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", - "is-terminal", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.1" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd" +checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" [[package]] name = "anstyle-parse" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333" +checksum = "317b9a89c1868f5ea6ff1d9539a69f45dffc21ce321ac1fd1160dfa48c8e2140" dependencies = [ "utf8parse", ] @@ -77,9 +76,9 @@ dependencies = [ [[package]] name = "anstyle-wincon" -version = "1.0.2" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c677ab05e09154296dd37acecd46420c17b9713e8366facafa8fc0885167cf4c" +checksum = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628" dependencies = [ "anstyle", "windows-sys", @@ -131,15 +130,15 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" +checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" [[package]] name = "bstr" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6798148dccfbff0fae41c7574d2fa8f1ef3492fba0face179de5d8d447d67b05" +checksum = "542f33a8835a0884b006a0c3df3dadd99c0c3f296ed26c2fdc8028e01ad6230c" dependencies = [ "memchr", "regex-automata", @@ -148,15 +147,15 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.13.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" [[package]] name = "bytemuck" -version = "1.13.1" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea" +checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" [[package]] name = "cast" @@ -164,15 +163,6 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" -[[package]] -name = "cc" -version = "1.0.82" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "305fe645edc1442a0fa8b6726ba61d422798d37a52e12eaecf4b022ebbb88f01" -dependencies = [ - "libc", -] - [[package]] name = "cfg-if" version = "1.0.0" @@ -220,32 +210,31 @@ dependencies = [ [[package]] name = "clap" -version = "4.3.23" +version = "4.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03aef18ddf7d879c15ce20f04826ef8418101c7e528014c3eeea13321047dca3" +checksum = "2275f18819641850fa26c89acc84d465c1bf91ce57bc2748b28c420473352f64" dependencies = [ "clap_builder", "clap_derive", - "once_cell", ] [[package]] name = "clap_builder" -version = "4.3.23" +version = "4.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ce6fffb678c9b80a70b6b6de0aad31df727623a70fd9a842c30cd573e2fa98" +checksum = "07cdf1b148b25c1e1f7a42225e30a0d99a615cd4637eae7365548dd4529b95bc" dependencies = [ "anstream", "anstyle", - "clap_lex 0.5.0", + "clap_lex 0.6.0", "strsim", ] [[package]] name = "clap_derive" -version = "4.3.12" +version = "4.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54a9bb5758fc5dfe728d1019941681eccaf0cf8a4189b692a0ee2f2ecf90a050" +checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" dependencies = [ "heck", "proc-macro2", @@ -264,9 +253,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b" +checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" [[package]] name = "colorchoice" @@ -304,7 +293,7 @@ dependencies = [ "ciborium", "clap 3.2.25", "criterion-plot", - "itertools", + "itertools 0.10.5", "lazy_static", "num-traits", "oorandom", @@ -325,7 +314,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" dependencies = [ "cast", - "itertools", + "itertools 0.10.5", ] [[package]] @@ -379,12 +368,12 @@ checksum = "7762d17f1241643615821a8455a0b2c3e803784b058693d990b11f2dce25a0ca" [[package]] name = "dashmap" -version = "5.5.0" +version = "5.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6943ae99c34386c84a470c499d3414f66502a41340aa895406e0d2e4a207b91d" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" dependencies = [ "cfg-if", - "hashbrown 0.14.0", + "hashbrown 0.14.2", "lock_api", "once_cell", "parking_lot_core", @@ -416,9 +405,9 @@ checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" [[package]] name = "env_logger" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0" +checksum = "95b3f3e67048839cb0d0781f445682a35113da7121f7c949db0e2be96a4fbece" dependencies = [ "log", ] @@ -431,30 +420,19 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.2" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4f" +checksum = "f258a7194e7f7c2a7837a8913aeab7fd8c383457034fa20ce4dd3dcb813e8eb8" dependencies = [ - "errno-dragonfly", "libc", "windows-sys", ] -[[package]] -name = "errno-dragonfly" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" -dependencies = [ - "cc", - "libc", -] - [[package]] name = "getrandom" -version = "0.2.10" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" dependencies = [ "cfg-if", "libc", @@ -484,9 +462,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.0" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" +checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156" [[package]] name = "heck" @@ -505,9 +483,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" +checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" [[package]] name = "indexmap" @@ -521,27 +499,27 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" dependencies = [ "equivalent", - "hashbrown 0.14.0", + "hashbrown 0.14.2", ] [[package]] name = "inferno" -version = "0.11.18" +version = "0.11.19" dependencies = [ "ahash", "assert_cmd", - "clap 4.3.23", + "clap 4.4.8", "criterion", "crossbeam-channel", "crossbeam-utils", "dashmap", "env_logger", - "indexmap 2.0.0", + "indexmap 2.1.0", "is-terminal", "itoa", "libflate", @@ -565,7 +543,7 @@ version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" dependencies = [ - "hermit-abi 0.3.2", + "hermit-abi 0.3.3", "rustix", "windows-sys", ] @@ -579,6 +557,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.9" @@ -587,9 +574,9 @@ checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" [[package]] name = "js-sys" -version = "0.3.64" +version = "0.3.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +checksum = "54c0c35952f67de54bb584e9fd912b3023117cbafc0a77d8f3dee1fb5f572fe8" dependencies = [ "wasm-bindgen", ] @@ -602,9 +589,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.147" +version = "0.2.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" +checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" [[package]] name = "libflate" @@ -632,15 +619,15 @@ dependencies = [ [[package]] name = "linux-raw-sys" -version = "0.4.5" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503" +checksum = "969488b55f8ac402214f3f5fd243ebb7206cf82de60d3172994707a4bcc2b829" [[package]] name = "lock_api" -version = "0.4.10" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" dependencies = [ "autocfg", "scopeguard", @@ -660,9 +647,9 @@ checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" [[package]] name = "memchr" -version = "2.5.0" +version = "2.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" [[package]] name = "memoffset" @@ -685,23 +672,13 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" dependencies = [ "autocfg", ] -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi 0.3.2", - "libc", -] - [[package]] name = "once_cell" version = "1.18.0" @@ -716,15 +693,15 @@ checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" [[package]] name = "os_str_bytes" -version = "6.5.1" +version = "6.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d5d9eb14b174ee9aa2ef96dc2b94637a2d4b6e7cb873c7e171f0c20c6cf3eac" +checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" [[package]] name = "parking_lot_core" -version = "0.9.8" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" dependencies = [ "cfg-if", "libc", @@ -769,13 +746,13 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "predicates" -version = "3.0.3" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09963355b9f467184c04017ced4a2ba2d75cbcb4e7462690d388233253d4b1a9" +checksum = "6dfc28575c2e3f19cb3c73b93af36460ae898d426eba6fc15b9bd2a5220758a0" dependencies = [ "anstyle", "difflib", - "itertools", + "itertools 0.11.0", "predicates-core", ] @@ -807,9 +784,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.66" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" dependencies = [ "unicode-ident", ] @@ -864,9 +841,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" +checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1" dependencies = [ "either", "rayon-core", @@ -874,30 +851,28 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" +checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed" dependencies = [ - "crossbeam-channel", "crossbeam-deque", "crossbeam-utils", - "num_cpus", ] [[package]] name = "redox_syscall" -version = "0.3.5" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" dependencies = [ "bitflags 1.3.2", ] [[package]] name = "regex" -version = "1.9.3" +version = "1.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81bc1d4caf89fac26a70747fe603c130093b53c773888797a6329091246d651a" +checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" dependencies = [ "aho-corasick", "memchr", @@ -907,9 +882,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.3.6" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed1ceff11a1dddaee50c9dc8e4938bd106e9d89ae372f192311e7da498e3b69" +checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" dependencies = [ "aho-corasick", "memchr", @@ -918,15 +893,15 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.7.4" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" [[package]] name = "rgb" -version = "0.8.36" +version = "0.8.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20ec2d3e3fc7a92ced357df9cebd5a10b6fb2aa1ee797bf7e9ce2f17dffc8f59" +checksum = "05aaa8004b64fd573fc9d002f4e632d51ad4f026c2b5ba95fcb6c2f32c2c47d8" dependencies = [ "bytemuck", ] @@ -939,11 +914,11 @@ checksum = "3582f63211428f83597b51b2ddb88e2a91a9d52d12831f9d08f5e624e8977422" [[package]] name = "rustix" -version = "0.38.8" +version = "0.38.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ed4fa021d81c8392ce04db050a3da9a60299050b7ae1cf482d862b54a7218f" +checksum = "dc99bc2d4f1fed22595588a013687477aedf3cdcfb26558c559edb67b4d9b22e" dependencies = [ - "bitflags 2.4.0", + "bitflags 2.4.1", "errno", "libc", "linux-raw-sys", @@ -973,18 +948,18 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "serde" -version = "1.0.183" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32ac8da02677876d532745a130fc9d8e6edfa81a269b107c5b00829b91d8eb3c" +checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.183" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aafe972d60b0b9bee71a91b92fee2d4fb3c9d7e8f6b179aa99f27203d99a4816" +checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" dependencies = [ "proc-macro2", "quote", @@ -993,9 +968,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.105" +version = "1.0.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693151e1ac27563d6dbcec9dee9fbd5da8539b20fa14ad3752b2e6d363ace360" +checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" dependencies = [ "itoa", "ryu", @@ -1004,9 +979,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.11.0" +version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" +checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" [[package]] name = "str_stack" @@ -1022,9 +997,9 @@ checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] name = "syn" -version = "2.0.29" +version = "2.0.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c324c494eba9d92503e6f1ef2e6df781e78f6a7705a0202d9801b198807d518a" +checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a" dependencies = [ "proc-macro2", "quote", @@ -1064,9 +1039,9 @@ dependencies = [ [[package]] name = "unicode-ident" -version = "1.0.11" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "utf8parse" @@ -1091,9 +1066,9 @@ dependencies = [ [[package]] name = "walkdir" -version = "2.3.3" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" +checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" dependencies = [ "same-file", "winapi-util", @@ -1107,9 +1082,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.87" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +checksum = "7daec296f25a1bae309c0cd5c29c4b260e510e6d813c286b19eaadf409d40fce" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -1117,9 +1092,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.87" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +checksum = "e397f4664c0e4e428e8313a469aaa58310d302159845980fd23b0f22a847f217" dependencies = [ "bumpalo", "log", @@ -1132,9 +1107,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.87" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +checksum = "5961017b3b08ad5f3fe39f1e79877f8ee7c23c5e5fd5eb80de95abc41f1f16b2" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1142,9 +1117,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.87" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +checksum = "c5353b8dab669f5e10f5bd76df26a9360c748f054f862ff5f3f8aae0c7fb3907" dependencies = [ "proc-macro2", "quote", @@ -1155,15 +1130,15 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.87" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +checksum = "0d046c5d029ba91a1ed14da14dca44b68bf2f124cfbaf741c54151fdb3e0750b" [[package]] name = "web-sys" -version = "0.3.64" +version = "0.3.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" +checksum = "5db499c5f66323272151db0e666cd34f78617522fb0c1604d31a27c50c206a85" dependencies = [ "js-sys", "wasm-bindgen", @@ -1187,9 +1162,9 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" dependencies = [ "winapi", ] @@ -1274,18 +1249,18 @@ checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" [[package]] name = "zerocopy" -version = "0.7.3" +version = "0.7.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a7af71d8643341260a65f89fa60c0eeaa907f34544d8f6d9b0df72f069b5e74" +checksum = "e97e415490559a91254a2979b4829267a57d2fcd741a98eee8b722fb57289aa0" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.3" +version = "0.7.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9731702e2f0617ad526794ae28fbc6f6ca8849b5ba729666c2a5bc4b6ddee2cd" +checksum = "dd7e48ccf166952882ca8bd778a43502c64f33bf94c12ebe2a7f08e5a0f6689f" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index bb983cf9..f27f795c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "inferno" -version = "0.11.18" +version = "0.11.19" edition = "2021" authors = ["Jon Gjengset "] From 2fde0bc5d8516aeba4a9b432480e020b18de292d Mon Sep 17 00:00:00 2001 From: Jon Gjengset Date: Sat, 25 Nov 2023 17:18:03 +0100 Subject: [PATCH 19/39] Fix CI for MSRV --- Cargo.lock | 97 +++++++++++++++++++++++++++--------------------------- Cargo.toml | 1 + 2 files changed, 49 insertions(+), 49 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 01e397ce..5f3777c8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -38,29 +38,36 @@ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" [[package]] name = "anstream" -version = "0.6.4" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44" +checksum = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163" dependencies = [ - "anstyle", + "anstyle 1.0.2", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", + "is-terminal", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" +checksum = "23ea9e81bd02e310c216d080f6223c179012256e5151c41db88d12c88a1684d2" + +[[package]] +name = "anstyle" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15c4c2c83f81532e5845a733998b6971faca23490340a418e9b72a3ec9de12ea" [[package]] name = "anstyle-parse" -version = "0.2.2" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317b9a89c1868f5ea6ff1d9539a69f45dffc21ce321ac1fd1160dfa48c8e2140" +checksum = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333" dependencies = [ "utf8parse", ] @@ -76,11 +83,11 @@ dependencies = [ [[package]] name = "anstyle-wincon" -version = "3.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628" +checksum = "c677ab05e09154296dd37acecd46420c17b9713e8366facafa8fc0885167cf4c" dependencies = [ - "anstyle", + "anstyle 1.0.2", "windows-sys", ] @@ -92,11 +99,11 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "assert_cmd" -version = "2.0.12" +version = "2.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88903cb14723e4d4003335bb7f8a14f27691649105346a0f0957466c096adfe6" +checksum = "ec0b2340f55d9661d76793b2bfc2eb0e62689bd79d067a95707ea762afd5e9dd" dependencies = [ - "anstyle", + "anstyle 0.3.5", "bstr", "doc-comment", "predicates", @@ -136,9 +143,9 @@ checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" [[package]] name = "bstr" -version = "1.8.0" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "542f33a8835a0884b006a0c3df3dadd99c0c3f296ed26c2fdc8028e01ad6230c" +checksum = "4c2f7349907b712260e64b0afe2f84692af14a454be26187d9df565c7f69266a" dependencies = [ "memchr", "regex-automata", @@ -210,31 +217,32 @@ dependencies = [ [[package]] name = "clap" -version = "4.4.8" +version = "4.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2275f18819641850fa26c89acc84d465c1bf91ce57bc2748b28c420473352f64" +checksum = "fb690e81c7840c0d7aade59f242ea3b41b9bc27bcd5997890e7702ae4b32e487" dependencies = [ "clap_builder", "clap_derive", + "once_cell", ] [[package]] name = "clap_builder" -version = "4.4.8" +version = "4.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07cdf1b148b25c1e1f7a42225e30a0d99a615cd4637eae7365548dd4529b95bc" +checksum = "5ed2e96bc16d8d740f6f48d663eddf4b8a0983e79210fd55479b7bcd0a69860e" dependencies = [ "anstream", - "anstyle", - "clap_lex 0.6.0", + "anstyle 1.0.2", + "clap_lex 0.5.0", "strsim", ] [[package]] name = "clap_derive" -version = "4.4.7" +version = "4.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" +checksum = "54a9bb5758fc5dfe728d1019941681eccaf0cf8a4189b692a0ee2f2ecf90a050" dependencies = [ "heck", "proc-macro2", @@ -253,9 +261,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.6.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" +checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b" [[package]] name = "colorchoice" @@ -293,7 +301,7 @@ dependencies = [ "ciborium", "clap 3.2.25", "criterion-plot", - "itertools 0.10.5", + "itertools", "lazy_static", "num-traits", "oorandom", @@ -314,7 +322,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" dependencies = [ "cast", - "itertools 0.10.5", + "itertools", ] [[package]] @@ -368,9 +376,9 @@ checksum = "7762d17f1241643615821a8455a0b2c3e803784b058693d990b11f2dce25a0ca" [[package]] name = "dashmap" -version = "5.5.3" +version = "5.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" +checksum = "9b101bb8960ab42ada6ae98eb82afcea4452294294c45b681295af26610d6d28" dependencies = [ "cfg-if", "hashbrown 0.14.2", @@ -513,7 +521,7 @@ version = "0.11.19" dependencies = [ "ahash", "assert_cmd", - "clap 4.4.8", + "clap 4.3.24", "criterion", "crossbeam-channel", "crossbeam-utils", @@ -557,15 +565,6 @@ dependencies = [ "either", ] -[[package]] -name = "itertools" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" -dependencies = [ - "either", -] - [[package]] name = "itoa" version = "1.0.9" @@ -746,13 +745,13 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "predicates" -version = "3.0.4" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dfc28575c2e3f19cb3c73b93af36460ae898d426eba6fc15b9bd2a5220758a0" +checksum = "09963355b9f467184c04017ced4a2ba2d75cbcb4e7462690d388233253d4b1a9" dependencies = [ - "anstyle", + "anstyle 1.0.2", "difflib", - "itertools 0.11.0", + "itertools", "predicates-core", ] @@ -870,9 +869,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.2" +version = "1.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +checksum = "ebee201405406dbf528b8b672104ae6d6d63e6d118cb10e4d51abbc7b58044ff" dependencies = [ "aho-corasick", "memchr", @@ -882,9 +881,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.3" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +checksum = "59b23e92ee4318893fa3fe3e6fb365258efbfe6ac6ab30f090cdcbb7aa37efa9" dependencies = [ "aho-corasick", "memchr", @@ -893,9 +892,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.2" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" +checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" [[package]] name = "rgb" diff --git a/Cargo.toml b/Cargo.toml index f27f795c..20f0db70 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,6 +3,7 @@ name = "inferno" version = "0.11.19" edition = "2021" authors = ["Jon Gjengset "] +rust-version = "1.64.0" readme = "README.md" description = "Rust port of the FlameGraph performance profiling tool suite" From 06deb00bda2380b4aa700974bcee112a214f4d86 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Dec 2023 15:21:13 -0500 Subject: [PATCH 20/39] Bump zerocopy from 0.7.26 to 0.7.31 (#311) Bumps [zerocopy](https://github.com/google/zerocopy) from 0.7.26 to 0.7.31. - [Release notes](https://github.com/google/zerocopy/releases) - [Changelog](https://github.com/google/zerocopy/blob/main/CHANGELOG.md) - [Commits](https://github.com/google/zerocopy/compare/v0.7.26...v0.7.31) --- updated-dependencies: - dependency-name: zerocopy dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5f3777c8..72f0147d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1248,18 +1248,18 @@ checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" [[package]] name = "zerocopy" -version = "0.7.26" +version = "0.7.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e97e415490559a91254a2979b4829267a57d2fcd741a98eee8b722fb57289aa0" +checksum = "1c4061bedbb353041c12f413700357bec76df2c7e2ca8e4df8bac24c6bf68e3d" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.26" +version = "0.7.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd7e48ccf166952882ca8bd778a43502c64f33bf94c12ebe2a7f08e5a0f6689f" +checksum = "b3c129550b3e6de3fd0ba67ba5c81818f9805e58b8d7fee80a3a59d2c9fc601a" dependencies = [ "proc-macro2", "quote", From 1aa8ef66b514b40bd72f229aaea72f27d6343a9b Mon Sep 17 00:00:00 2001 From: Jon Gjengset Date: Sun, 14 Jul 2024 14:46:19 +0200 Subject: [PATCH 21/39] Bump dashmap Replaces https://github.com/jonhoo/inferno/pull/317 --- .github/workflows/check.yml | 2 +- Cargo.lock | 5 +++-- Cargo.toml | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 6678ceed..4219529a 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -79,7 +79,7 @@ jobs: # https://docs.github.com/en/actions/learn-github-actions/contexts#context-availability strategy: matrix: - msrv: ["1.64.0"] # clap 4 (via clap_lex) + msrv: ["1.65.0"] # dashmap 6 name: ubuntu / ${{ matrix.msrv }} steps: - uses: actions/checkout@v4 diff --git a/Cargo.lock b/Cargo.lock index 72f0147d..9aa008cd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -376,11 +376,12 @@ checksum = "7762d17f1241643615821a8455a0b2c3e803784b058693d990b11f2dce25a0ca" [[package]] name = "dashmap" -version = "5.5.2" +version = "6.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b101bb8960ab42ada6ae98eb82afcea4452294294c45b681295af26610d6d28" +checksum = "804c8821570c3f8b70230c2ba75ffa5c0f9a4189b9a432b6656c536712acae28" dependencies = [ "cfg-if", + "crossbeam-utils", "hashbrown 0.14.2", "lock_api", "once_cell", diff --git a/Cargo.toml b/Cargo.toml index 20f0db70..1db22799 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -31,7 +31,7 @@ ahash = "0.8" is-terminal = "0.4.3" crossbeam-utils = { version = "0.8", optional = true } crossbeam-channel = { version = "0.5", optional = true } -dashmap = { version = "5", optional = true } +dashmap = { version = "6.0.1", optional = true } env_logger = { version = "0.10", default-features = false, optional = true } indexmap = { version = "2.0", optional = true } itoa = "1" From 9929fba912aef7debb831b4513e8f33fc21a3b14 Mon Sep 17 00:00:00 2001 From: Jon Gjengset Date: Sun, 14 Jul 2024 14:52:22 +0200 Subject: [PATCH 22/39] Fix broken version of rle-decode-fast --- Cargo.lock | 1 + Cargo.toml | 16 ++++++++-------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9aa008cd..173d1d2b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -541,6 +541,7 @@ dependencies = [ "rand", "regex", "rgb", + "rle-decode-fast", "serde", "str_stack", "testing_logger", diff --git a/Cargo.toml b/Cargo.toml index 1db22799..39f6c1e8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -50,6 +50,11 @@ libflate = "2" maplit = "1.0.1" pretty_assertions = "1" rand = { version = "0.8", features = ["small_rng"] } +serde = { version = "1.0.145" } +testing_logger = "0.1.1" + +# for -Zminimal-versions +[target.'cfg(any())'.dependencies] # Force criterion to pull in regex 1.6 instead of 1.5 during minimal version CI; # otherwise compilation fails with... # ``` @@ -61,14 +66,9 @@ rand = { version = "0.8", features = ["small_rng"] } # ``` # Forcing >= 1.5.1 would be enough to solve this issue, but since regex 1.6.0 # supports our minimum supported rust version of 1.59.0, regex 1.6.x is fine -regex = { version = "1.6", default-features = false, features = ["std"] } -# Force criterion to pull in serde 1.0.145 instead of 1.0.0 during minimal version CI; -# otherwise compilation fails with many errors (since serde 1.0.0 is such an old -# crate). There is likely a lower version of serde than 1.0.145 that would also -# successfully compile in minimal version CI, but since serde 1.0.145 is supported -# by our minimum supported rust version of 1.59.0, being on >= 1.0.145 is fine -serde = { version = "1.0.145" } -testing_logger = "0.1.1" +regex = { version = "1.6", default-features = false, optional = true } +# rle-decode-fast 1.0.0 no longer builds with newer Rust +rle-decode-fast = { version = "1.0.3", default-features = false, optional = true } [lib] name = "inferno" From bd14b1f8db31205862819e0e3710efcf66b02be4 Mon Sep 17 00:00:00 2001 From: Jon Gjengset Date: Sun, 14 Jul 2024 14:54:43 +0200 Subject: [PATCH 23/39] Bump ahash to fix newer nightly builds https://github.com/tkaitchuck/aHash/issues/200 --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 173d1d2b..0f15f01d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10,9 +10,9 @@ checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" [[package]] name = "ahash" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a" +checksum = "77c3a9648d43b9cd48db467b3f87fdd6e146bcc88ab0180006cef2179fe11d01" dependencies = [ "cfg-if", "getrandom", From 223d9d7fe7e081a86eb89fe867f20000fa86c500 Mon Sep 17 00:00:00 2001 From: Orca-bit <52285880+Orca-bit@users.noreply.github.com> Date: Tue, 25 Jun 2024 19:26:10 +0800 Subject: [PATCH 24/39] take period into account when collapsing stacks --- src/collapse/perf.rs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/collapse/perf.rs b/src/collapse/perf.rs index 45b536d7..c29272e7 100644 --- a/src/collapse/perf.rs +++ b/src/collapse/perf.rs @@ -130,6 +130,9 @@ pub struct Folder { /// Function entries on the stack in this entry thus far. stack: VecDeque, + /// period of current event + period: Option, + // Options... opt: Options, } @@ -148,6 +151,7 @@ impl From for Folder { pname: String::default(), stack_filter: StackFilter::Keep, stack: VecDeque::default(), + period: None, opt, } } @@ -262,6 +266,7 @@ impl CollapsePrivate for Folder { pname: String::new(), stack_filter: StackFilter::Keep, stack: VecDeque::default(), + period: None, opt: self.opt.clone(), } } @@ -375,9 +380,12 @@ impl Folder { if let Some((comm, pid, tid, end)) = Self::event_line_parts(line) { let mut by_colons = line[end..].splitn(3, ':').skip(1); - let event = by_colons - .next() - .and_then(|has_event| has_event.rsplit(' ').next()); + let event = by_colons.next().and_then(|period_and_event| { + let mut it = period_and_event.rsplit(' '); + let event_name = it.next(); + self.period = it.next().and_then(|s| s.parse::().ok()); + event_name + }); if let Some(event) = event { if let Some(ref event_filter) = self.event_filter { if event != event_filter { @@ -586,13 +594,14 @@ impl Folder { stack_str.pop(); // count it! - occurrences.insert_or_add(stack_str, 1); + occurrences.insert_or_add(stack_str, self.period.unwrap_or(1)); } // reset for the next event self.in_event = false; self.stack_filter = StackFilter::Keep; self.stack.clear(); + self.period = None; } } From 7069a8e4c9c59bc96c6d1880b0a20ab6f050f1c5 Mon Sep 17 00:00:00 2001 From: Jon Gjengset Date: Sun, 14 Jul 2024 15:18:44 +0200 Subject: [PATCH 25/39] Bring tests (and flamegraph) along --- flamegraph | 2 +- .../cpp-stacks-std-function-collapsed.txt | 16 ++-- .../results/go-stacks-collapsed.txt | 10 +-- .../results/java-inline-collapsed.txt | 26 +++--- ...erf-rust-Yamakaky-dcpu-collapsed-addrs.txt | 90 +++++++++---------- .../perf-rust-Yamakaky-dcpu-collapsed-all.txt | 90 +++++++++---------- .../perf-rust-Yamakaky-dcpu-collapsed-jit.txt | 90 +++++++++---------- ...rf-rust-Yamakaky-dcpu-collapsed-kernel.txt | 90 +++++++++---------- .../perf-rust-Yamakaky-dcpu-collapsed-pid.txt | 90 +++++++++---------- .../perf-rust-Yamakaky-dcpu-collapsed-tid.txt | 90 +++++++++---------- .../results/single-event-collapsed.txt | 2 +- .../sourcepawn-jitdump-collapsed-jit.txt | 2 +- .../versioned-vmlinux-collapsed-kernel.txt | 2 +- 13 files changed, 300 insertions(+), 300 deletions(-) diff --git a/flamegraph b/flamegraph index 759b2108..f79a352e 160000 --- a/flamegraph +++ b/flamegraph @@ -1 +1 @@ -Subproject commit 759b2108ac2f0b3e789bba79e63036737753ff4d +Subproject commit f79a352eb75a9be97760ca4d8226b66b2b047d50 diff --git a/tests/data/collapse-perf/results/cpp-stacks-std-function-collapsed.txt b/tests/data/collapse-perf/results/cpp-stacks-std-function-collapsed.txt index 7a7a044d..52265f58 100644 --- a/tests/data/collapse-perf/results/cpp-stacks-std-function-collapsed.txt +++ b/tests/data/collapse-perf/results/cpp-stacks-std-function-collapsed.txt @@ -1,8 +1,8 @@ -perf_stacks;[unknown];std::ostream::sentry::sentry 1 -perf_stacks;_dl_start;[[kernel.kallsyms]] 1 -perf_stacks;_start;[[kernel.kallsyms]] 6 -perf_stacks;_start;__libc_start_main;__libc_csu_init;_GLOBAL__sub_I_main;__static_initialization_and_destruction_0;std::ios_base::Init::Init;std::locale::locale;[libstdc++.so.6.0.25];std::locale::_Impl::_Impl;std::__timepunct::__timepunct;std::__timepunct::_M_initialize_timepunct 1 -perf_stacks;_start;__libc_start_main;main;std::endl >;std::ostream::put;_IO_new_file_overflow;_IO_new_do_write;new_do_write;_IO_new_file_write;__GI___libc_write;[[kernel.kallsyms]] 34 -perf_stacks;_start;__libc_start_main;main;std::function::operator;std::_Function_handler::_M_invoke 1 -perf_stacks;_start;__libc_start_main;main;std::ostream::flush 1 -perf_stacks;_start;_dl_start;_dl_start_final;_dl_sysdep_start;dl_main;_dl_map_object_deps;_dl_catch_exception;openaux;_dl_map_object;_dl_map_object_from_fd;_dl_map_segments;__mmap64;[[kernel.kallsyms]] 1 +perf_stacks;[unknown];std::ostream::sentry::sentry 4614996 +perf_stacks;_dl_start;[[kernel.kallsyms]] 438507 +perf_stacks;_start;[[kernel.kallsyms]] 29005 +perf_stacks;_start;__libc_start_main;__libc_csu_init;_GLOBAL__sub_I_main;__static_initialization_and_destruction_0;std::ios_base::Init::Init;std::locale::locale;[libstdc++.so.6.0.25];std::locale::_Impl::_Impl;std::__timepunct::__timepunct;std::__timepunct::_M_initialize_timepunct 3946818 +perf_stacks;_start;__libc_start_main;main;std::endl >;std::ostream::put;_IO_new_file_overflow;_IO_new_do_write;new_do_write;_IO_new_file_write;__GI___libc_write;[[kernel.kallsyms]] 62360120 +perf_stacks;_start;__libc_start_main;main;std::function::operator;std::_Function_handler::_M_invoke 3306084 +perf_stacks;_start;__libc_start_main;main;std::ostream::flush 2947000 +perf_stacks;_start;_dl_start;_dl_start_final;_dl_sysdep_start;dl_main;_dl_map_object_deps;_dl_catch_exception;openaux;_dl_map_object;_dl_map_object_from_fd;_dl_map_segments;__mmap64;[[kernel.kallsyms]] 2925420 diff --git a/tests/data/collapse-perf/results/go-stacks-collapsed.txt b/tests/data/collapse-perf/results/go-stacks-collapsed.txt index 0d714c24..f31fd50d 100644 --- a/tests/data/collapse-perf/results/go-stacks-collapsed.txt +++ b/tests/data/collapse-perf/results/go-stacks-collapsed.txt @@ -1,5 +1,5 @@ -go;[unknown];[unknown];runtime.main;main.main;cmd/go/internal/run.runRun;cmd/go/internal/load.PackagesAndErrors;cmd/go/internal/load.loadPackage;cmd/go/internal/load.LoadImport;cmd/go/internal/load.(*Package).load;cmd/go/internal/load.LoadImport;cmd/go/internal/load.(*Package).load;cmd/go/internal/load.LoadImport;cmd/go/internal/load.(*Package).load;cmd/go/internal/load.LoadImport;cmd/go/internal/load.(*Package).load;cmd/go/internal/load.LoadImport;go/build.(*Context).Import;go/build.(*Context).matchFile;go/build.readImports;go/build.(*importReader).readKeyword;go/build.(*importReader).peekByte;go/build.(*importReader).readByte 1 -go;[unknown];[unknown];runtime.main;main.main;cmd/go/internal/run.runRun;cmd/go/internal/load.PackagesAndErrors;cmd/go/internal/load.loadPackage;cmd/go/internal/load.LoadImport;cmd/go/internal/load.(*Package).load;cmd/go/internal/load.LoadImport;cmd/go/internal/load.(*Package).load;cmd/go/internal/load.LoadImport;cmd/go/internal/load.(*Package).load;cmd/go/internal/load.LoadImport;cmd/go/internal/load.(*Package).load;cmd/go/internal/load.LoadImport;go/build.(*Context).Import;go/parser.ParseFile;go/parser.(*parser).parseFile;go/parser.(*parser).expectSemi;go/parser.(*parser).next;go/parser.(*parser).consumeComment 1 -go;[unknown];x_cgo_notify_runtime_init_done;runtime.main;main.init;cmd/go/internal/base.init;cmd/go/internal/cfg.init;go/build.init;go/doc.init;text/template.init;text/template.init.ializers;text/template.createValueFuncs;text/template.addValueFuncs;runtime.mapassign_faststr 1 -go;[unknown];x_cgo_notify_runtime_init_done;runtime.main;main.init;cmd/go/internal/bug.init;cmd/go/internal/envcmd.init;cmd/go/internal/modload.init;cmd/go/internal/modfetch.init;cmd/go/internal/get.init;cmd/go/internal/work.init;cmd/go/internal/work.init.ializers;regexp.MustCompile;regexp.compile;regexp/syntax.Compile;runtime.growslice 1 -go;[unknown];x_cgo_notify_runtime_init_done;runtime.main;main.init;cmd/go/internal/bug.init;cmd/go/internal/envcmd.init;cmd/go/internal/modload.init;cmd/go/internal/modfetch.init;cmd/go/internal/get.init;cmd/go/internal/work.init;cmd/go/internal/work.init.ializers;regexp.MustCompile;regexp.compile;regexp/syntax.Parse;regexp/syntax.(*parser).literal;regexp/syntax.(*parser).push;regexp/syntax.(*parser).maybeConcat;runtime.growslice 1 +go;[unknown];[unknown];runtime.main;main.main;cmd/go/internal/run.runRun;cmd/go/internal/load.PackagesAndErrors;cmd/go/internal/load.loadPackage;cmd/go/internal/load.LoadImport;cmd/go/internal/load.(*Package).load;cmd/go/internal/load.LoadImport;cmd/go/internal/load.(*Package).load;cmd/go/internal/load.LoadImport;cmd/go/internal/load.(*Package).load;cmd/go/internal/load.LoadImport;cmd/go/internal/load.(*Package).load;cmd/go/internal/load.LoadImport;go/build.(*Context).Import;go/build.(*Context).matchFile;go/build.readImports;go/build.(*importReader).readKeyword;go/build.(*importReader).peekByte;go/build.(*importReader).readByte 250000 +go;[unknown];[unknown];runtime.main;main.main;cmd/go/internal/run.runRun;cmd/go/internal/load.PackagesAndErrors;cmd/go/internal/load.loadPackage;cmd/go/internal/load.LoadImport;cmd/go/internal/load.(*Package).load;cmd/go/internal/load.LoadImport;cmd/go/internal/load.(*Package).load;cmd/go/internal/load.LoadImport;cmd/go/internal/load.(*Package).load;cmd/go/internal/load.LoadImport;cmd/go/internal/load.(*Package).load;cmd/go/internal/load.LoadImport;go/build.(*Context).Import;go/parser.ParseFile;go/parser.(*parser).parseFile;go/parser.(*parser).expectSemi;go/parser.(*parser).next;go/parser.(*parser).consumeComment 250000 +go;[unknown];x_cgo_notify_runtime_init_done;runtime.main;main.init;cmd/go/internal/base.init;cmd/go/internal/cfg.init;go/build.init;go/doc.init;text/template.init;text/template.init.ializers;text/template.createValueFuncs;text/template.addValueFuncs;runtime.mapassign_faststr 250000 +go;[unknown];x_cgo_notify_runtime_init_done;runtime.main;main.init;cmd/go/internal/bug.init;cmd/go/internal/envcmd.init;cmd/go/internal/modload.init;cmd/go/internal/modfetch.init;cmd/go/internal/get.init;cmd/go/internal/work.init;cmd/go/internal/work.init.ializers;regexp.MustCompile;regexp.compile;regexp/syntax.Compile;runtime.growslice 250000 +go;[unknown];x_cgo_notify_runtime_init_done;runtime.main;main.init;cmd/go/internal/bug.init;cmd/go/internal/envcmd.init;cmd/go/internal/modload.init;cmd/go/internal/modfetch.init;cmd/go/internal/get.init;cmd/go/internal/work.init;cmd/go/internal/work.init.ializers;regexp.MustCompile;regexp.compile;regexp/syntax.Parse;regexp/syntax.(*parser).literal;regexp/syntax.(*parser).push;regexp/syntax.(*parser).maybeConcat;runtime.growslice 250000 diff --git a/tests/data/collapse-perf/results/java-inline-collapsed.txt b/tests/data/collapse-perf/results/java-inline-collapsed.txt index 70b5047a..5853cb90 100644 --- a/tests/data/collapse-perf/results/java-inline-collapsed.txt +++ b/tests/data/collapse-perf/results/java-inline-collapsed.txt @@ -1,13 +1,13 @@ -java;[unknown];__GI___libc_write 6 -java;[unknown];__GI___libc_write;entry_SYSCALL_64_after_hwframe;do_syscall_64 2 -java;[unknown];__GI___libc_write;entry_SYSCALL_64_after_hwframe;do_syscall_64;ksys_write;__fdget_pos;__fget_light 3 -java;[unknown];__GI___libc_write;entry_SYSCALL_64_after_hwframe;do_syscall_64;ksys_write;fput 1 -java;[unknown];__GI___libc_write;entry_SYSCALL_64_after_hwframe;do_syscall_64;ksys_write;vfs_write;__vfs_write;tty_write;n_tty_write 1 -java;[unknown];__GI___libc_write;entry_SYSCALL_64_after_hwframe;do_syscall_64;ksys_write;vfs_write;__vfs_write;tty_write;n_tty_write;_raw_spin_unlock_irqrestore 1 -java;[unknown];__GI___libc_write;entry_SYSCALL_64_after_hwframe;do_syscall_64;ksys_write;vfs_write;__vfs_write;tty_write;n_tty_write;pty_write;_raw_spin_unlock_irqrestore 2 -java;[unknown];__GI___libc_write;entry_SYSCALL_64_after_hwframe;do_syscall_64;ksys_write;vfs_write;__vfs_write;tty_write;tty_write_unlock 1 -java;start_thread;[libjli.so];[libjvm.so];[libjvm.so];[libjvm.so];call_stub;Interpreter;Interpreter;LCounter:::countTo;java/io/PrintStream:::println;java/io/PrintStream:::newLine_[i];java/io/OutputStreamWriter:::flushBuffer_[i];sun/nio/cs/StreamEncoder:::flushBuffer;sun/nio/cs/StreamEncoder:::implFlushBuffer_[i];sun/nio/cs/StreamEncoder:::writeBytes_[i];java/io/PrintStream:::write_[i];java/io/BufferedOutputStream:::flush_[i];java/io/BufferedOutputStream:::flushBuffer_[i];java/io/FileOutputStream:::write_[i] 1 -java;start_thread;[libjli.so];[libjvm.so];[libjvm.so];[libjvm.so];call_stub;Interpreter;Interpreter;LCounter:::countTo;java/io/PrintStream:::println;java/io/PrintStream:::newLine_[i];java/io/OutputStreamWriter:::flushBuffer_[i];sun/nio/cs/StreamEncoder:::flushBuffer;sun/nio/cs/StreamEncoder:::implFlushBuffer_[i];sun/nio/cs/StreamEncoder:::writeBytes_[i];java/io/PrintStream:::write_[i];java/io/BufferedOutputStream:::flush_[i];java/io/BufferedOutputStream:::flushBuffer_[i];java/io/FileOutputStream:::write_[i];java/io/FileOutputStream:::writeBytes;Java_java_io_FileOutputStream_writeBytes;[libjava.so];[libjvm.so];[libjvm.so] 1 -java;start_thread;[libjli.so];[libjvm.so];[libjvm.so];[libjvm.so];call_stub;Interpreter;Interpreter;LCounter:::countTo;java/io/PrintStream:::println;java/io/PrintStream:::print_[i];java/io/PrintStream:::write_[i];java/io/BufferedWriter:::flushBuffer;java/io/OutputStreamWriter:::write_[i];sun/nio/cs/StreamEncoder:::write_[i];sun/nio/cs/StreamEncoder:::implWrite_[i];sun/nio/cs/StreamEncoder:::implWrite_[i];java/nio/charset/CharsetEncoder:::encode_[i];sun/nio/cs/UTF_8$Encoder:::encodeLoop_[i] 1 -java;start_thread;[libjli.so];[libjvm.so];[libjvm.so];[libjvm.so];call_stub;Interpreter;Interpreter;LCounter:::countTo;java/io/PrintStream:::println;java/io/PrintStream:::print_[i];java/io/PrintStream:::write_[i];java/io/OutputStreamWriter:::flushBuffer_[i];sun/nio/cs/StreamEncoder:::flushBuffer;sun/nio/cs/StreamEncoder:::implFlushBuffer_[i];sun/nio/cs/StreamEncoder:::writeBytes_[i];java/io/PrintStream:::write_[i];java/io/BufferedOutputStream:::flush_[i] 1 -java;start_thread;[libjli.so];[libjvm.so];[libjvm.so];[libjvm.so];call_stub;Interpreter;Interpreter;LCounter:::countTo;java/io/PrintStream:::println;java/io/PrintStream:::print_[i];java/io/PrintStream:::write_[i];java/io/OutputStreamWriter:::flushBuffer_[i];sun/nio/cs/StreamEncoder:::flushBuffer;sun/nio/cs/StreamEncoder:::implFlushBuffer_[i];sun/nio/cs/StreamEncoder:::writeBytes_[i];java/io/PrintStream:::write_[i];java/io/BufferedOutputStream:::flush_[i];java/io/BufferedOutputStream:::flushBuffer_[i];java/io/FileOutputStream:::write_[i] 1 +java;[unknown];__GI___libc_write 60606060 +java;[unknown];__GI___libc_write;entry_SYSCALL_64_after_hwframe;do_syscall_64 20202020 +java;[unknown];__GI___libc_write;entry_SYSCALL_64_after_hwframe;do_syscall_64;ksys_write;__fdget_pos;__fget_light 30303030 +java;[unknown];__GI___libc_write;entry_SYSCALL_64_after_hwframe;do_syscall_64;ksys_write;fput 10101010 +java;[unknown];__GI___libc_write;entry_SYSCALL_64_after_hwframe;do_syscall_64;ksys_write;vfs_write;__vfs_write;tty_write;n_tty_write 10101010 +java;[unknown];__GI___libc_write;entry_SYSCALL_64_after_hwframe;do_syscall_64;ksys_write;vfs_write;__vfs_write;tty_write;n_tty_write;_raw_spin_unlock_irqrestore 10101010 +java;[unknown];__GI___libc_write;entry_SYSCALL_64_after_hwframe;do_syscall_64;ksys_write;vfs_write;__vfs_write;tty_write;n_tty_write;pty_write;_raw_spin_unlock_irqrestore 20202020 +java;[unknown];__GI___libc_write;entry_SYSCALL_64_after_hwframe;do_syscall_64;ksys_write;vfs_write;__vfs_write;tty_write;tty_write_unlock 10101010 +java;start_thread;[libjli.so];[libjvm.so];[libjvm.so];[libjvm.so];call_stub;Interpreter;Interpreter;LCounter:::countTo;java/io/PrintStream:::println;java/io/PrintStream:::newLine_[i];java/io/OutputStreamWriter:::flushBuffer_[i];sun/nio/cs/StreamEncoder:::flushBuffer;sun/nio/cs/StreamEncoder:::implFlushBuffer_[i];sun/nio/cs/StreamEncoder:::writeBytes_[i];java/io/PrintStream:::write_[i];java/io/BufferedOutputStream:::flush_[i];java/io/BufferedOutputStream:::flushBuffer_[i];java/io/FileOutputStream:::write_[i] 10101010 +java;start_thread;[libjli.so];[libjvm.so];[libjvm.so];[libjvm.so];call_stub;Interpreter;Interpreter;LCounter:::countTo;java/io/PrintStream:::println;java/io/PrintStream:::newLine_[i];java/io/OutputStreamWriter:::flushBuffer_[i];sun/nio/cs/StreamEncoder:::flushBuffer;sun/nio/cs/StreamEncoder:::implFlushBuffer_[i];sun/nio/cs/StreamEncoder:::writeBytes_[i];java/io/PrintStream:::write_[i];java/io/BufferedOutputStream:::flush_[i];java/io/BufferedOutputStream:::flushBuffer_[i];java/io/FileOutputStream:::write_[i];java/io/FileOutputStream:::writeBytes;Java_java_io_FileOutputStream_writeBytes;[libjava.so];[libjvm.so];[libjvm.so] 10101010 +java;start_thread;[libjli.so];[libjvm.so];[libjvm.so];[libjvm.so];call_stub;Interpreter;Interpreter;LCounter:::countTo;java/io/PrintStream:::println;java/io/PrintStream:::print_[i];java/io/PrintStream:::write_[i];java/io/BufferedWriter:::flushBuffer;java/io/OutputStreamWriter:::write_[i];sun/nio/cs/StreamEncoder:::write_[i];sun/nio/cs/StreamEncoder:::implWrite_[i];sun/nio/cs/StreamEncoder:::implWrite_[i];java/nio/charset/CharsetEncoder:::encode_[i];sun/nio/cs/UTF_8$Encoder:::encodeLoop_[i] 10101010 +java;start_thread;[libjli.so];[libjvm.so];[libjvm.so];[libjvm.so];call_stub;Interpreter;Interpreter;LCounter:::countTo;java/io/PrintStream:::println;java/io/PrintStream:::print_[i];java/io/PrintStream:::write_[i];java/io/OutputStreamWriter:::flushBuffer_[i];sun/nio/cs/StreamEncoder:::flushBuffer;sun/nio/cs/StreamEncoder:::implFlushBuffer_[i];sun/nio/cs/StreamEncoder:::writeBytes_[i];java/io/PrintStream:::write_[i];java/io/BufferedOutputStream:::flush_[i] 10101010 +java;start_thread;[libjli.so];[libjvm.so];[libjvm.so];[libjvm.so];call_stub;Interpreter;Interpreter;LCounter:::countTo;java/io/PrintStream:::println;java/io/PrintStream:::print_[i];java/io/PrintStream:::write_[i];java/io/OutputStreamWriter:::flushBuffer_[i];sun/nio/cs/StreamEncoder:::flushBuffer;sun/nio/cs/StreamEncoder:::implFlushBuffer_[i];sun/nio/cs/StreamEncoder:::writeBytes_[i];java/io/PrintStream:::write_[i];java/io/BufferedOutputStream:::flush_[i];java/io/BufferedOutputStream:::flushBuffer_[i];java/io/FileOutputStream:::write_[i] 10101010 diff --git a/tests/data/collapse-perf/results/perf-rust-Yamakaky-dcpu-collapsed-addrs.txt b/tests/data/collapse-perf/results/perf-rust-Yamakaky-dcpu-collapsed-addrs.txt index 77de23d7..1d9582f0 100644 --- a/tests/data/collapse-perf/results/perf-rust-Yamakaky-dcpu-collapsed-addrs.txt +++ b/tests/data/collapse-perf/results/perf-rust-Yamakaky-dcpu-collapsed-addrs.txt @@ -1,45 +1,45 @@ -emulator;[unknown <2e747262696c0036>];_dl_name_match_p 1 -emulator;[unknown <40>];_dl_sysdep_start;_dl_init_paths 1 -emulator;[unknown <40>];_dl_sysdep_start;dl_main;__strcasecmp 1 -emulator;[unknown <40>];_dl_sysdep_start;dl_main;_dl_relocate_object 2 -emulator;[unknown <63636762696c0036>];strcmp 1 -emulator;__GI_____strtoull_l_internal 1 -emulator;__GI___readlink 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;::clone 3 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;::add_one 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next;core::cmp::impls::_::lt 2 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::ptr::write 2 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::set_len 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared; as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::next; as core::str::pattern::Searcher<'a>>::next_match;core::str::pattern::Searcher::next_match; as core::str::pattern::Searcher<'a>>::next; as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;core::str::next_code_point 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};term::terminfo::parser::compiled::read_le_u16; as std::io::Read>::read;std::io::impls::_::read;collections::slice::_::split_at;<[T] as core::slice::SliceExt>::split_at;core::slice::_> for [T]>::index;core::slice::_> for [T]>::index;core::slice::from_raw_parts 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared; as core::ops::DerefMut>::deref_mut 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;collections::slice::_::get_unchecked_mut;<[T] as core::slice::SliceExt>::get_unchecked_mut 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;<&'a mut I as core::iter::iterator::Iterator>::next;core::iter::range::_>::next;core::cmp::impls::_::lt 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;<&'a mut I as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};core::iter::iterator::Iterator::position 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};core::iter::iterator::Iterator::position; as core::iter::iterator::Iterator>::next;<&'a mut I as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;core::ptr::_::offset 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;>::insert;std::collections::hash::map::robin_hood; as std::collections::hash::table::Put>::borrow_table_mut 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;>::insert;std::collections::hash::map::robin_hood;>::displacement; as core::ops::Deref>::deref;<&'a mut T as core::ops::Deref>::deref 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;std::collections::hash::map::search_hashed 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::reserve;>::resize;>::insert_hashed_ordered 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::reserve;>::resize;__memmove_sse2_unaligned_erms 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;std::io::Read::read_to_end;std::io::read_to_end;>::truncate; as core::ops::DerefMut>::deref_mut;core::ptr::_::is_null 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;term::terminfo::searcher::get_dbpath_for_term;std::path::PathBuf::_push 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;::clone 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next 3 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next;core::cmp::impls::_::lt 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next;core::mem::swap 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};term::terminfo::parser::compiled::read_le_u16;core::slice::_> for [T]>::index_mut 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared; as core::ops::DerefMut>::deref_mut 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;>::set_len 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;std::collections::hash::map::search_hashed;>::new;>::at_index;>::first_bucket_raw;std::collections::hash::table::calculate_offsets;core::num::_::overflowing_add 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::make_hash;std::collections::hash::table::make_hash;::finish;::finish; as core::hash::Hasher>::finish;::d_rounds;core::num::_::wrapping_add 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;std::io::Read::read_to_end;std::io::read_to_end;>::resize;>::extend_with_element;core::ptr::_::offset 1 -emulator;__rust_maybe_catch_panic;emulator::main;simplelog::termlog::TermLogger::init;page_fault 1 -emulator;_dl_map_object;_dl_load_cache_lookup 2 -emulator;_dl_start_user;_dl_start 1 -emulator;_start 6 -emulator;_start;page_fault 1 -emulator;je_arena_ralloc_no_move 1 -emulator;je_arena_tcache_fill_small;page_fault 1 -emulator;je_tcache_boot 1 +emulator;[unknown <2e747262696c0036>];_dl_name_match_p 42632 +emulator;[unknown <40>];_dl_sysdep_start;_dl_init_paths 32156 +emulator;[unknown <40>];_dl_sysdep_start;dl_main;__strcasecmp 52068 +emulator;[unknown <40>];_dl_sysdep_start;dl_main;_dl_relocate_object 113074 +emulator;[unknown <63636762696c0036>];strcmp 60144 +emulator;__GI_____strtoull_l_internal 72243 +emulator;__GI___readlink 66557 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;::clone 315764 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;::add_one 128577 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next;core::cmp::impls::_::lt 247667 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::ptr::write 254732 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::set_len 160490 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared; as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::next; as core::str::pattern::Searcher<'a>>::next_match;core::str::pattern::Searcher::next_match; as core::str::pattern::Searcher<'a>>::next; as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;core::str::next_code_point 161094 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};term::terminfo::parser::compiled::read_le_u16; as std::io::Read>::read;std::io::impls::_::read;collections::slice::_::split_at;<[T] as core::slice::SliceExt>::split_at;core::slice::_> for [T]>::index;core::slice::_> for [T]>::index;core::slice::from_raw_parts 166807 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared; as core::ops::DerefMut>::deref_mut 163021 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;collections::slice::_::get_unchecked_mut;<[T] as core::slice::SliceExt>::get_unchecked_mut 170071 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;<&'a mut I as core::iter::iterator::Iterator>::next;core::iter::range::_>::next;core::cmp::impls::_::lt 160789 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;<&'a mut I as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map 186650 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};core::iter::iterator::Iterator::position 182088 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};core::iter::iterator::Iterator::position; as core::iter::iterator::Iterator>::next;<&'a mut I as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;core::ptr::_::offset 184354 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;>::insert;std::collections::hash::map::robin_hood; as std::collections::hash::table::Put>::borrow_table_mut 178602 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;>::insert;std::collections::hash::map::robin_hood;>::displacement; as core::ops::Deref>::deref;<&'a mut T as core::ops::Deref>::deref 185542 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;std::collections::hash::map::search_hashed 180495 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::reserve;>::resize;>::insert_hashed_ordered 183668 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::reserve;>::resize;__memmove_sse2_unaligned_erms 180014 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;std::io::Read::read_to_end;std::io::read_to_end;>::truncate; as core::ops::DerefMut>::deref_mut;core::ptr::_::is_null 176362 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;term::terminfo::searcher::get_dbpath_for_term;std::path::PathBuf::_push 73671 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;::clone 183381 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next 559435 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next;core::cmp::impls::_::lt 188406 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next;core::mem::swap 183868 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};term::terminfo::parser::compiled::read_le_u16;core::slice::_> for [T]>::index_mut 195165 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared; as core::ops::DerefMut>::deref_mut 194076 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;>::set_len 194314 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;std::collections::hash::map::search_hashed;>::new;>::at_index;>::first_bucket_raw;std::collections::hash::table::calculate_offsets;core::num::_::overflowing_add 194816 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::make_hash;std::collections::hash::table::make_hash;::finish;::finish; as core::hash::Hasher>::finish;::d_rounds;core::num::_::wrapping_add 194103 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;std::io::Read::read_to_end;std::io::read_to_end;>::resize;>::extend_with_element;core::ptr::_::offset 194077 +emulator;__rust_maybe_catch_panic;emulator::main;simplelog::termlog::TermLogger::init;page_fault 71141 +emulator;_dl_map_object;_dl_load_cache_lookup 86339 +emulator;_dl_start_user;_dl_start 17736 +emulator;_start 716 +emulator;_start;page_fault 3646 +emulator;je_arena_ralloc_no_move 173377 +emulator;je_arena_tcache_fill_small;page_fault 70745 +emulator;je_tcache_boot 65964 diff --git a/tests/data/collapse-perf/results/perf-rust-Yamakaky-dcpu-collapsed-all.txt b/tests/data/collapse-perf/results/perf-rust-Yamakaky-dcpu-collapsed-all.txt index e7cf3293..2fc1efb9 100644 --- a/tests/data/collapse-perf/results/perf-rust-Yamakaky-dcpu-collapsed-all.txt +++ b/tests/data/collapse-perf/results/perf-rust-Yamakaky-dcpu-collapsed-all.txt @@ -1,45 +1,45 @@ -emulator;[unknown];_dl_name_match_p 1 -emulator;[unknown];_dl_sysdep_start;_dl_init_paths 1 -emulator;[unknown];_dl_sysdep_start;dl_main;__strcasecmp 1 -emulator;[unknown];_dl_sysdep_start;dl_main;_dl_relocate_object 2 -emulator;[unknown];strcmp 1 -emulator;__GI_____strtoull_l_internal 1 -emulator;__GI___readlink 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;::clone 3 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;::add_one 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next;core::cmp::impls::_::lt 2 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::ptr::write 2 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::set_len 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared; as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::next; as core::str::pattern::Searcher<'a>>::next_match;core::str::pattern::Searcher::next_match; as core::str::pattern::Searcher<'a>>::next; as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;core::str::next_code_point 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};term::terminfo::parser::compiled::read_le_u16; as std::io::Read>::read;std::io::impls::_::read;collections::slice::_::split_at;<[T] as core::slice::SliceExt>::split_at;core::slice::_> for [T]>::index;core::slice::_> for [T]>::index;core::slice::from_raw_parts 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared; as core::ops::DerefMut>::deref_mut 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;collections::slice::_::get_unchecked_mut;<[T] as core::slice::SliceExt>::get_unchecked_mut 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;<&'a mut I as core::iter::iterator::Iterator>::next;core::iter::range::_>::next;core::cmp::impls::_::lt 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;<&'a mut I as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};core::iter::iterator::Iterator::position 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};core::iter::iterator::Iterator::position; as core::iter::iterator::Iterator>::next;<&'a mut I as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;core::ptr::_::offset 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;>::insert;std::collections::hash::map::robin_hood; as std::collections::hash::table::Put>::borrow_table_mut 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;>::insert;std::collections::hash::map::robin_hood;>::displacement; as core::ops::Deref>::deref;<&'a mut T as core::ops::Deref>::deref 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;std::collections::hash::map::search_hashed 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::reserve;>::resize;>::insert_hashed_ordered 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::reserve;>::resize;__memmove_sse2_unaligned_erms 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;std::io::Read::read_to_end;std::io::read_to_end;>::truncate; as core::ops::DerefMut>::deref_mut;core::ptr::_::is_null 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;term::terminfo::searcher::get_dbpath_for_term;std::path::PathBuf::_push 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;::clone 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next 3 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next;core::cmp::impls::_::lt 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next;core::mem::swap 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};term::terminfo::parser::compiled::read_le_u16;core::slice::_> for [T]>::index_mut 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared; as core::ops::DerefMut>::deref_mut 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;>::set_len 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;std::collections::hash::map::search_hashed;>::new;>::at_index;>::first_bucket_raw;std::collections::hash::table::calculate_offsets;core::num::_::overflowing_add 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::make_hash;std::collections::hash::table::make_hash;::finish;::finish; as core::hash::Hasher>::finish;::d_rounds;core::num::_::wrapping_add 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;std::io::Read::read_to_end;std::io::read_to_end;>::resize;>::extend_with_element;core::ptr::_::offset 1 -emulator;__rust_maybe_catch_panic;emulator::main;simplelog::termlog::TermLogger::init;page_fault_[k] 1 -emulator;_dl_map_object;_dl_load_cache_lookup 2 -emulator;_dl_start_user;_dl_start 1 -emulator;_start 6 -emulator;_start;page_fault_[k] 1 -emulator;je_arena_ralloc_no_move 1 -emulator;je_arena_tcache_fill_small;page_fault_[k] 1 -emulator;je_tcache_boot 1 +emulator;[unknown];_dl_name_match_p 42632 +emulator;[unknown];_dl_sysdep_start;_dl_init_paths 32156 +emulator;[unknown];_dl_sysdep_start;dl_main;__strcasecmp 52068 +emulator;[unknown];_dl_sysdep_start;dl_main;_dl_relocate_object 113074 +emulator;[unknown];strcmp 60144 +emulator;__GI_____strtoull_l_internal 72243 +emulator;__GI___readlink 66557 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;::clone 315764 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;::add_one 128577 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next;core::cmp::impls::_::lt 247667 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::ptr::write 254732 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::set_len 160490 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared; as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::next; as core::str::pattern::Searcher<'a>>::next_match;core::str::pattern::Searcher::next_match; as core::str::pattern::Searcher<'a>>::next; as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;core::str::next_code_point 161094 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};term::terminfo::parser::compiled::read_le_u16; as std::io::Read>::read;std::io::impls::_::read;collections::slice::_::split_at;<[T] as core::slice::SliceExt>::split_at;core::slice::_> for [T]>::index;core::slice::_> for [T]>::index;core::slice::from_raw_parts 166807 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared; as core::ops::DerefMut>::deref_mut 163021 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;collections::slice::_::get_unchecked_mut;<[T] as core::slice::SliceExt>::get_unchecked_mut 170071 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;<&'a mut I as core::iter::iterator::Iterator>::next;core::iter::range::_>::next;core::cmp::impls::_::lt 160789 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;<&'a mut I as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map 186650 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};core::iter::iterator::Iterator::position 182088 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};core::iter::iterator::Iterator::position; as core::iter::iterator::Iterator>::next;<&'a mut I as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;core::ptr::_::offset 184354 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;>::insert;std::collections::hash::map::robin_hood; as std::collections::hash::table::Put>::borrow_table_mut 178602 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;>::insert;std::collections::hash::map::robin_hood;>::displacement; as core::ops::Deref>::deref;<&'a mut T as core::ops::Deref>::deref 185542 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;std::collections::hash::map::search_hashed 180495 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::reserve;>::resize;>::insert_hashed_ordered 183668 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::reserve;>::resize;__memmove_sse2_unaligned_erms 180014 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;std::io::Read::read_to_end;std::io::read_to_end;>::truncate; as core::ops::DerefMut>::deref_mut;core::ptr::_::is_null 176362 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;term::terminfo::searcher::get_dbpath_for_term;std::path::PathBuf::_push 73671 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;::clone 183381 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next 559435 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next;core::cmp::impls::_::lt 188406 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next;core::mem::swap 183868 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};term::terminfo::parser::compiled::read_le_u16;core::slice::_> for [T]>::index_mut 195165 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared; as core::ops::DerefMut>::deref_mut 194076 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;>::set_len 194314 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;std::collections::hash::map::search_hashed;>::new;>::at_index;>::first_bucket_raw;std::collections::hash::table::calculate_offsets;core::num::_::overflowing_add 194816 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::make_hash;std::collections::hash::table::make_hash;::finish;::finish; as core::hash::Hasher>::finish;::d_rounds;core::num::_::wrapping_add 194103 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;std::io::Read::read_to_end;std::io::read_to_end;>::resize;>::extend_with_element;core::ptr::_::offset 194077 +emulator;__rust_maybe_catch_panic;emulator::main;simplelog::termlog::TermLogger::init;page_fault_[k] 71141 +emulator;_dl_map_object;_dl_load_cache_lookup 86339 +emulator;_dl_start_user;_dl_start 17736 +emulator;_start 716 +emulator;_start;page_fault_[k] 3646 +emulator;je_arena_ralloc_no_move 173377 +emulator;je_arena_tcache_fill_small;page_fault_[k] 70745 +emulator;je_tcache_boot 65964 diff --git a/tests/data/collapse-perf/results/perf-rust-Yamakaky-dcpu-collapsed-jit.txt b/tests/data/collapse-perf/results/perf-rust-Yamakaky-dcpu-collapsed-jit.txt index 8a354811..3731711c 100644 --- a/tests/data/collapse-perf/results/perf-rust-Yamakaky-dcpu-collapsed-jit.txt +++ b/tests/data/collapse-perf/results/perf-rust-Yamakaky-dcpu-collapsed-jit.txt @@ -1,45 +1,45 @@ -emulator;[unknown];_dl_name_match_p 1 -emulator;[unknown];_dl_sysdep_start;_dl_init_paths 1 -emulator;[unknown];_dl_sysdep_start;dl_main;__strcasecmp 1 -emulator;[unknown];_dl_sysdep_start;dl_main;_dl_relocate_object 2 -emulator;[unknown];strcmp 1 -emulator;__GI_____strtoull_l_internal 1 -emulator;__GI___readlink 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;::clone 3 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;::add_one 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next;core::cmp::impls::_::lt 2 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::ptr::write 2 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::set_len 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared; as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::next; as core::str::pattern::Searcher<'a>>::next_match;core::str::pattern::Searcher::next_match; as core::str::pattern::Searcher<'a>>::next; as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;core::str::next_code_point 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};term::terminfo::parser::compiled::read_le_u16; as std::io::Read>::read;std::io::impls::_::read;collections::slice::_::split_at;<[T] as core::slice::SliceExt>::split_at;core::slice::_> for [T]>::index;core::slice::_> for [T]>::index;core::slice::from_raw_parts 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared; as core::ops::DerefMut>::deref_mut 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;collections::slice::_::get_unchecked_mut;<[T] as core::slice::SliceExt>::get_unchecked_mut 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;<&'a mut I as core::iter::iterator::Iterator>::next;core::iter::range::_>::next;core::cmp::impls::_::lt 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;<&'a mut I as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};core::iter::iterator::Iterator::position 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};core::iter::iterator::Iterator::position; as core::iter::iterator::Iterator>::next;<&'a mut I as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;core::ptr::_::offset 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;>::insert;std::collections::hash::map::robin_hood; as std::collections::hash::table::Put>::borrow_table_mut 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;>::insert;std::collections::hash::map::robin_hood;>::displacement; as core::ops::Deref>::deref;<&'a mut T as core::ops::Deref>::deref 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;std::collections::hash::map::search_hashed 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::reserve;>::resize;>::insert_hashed_ordered 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::reserve;>::resize;__memmove_sse2_unaligned_erms 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;std::io::Read::read_to_end;std::io::read_to_end;>::truncate; as core::ops::DerefMut>::deref_mut;core::ptr::_::is_null 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;term::terminfo::searcher::get_dbpath_for_term;std::path::PathBuf::_push 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;::clone 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next 3 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next;core::cmp::impls::_::lt 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next;core::mem::swap 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};term::terminfo::parser::compiled::read_le_u16;core::slice::_> for [T]>::index_mut 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared; as core::ops::DerefMut>::deref_mut 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;>::set_len 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;std::collections::hash::map::search_hashed;>::new;>::at_index;>::first_bucket_raw;std::collections::hash::table::calculate_offsets;core::num::_::overflowing_add 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::make_hash;std::collections::hash::table::make_hash;::finish;::finish; as core::hash::Hasher>::finish;::d_rounds;core::num::_::wrapping_add 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;std::io::Read::read_to_end;std::io::read_to_end;>::resize;>::extend_with_element;core::ptr::_::offset 1 -emulator;__rust_maybe_catch_panic;emulator::main;simplelog::termlog::TermLogger::init;page_fault 1 -emulator;_dl_map_object;_dl_load_cache_lookup 2 -emulator;_dl_start_user;_dl_start 1 -emulator;_start 6 -emulator;_start;page_fault 1 -emulator;je_arena_ralloc_no_move 1 -emulator;je_arena_tcache_fill_small;page_fault 1 -emulator;je_tcache_boot 1 +emulator;[unknown];_dl_name_match_p 42632 +emulator;[unknown];_dl_sysdep_start;_dl_init_paths 32156 +emulator;[unknown];_dl_sysdep_start;dl_main;__strcasecmp 52068 +emulator;[unknown];_dl_sysdep_start;dl_main;_dl_relocate_object 113074 +emulator;[unknown];strcmp 60144 +emulator;__GI_____strtoull_l_internal 72243 +emulator;__GI___readlink 66557 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;::clone 315764 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;::add_one 128577 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next;core::cmp::impls::_::lt 247667 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::ptr::write 254732 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::set_len 160490 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared; as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::next; as core::str::pattern::Searcher<'a>>::next_match;core::str::pattern::Searcher::next_match; as core::str::pattern::Searcher<'a>>::next; as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;core::str::next_code_point 161094 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};term::terminfo::parser::compiled::read_le_u16; as std::io::Read>::read;std::io::impls::_::read;collections::slice::_::split_at;<[T] as core::slice::SliceExt>::split_at;core::slice::_> for [T]>::index;core::slice::_> for [T]>::index;core::slice::from_raw_parts 166807 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared; as core::ops::DerefMut>::deref_mut 163021 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;collections::slice::_::get_unchecked_mut;<[T] as core::slice::SliceExt>::get_unchecked_mut 170071 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;<&'a mut I as core::iter::iterator::Iterator>::next;core::iter::range::_>::next;core::cmp::impls::_::lt 160789 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;<&'a mut I as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map 186650 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};core::iter::iterator::Iterator::position 182088 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};core::iter::iterator::Iterator::position; as core::iter::iterator::Iterator>::next;<&'a mut I as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;core::ptr::_::offset 184354 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;>::insert;std::collections::hash::map::robin_hood; as std::collections::hash::table::Put>::borrow_table_mut 178602 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;>::insert;std::collections::hash::map::robin_hood;>::displacement; as core::ops::Deref>::deref;<&'a mut T as core::ops::Deref>::deref 185542 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;std::collections::hash::map::search_hashed 180495 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::reserve;>::resize;>::insert_hashed_ordered 183668 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::reserve;>::resize;__memmove_sse2_unaligned_erms 180014 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;std::io::Read::read_to_end;std::io::read_to_end;>::truncate; as core::ops::DerefMut>::deref_mut;core::ptr::_::is_null 176362 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;term::terminfo::searcher::get_dbpath_for_term;std::path::PathBuf::_push 73671 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;::clone 183381 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next 559435 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next;core::cmp::impls::_::lt 188406 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next;core::mem::swap 183868 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};term::terminfo::parser::compiled::read_le_u16;core::slice::_> for [T]>::index_mut 195165 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared; as core::ops::DerefMut>::deref_mut 194076 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;>::set_len 194314 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;std::collections::hash::map::search_hashed;>::new;>::at_index;>::first_bucket_raw;std::collections::hash::table::calculate_offsets;core::num::_::overflowing_add 194816 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::make_hash;std::collections::hash::table::make_hash;::finish;::finish; as core::hash::Hasher>::finish;::d_rounds;core::num::_::wrapping_add 194103 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;std::io::Read::read_to_end;std::io::read_to_end;>::resize;>::extend_with_element;core::ptr::_::offset 194077 +emulator;__rust_maybe_catch_panic;emulator::main;simplelog::termlog::TermLogger::init;page_fault 71141 +emulator;_dl_map_object;_dl_load_cache_lookup 86339 +emulator;_dl_start_user;_dl_start 17736 +emulator;_start 716 +emulator;_start;page_fault 3646 +emulator;je_arena_ralloc_no_move 173377 +emulator;je_arena_tcache_fill_small;page_fault 70745 +emulator;je_tcache_boot 65964 diff --git a/tests/data/collapse-perf/results/perf-rust-Yamakaky-dcpu-collapsed-kernel.txt b/tests/data/collapse-perf/results/perf-rust-Yamakaky-dcpu-collapsed-kernel.txt index e7cf3293..2fc1efb9 100644 --- a/tests/data/collapse-perf/results/perf-rust-Yamakaky-dcpu-collapsed-kernel.txt +++ b/tests/data/collapse-perf/results/perf-rust-Yamakaky-dcpu-collapsed-kernel.txt @@ -1,45 +1,45 @@ -emulator;[unknown];_dl_name_match_p 1 -emulator;[unknown];_dl_sysdep_start;_dl_init_paths 1 -emulator;[unknown];_dl_sysdep_start;dl_main;__strcasecmp 1 -emulator;[unknown];_dl_sysdep_start;dl_main;_dl_relocate_object 2 -emulator;[unknown];strcmp 1 -emulator;__GI_____strtoull_l_internal 1 -emulator;__GI___readlink 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;::clone 3 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;::add_one 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next;core::cmp::impls::_::lt 2 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::ptr::write 2 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::set_len 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared; as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::next; as core::str::pattern::Searcher<'a>>::next_match;core::str::pattern::Searcher::next_match; as core::str::pattern::Searcher<'a>>::next; as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;core::str::next_code_point 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};term::terminfo::parser::compiled::read_le_u16; as std::io::Read>::read;std::io::impls::_::read;collections::slice::_::split_at;<[T] as core::slice::SliceExt>::split_at;core::slice::_> for [T]>::index;core::slice::_> for [T]>::index;core::slice::from_raw_parts 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared; as core::ops::DerefMut>::deref_mut 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;collections::slice::_::get_unchecked_mut;<[T] as core::slice::SliceExt>::get_unchecked_mut 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;<&'a mut I as core::iter::iterator::Iterator>::next;core::iter::range::_>::next;core::cmp::impls::_::lt 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;<&'a mut I as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};core::iter::iterator::Iterator::position 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};core::iter::iterator::Iterator::position; as core::iter::iterator::Iterator>::next;<&'a mut I as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;core::ptr::_::offset 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;>::insert;std::collections::hash::map::robin_hood; as std::collections::hash::table::Put>::borrow_table_mut 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;>::insert;std::collections::hash::map::robin_hood;>::displacement; as core::ops::Deref>::deref;<&'a mut T as core::ops::Deref>::deref 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;std::collections::hash::map::search_hashed 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::reserve;>::resize;>::insert_hashed_ordered 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::reserve;>::resize;__memmove_sse2_unaligned_erms 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;std::io::Read::read_to_end;std::io::read_to_end;>::truncate; as core::ops::DerefMut>::deref_mut;core::ptr::_::is_null 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;term::terminfo::searcher::get_dbpath_for_term;std::path::PathBuf::_push 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;::clone 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next 3 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next;core::cmp::impls::_::lt 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next;core::mem::swap 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};term::terminfo::parser::compiled::read_le_u16;core::slice::_> for [T]>::index_mut 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared; as core::ops::DerefMut>::deref_mut 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;>::set_len 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;std::collections::hash::map::search_hashed;>::new;>::at_index;>::first_bucket_raw;std::collections::hash::table::calculate_offsets;core::num::_::overflowing_add 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::make_hash;std::collections::hash::table::make_hash;::finish;::finish; as core::hash::Hasher>::finish;::d_rounds;core::num::_::wrapping_add 1 -emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;std::io::Read::read_to_end;std::io::read_to_end;>::resize;>::extend_with_element;core::ptr::_::offset 1 -emulator;__rust_maybe_catch_panic;emulator::main;simplelog::termlog::TermLogger::init;page_fault_[k] 1 -emulator;_dl_map_object;_dl_load_cache_lookup 2 -emulator;_dl_start_user;_dl_start 1 -emulator;_start 6 -emulator;_start;page_fault_[k] 1 -emulator;je_arena_ralloc_no_move 1 -emulator;je_arena_tcache_fill_small;page_fault_[k] 1 -emulator;je_tcache_boot 1 +emulator;[unknown];_dl_name_match_p 42632 +emulator;[unknown];_dl_sysdep_start;_dl_init_paths 32156 +emulator;[unknown];_dl_sysdep_start;dl_main;__strcasecmp 52068 +emulator;[unknown];_dl_sysdep_start;dl_main;_dl_relocate_object 113074 +emulator;[unknown];strcmp 60144 +emulator;__GI_____strtoull_l_internal 72243 +emulator;__GI___readlink 66557 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;::clone 315764 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;::add_one 128577 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next;core::cmp::impls::_::lt 247667 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::ptr::write 254732 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::set_len 160490 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared; as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::next; as core::str::pattern::Searcher<'a>>::next_match;core::str::pattern::Searcher::next_match; as core::str::pattern::Searcher<'a>>::next; as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;core::str::next_code_point 161094 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};term::terminfo::parser::compiled::read_le_u16; as std::io::Read>::read;std::io::impls::_::read;collections::slice::_::split_at;<[T] as core::slice::SliceExt>::split_at;core::slice::_> for [T]>::index;core::slice::_> for [T]>::index;core::slice::from_raw_parts 166807 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared; as core::ops::DerefMut>::deref_mut 163021 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;collections::slice::_::get_unchecked_mut;<[T] as core::slice::SliceExt>::get_unchecked_mut 170071 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;<&'a mut I as core::iter::iterator::Iterator>::next;core::iter::range::_>::next;core::cmp::impls::_::lt 160789 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;<&'a mut I as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map 186650 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};core::iter::iterator::Iterator::position 182088 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};core::iter::iterator::Iterator::position; as core::iter::iterator::Iterator>::next;<&'a mut I as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;core::ptr::_::offset 184354 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;>::insert;std::collections::hash::map::robin_hood; as std::collections::hash::table::Put>::borrow_table_mut 178602 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;>::insert;std::collections::hash::map::robin_hood;>::displacement; as core::ops::Deref>::deref;<&'a mut T as core::ops::Deref>::deref 185542 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;std::collections::hash::map::search_hashed 180495 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::reserve;>::resize;>::insert_hashed_ordered 183668 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::reserve;>::resize;__memmove_sse2_unaligned_erms 180014 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;std::io::Read::read_to_end;std::io::read_to_end;>::truncate; as core::ops::DerefMut>::deref_mut;core::ptr::_::is_null 176362 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;term::terminfo::searcher::get_dbpath_for_term;std::path::PathBuf::_push 73671 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;::clone 183381 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next 559435 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next;core::cmp::impls::_::lt 188406 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next;core::mem::swap 183868 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};term::terminfo::parser::compiled::read_le_u16;core::slice::_> for [T]>::index_mut 195165 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared; as core::ops::DerefMut>::deref_mut 194076 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;>::set_len 194314 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;std::collections::hash::map::search_hashed;>::new;>::at_index;>::first_bucket_raw;std::collections::hash::table::calculate_offsets;core::num::_::overflowing_add 194816 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::make_hash;std::collections::hash::table::make_hash;::finish;::finish; as core::hash::Hasher>::finish;::d_rounds;core::num::_::wrapping_add 194103 +emulator;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;std::io::Read::read_to_end;std::io::read_to_end;>::resize;>::extend_with_element;core::ptr::_::offset 194077 +emulator;__rust_maybe_catch_panic;emulator::main;simplelog::termlog::TermLogger::init;page_fault_[k] 71141 +emulator;_dl_map_object;_dl_load_cache_lookup 86339 +emulator;_dl_start_user;_dl_start 17736 +emulator;_start 716 +emulator;_start;page_fault_[k] 3646 +emulator;je_arena_ralloc_no_move 173377 +emulator;je_arena_tcache_fill_small;page_fault_[k] 70745 +emulator;je_tcache_boot 65964 diff --git a/tests/data/collapse-perf/results/perf-rust-Yamakaky-dcpu-collapsed-pid.txt b/tests/data/collapse-perf/results/perf-rust-Yamakaky-dcpu-collapsed-pid.txt index 72d6e8d7..2a28d0e3 100644 --- a/tests/data/collapse-perf/results/perf-rust-Yamakaky-dcpu-collapsed-pid.txt +++ b/tests/data/collapse-perf/results/perf-rust-Yamakaky-dcpu-collapsed-pid.txt @@ -1,45 +1,45 @@ -emulator-?;[unknown];_dl_name_match_p 1 -emulator-?;[unknown];_dl_sysdep_start;_dl_init_paths 1 -emulator-?;[unknown];_dl_sysdep_start;dl_main;__strcasecmp 1 -emulator-?;[unknown];_dl_sysdep_start;dl_main;_dl_relocate_object 2 -emulator-?;[unknown];strcmp 1 -emulator-?;__GI_____strtoull_l_internal 1 -emulator-?;__GI___readlink 1 -emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;::clone 3 -emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;::add_one 1 -emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next;core::cmp::impls::_::lt 2 -emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::ptr::write 2 -emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::set_len 1 -emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared; as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::next; as core::str::pattern::Searcher<'a>>::next_match;core::str::pattern::Searcher::next_match; as core::str::pattern::Searcher<'a>>::next; as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;core::str::next_code_point 1 -emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};term::terminfo::parser::compiled::read_le_u16; as std::io::Read>::read;std::io::impls::_::read;collections::slice::_::split_at;<[T] as core::slice::SliceExt>::split_at;core::slice::_> for [T]>::index;core::slice::_> for [T]>::index;core::slice::from_raw_parts 1 -emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared; as core::ops::DerefMut>::deref_mut 1 -emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;collections::slice::_::get_unchecked_mut;<[T] as core::slice::SliceExt>::get_unchecked_mut 1 -emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;<&'a mut I as core::iter::iterator::Iterator>::next;core::iter::range::_>::next;core::cmp::impls::_::lt 1 -emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;<&'a mut I as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map 1 -emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};core::iter::iterator::Iterator::position 1 -emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};core::iter::iterator::Iterator::position; as core::iter::iterator::Iterator>::next;<&'a mut I as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;core::ptr::_::offset 1 -emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;>::insert;std::collections::hash::map::robin_hood; as std::collections::hash::table::Put>::borrow_table_mut 1 -emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;>::insert;std::collections::hash::map::robin_hood;>::displacement; as core::ops::Deref>::deref;<&'a mut T as core::ops::Deref>::deref 1 -emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;std::collections::hash::map::search_hashed 1 -emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::reserve;>::resize;>::insert_hashed_ordered 1 -emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::reserve;>::resize;__memmove_sse2_unaligned_erms 1 -emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;std::io::Read::read_to_end;std::io::read_to_end;>::truncate; as core::ops::DerefMut>::deref_mut;core::ptr::_::is_null 1 -emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;term::terminfo::searcher::get_dbpath_for_term;std::path::PathBuf::_push 1 -emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;::clone 1 -emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next 3 -emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next;core::cmp::impls::_::lt 1 -emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next;core::mem::swap 1 -emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};term::terminfo::parser::compiled::read_le_u16;core::slice::_> for [T]>::index_mut 1 -emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared; as core::ops::DerefMut>::deref_mut 1 -emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;>::set_len 1 -emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;std::collections::hash::map::search_hashed;>::new;>::at_index;>::first_bucket_raw;std::collections::hash::table::calculate_offsets;core::num::_::overflowing_add 1 -emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::make_hash;std::collections::hash::table::make_hash;::finish;::finish; as core::hash::Hasher>::finish;::d_rounds;core::num::_::wrapping_add 1 -emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;std::io::Read::read_to_end;std::io::read_to_end;>::resize;>::extend_with_element;core::ptr::_::offset 1 -emulator-?;__rust_maybe_catch_panic;emulator::main;simplelog::termlog::TermLogger::init;page_fault 1 -emulator-?;_dl_map_object;_dl_load_cache_lookup 2 -emulator-?;_dl_start_user;_dl_start 1 -emulator-?;_start 6 -emulator-?;_start;page_fault 1 -emulator-?;je_arena_ralloc_no_move 1 -emulator-?;je_arena_tcache_fill_small;page_fault 1 -emulator-?;je_tcache_boot 1 +emulator-?;[unknown];_dl_name_match_p 42632 +emulator-?;[unknown];_dl_sysdep_start;_dl_init_paths 32156 +emulator-?;[unknown];_dl_sysdep_start;dl_main;__strcasecmp 52068 +emulator-?;[unknown];_dl_sysdep_start;dl_main;_dl_relocate_object 113074 +emulator-?;[unknown];strcmp 60144 +emulator-?;__GI_____strtoull_l_internal 72243 +emulator-?;__GI___readlink 66557 +emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;::clone 315764 +emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;::add_one 128577 +emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next;core::cmp::impls::_::lt 247667 +emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::ptr::write 254732 +emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::set_len 160490 +emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared; as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::next; as core::str::pattern::Searcher<'a>>::next_match;core::str::pattern::Searcher::next_match; as core::str::pattern::Searcher<'a>>::next; as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;core::str::next_code_point 161094 +emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};term::terminfo::parser::compiled::read_le_u16; as std::io::Read>::read;std::io::impls::_::read;collections::slice::_::split_at;<[T] as core::slice::SliceExt>::split_at;core::slice::_> for [T]>::index;core::slice::_> for [T]>::index;core::slice::from_raw_parts 166807 +emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared; as core::ops::DerefMut>::deref_mut 163021 +emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;collections::slice::_::get_unchecked_mut;<[T] as core::slice::SliceExt>::get_unchecked_mut 170071 +emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;<&'a mut I as core::iter::iterator::Iterator>::next;core::iter::range::_>::next;core::cmp::impls::_::lt 160789 +emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;<&'a mut I as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map 186650 +emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};core::iter::iterator::Iterator::position 182088 +emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};core::iter::iterator::Iterator::position; as core::iter::iterator::Iterator>::next;<&'a mut I as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;core::ptr::_::offset 184354 +emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;>::insert;std::collections::hash::map::robin_hood; as std::collections::hash::table::Put>::borrow_table_mut 178602 +emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;>::insert;std::collections::hash::map::robin_hood;>::displacement; as core::ops::Deref>::deref;<&'a mut T as core::ops::Deref>::deref 185542 +emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;std::collections::hash::map::search_hashed 180495 +emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::reserve;>::resize;>::insert_hashed_ordered 183668 +emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::reserve;>::resize;__memmove_sse2_unaligned_erms 180014 +emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;std::io::Read::read_to_end;std::io::read_to_end;>::truncate; as core::ops::DerefMut>::deref_mut;core::ptr::_::is_null 176362 +emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;term::terminfo::searcher::get_dbpath_for_term;std::path::PathBuf::_push 73671 +emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;::clone 183381 +emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next 559435 +emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next;core::cmp::impls::_::lt 188406 +emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next;core::mem::swap 183868 +emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};term::terminfo::parser::compiled::read_le_u16;core::slice::_> for [T]>::index_mut 195165 +emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared; as core::ops::DerefMut>::deref_mut 194076 +emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;>::set_len 194314 +emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;std::collections::hash::map::search_hashed;>::new;>::at_index;>::first_bucket_raw;std::collections::hash::table::calculate_offsets;core::num::_::overflowing_add 194816 +emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::make_hash;std::collections::hash::table::make_hash;::finish;::finish; as core::hash::Hasher>::finish;::d_rounds;core::num::_::wrapping_add 194103 +emulator-?;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;std::io::Read::read_to_end;std::io::read_to_end;>::resize;>::extend_with_element;core::ptr::_::offset 194077 +emulator-?;__rust_maybe_catch_panic;emulator::main;simplelog::termlog::TermLogger::init;page_fault 71141 +emulator-?;_dl_map_object;_dl_load_cache_lookup 86339 +emulator-?;_dl_start_user;_dl_start 17736 +emulator-?;_start 716 +emulator-?;_start;page_fault 3646 +emulator-?;je_arena_ralloc_no_move 173377 +emulator-?;je_arena_tcache_fill_small;page_fault 70745 +emulator-?;je_tcache_boot 65964 diff --git a/tests/data/collapse-perf/results/perf-rust-Yamakaky-dcpu-collapsed-tid.txt b/tests/data/collapse-perf/results/perf-rust-Yamakaky-dcpu-collapsed-tid.txt index f13a1cc0..aa7e94e7 100644 --- a/tests/data/collapse-perf/results/perf-rust-Yamakaky-dcpu-collapsed-tid.txt +++ b/tests/data/collapse-perf/results/perf-rust-Yamakaky-dcpu-collapsed-tid.txt @@ -1,45 +1,45 @@ -emulator-?/4152;[unknown];_dl_name_match_p 1 -emulator-?/4152;[unknown];_dl_sysdep_start;_dl_init_paths 1 -emulator-?/4152;[unknown];_dl_sysdep_start;dl_main;__strcasecmp 1 -emulator-?/4152;[unknown];_dl_sysdep_start;dl_main;_dl_relocate_object 2 -emulator-?/4152;[unknown];strcmp 1 -emulator-?/4152;__GI_____strtoull_l_internal 1 -emulator-?/4152;__GI___readlink 1 -emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;::clone 3 -emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;::add_one 1 -emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next;core::cmp::impls::_::lt 2 -emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::ptr::write 2 -emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::set_len 1 -emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared; as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::next; as core::str::pattern::Searcher<'a>>::next_match;core::str::pattern::Searcher::next_match; as core::str::pattern::Searcher<'a>>::next; as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;core::str::next_code_point 1 -emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};term::terminfo::parser::compiled::read_le_u16; as std::io::Read>::read;std::io::impls::_::read;collections::slice::_::split_at;<[T] as core::slice::SliceExt>::split_at;core::slice::_> for [T]>::index;core::slice::_> for [T]>::index;core::slice::from_raw_parts 1 -emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared; as core::ops::DerefMut>::deref_mut 1 -emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;collections::slice::_::get_unchecked_mut;<[T] as core::slice::SliceExt>::get_unchecked_mut 1 -emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;<&'a mut I as core::iter::iterator::Iterator>::next;core::iter::range::_>::next;core::cmp::impls::_::lt 1 -emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;<&'a mut I as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map 1 -emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};core::iter::iterator::Iterator::position 1 -emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};core::iter::iterator::Iterator::position; as core::iter::iterator::Iterator>::next;<&'a mut I as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;core::ptr::_::offset 1 -emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;>::insert;std::collections::hash::map::robin_hood; as std::collections::hash::table::Put>::borrow_table_mut 1 -emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;>::insert;std::collections::hash::map::robin_hood;>::displacement; as core::ops::Deref>::deref;<&'a mut T as core::ops::Deref>::deref 1 -emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;std::collections::hash::map::search_hashed 1 -emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::reserve;>::resize;>::insert_hashed_ordered 1 -emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::reserve;>::resize;__memmove_sse2_unaligned_erms 1 -emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;std::io::Read::read_to_end;std::io::read_to_end;>::truncate; as core::ops::DerefMut>::deref_mut;core::ptr::_::is_null 1 -emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;term::terminfo::searcher::get_dbpath_for_term;std::path::PathBuf::_push 1 -emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;::clone 1 -emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next 3 -emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next;core::cmp::impls::_::lt 1 -emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next;core::mem::swap 1 -emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};term::terminfo::parser::compiled::read_le_u16;core::slice::_> for [T]>::index_mut 1 -emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared; as core::ops::DerefMut>::deref_mut 1 -emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;>::set_len 1 -emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;std::collections::hash::map::search_hashed;>::new;>::at_index;>::first_bucket_raw;std::collections::hash::table::calculate_offsets;core::num::_::overflowing_add 1 -emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::make_hash;std::collections::hash::table::make_hash;::finish;::finish; as core::hash::Hasher>::finish;::d_rounds;core::num::_::wrapping_add 1 -emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;std::io::Read::read_to_end;std::io::read_to_end;>::resize;>::extend_with_element;core::ptr::_::offset 1 -emulator-?/4152;__rust_maybe_catch_panic;emulator::main;simplelog::termlog::TermLogger::init;page_fault 1 -emulator-?/4152;_dl_map_object;_dl_load_cache_lookup 2 -emulator-?/4152;_dl_start_user;_dl_start 1 -emulator-?/4152;_start 6 -emulator-?/4152;_start;page_fault 1 -emulator-?/4152;je_arena_ralloc_no_move 1 -emulator-?/4152;je_arena_tcache_fill_small;page_fault 1 -emulator-?/4152;je_tcache_boot 1 +emulator-?/4152;[unknown];_dl_name_match_p 42632 +emulator-?/4152;[unknown];_dl_sysdep_start;_dl_init_paths 32156 +emulator-?/4152;[unknown];_dl_sysdep_start;dl_main;__strcasecmp 52068 +emulator-?/4152;[unknown];_dl_sysdep_start;dl_main;_dl_relocate_object 113074 +emulator-?/4152;[unknown];strcmp 60144 +emulator-?/4152;__GI_____strtoull_l_internal 72243 +emulator-?/4152;__GI___readlink 66557 +emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;::clone 315764 +emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;::add_one 128577 +emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next;core::cmp::impls::_::lt 247667 +emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::ptr::write 254732 +emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::set_len 160490 +emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared; as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::next; as core::str::pattern::Searcher<'a>>::next_match;core::str::pattern::Searcher::next_match; as core::str::pattern::Searcher<'a>>::next; as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;core::str::next_code_point 161094 +emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};term::terminfo::parser::compiled::read_le_u16; as std::io::Read>::read;std::io::impls::_::read;collections::slice::_::split_at;<[T] as core::slice::SliceExt>::split_at;core::slice::_> for [T]>::index;core::slice::_> for [T]>::index;core::slice::from_raw_parts 166807 +emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared; as core::ops::DerefMut>::deref_mut 163021 +emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;collections::slice::_::get_unchecked_mut;<[T] as core::slice::SliceExt>::get_unchecked_mut 170071 +emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;<&'a mut I as core::iter::iterator::Iterator>::next;core::iter::range::_>::next;core::cmp::impls::_::lt 160789 +emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;<&'a mut I as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map 186650 +emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};core::iter::iterator::Iterator::position 182088 +emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};core::iter::iterator::Iterator::position; as core::iter::iterator::Iterator>::next;<&'a mut I as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;core::ptr::_::offset 184354 +emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;>::insert;std::collections::hash::map::robin_hood; as std::collections::hash::table::Put>::borrow_table_mut 178602 +emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;>::insert;std::collections::hash::map::robin_hood;>::displacement; as core::ops::Deref>::deref;<&'a mut T as core::ops::Deref>::deref 185542 +emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;std::collections::hash::map::search_hashed 180495 +emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::reserve;>::resize;>::insert_hashed_ordered 183668 +emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::reserve;>::resize;__memmove_sse2_unaligned_erms 180014 +emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;std::io::Read::read_to_end;std::io::read_to_end;>::truncate; as core::ops::DerefMut>::deref_mut;core::ptr::_::is_null 176362 +emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stderr;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;term::terminfo::searcher::get_dbpath_for_term;std::path::PathBuf::_push 73671 +emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;::clone 183381 +emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next 559435 +emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next;core::cmp::impls::_::lt 188406 +emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;>::new;>::with_capacity;collections::vec::from_elem;>::extend_with_element;core::iter::range::_>::next;core::mem::swap 183868 +emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;<&'a mut I as core::iter::iterator::Iterator>::next;< as core::iter::traits::FromIterator>>::from_iter::Adapter as core::iter::iterator::Iterator>::next; as core::iter::iterator::Iterator>::next;>::map;core::ops::impls::_ for &'a mut F>::call_once;term::terminfo::parser::compiled::parse::_{{closure}};term::terminfo::parser::compiled::read_le_u16;core::slice::_> for [T]>::index_mut 195165 +emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared; as core::ops::DerefMut>::deref_mut 194076 +emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator>::from_iter;>::extend_desugared;>::set_len 194314 +emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::insert_hashed_nocheck;std::collections::hash::map::search_hashed;>::new;>::at_index;>::first_bucket_raw;std::collections::hash::table::calculate_offsets;core::num::_::overflowing_add 194816 +emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;core::iter::iterator::Iterator::collect; as core::iter::traits::FromIterator>>::from_iter; as core::iter::traits::FromIterator<(K, V)>>::from_iter; as core::iter::traits::Extend<(K, V)>>::extend;>::insert;>::make_hash;std::collections::hash::table::make_hash;::finish;::finish; as core::hash::Hasher>::finish;::d_rounds;core::num::_::wrapping_add 194103 +emulator-?/4152;__rust_maybe_catch_panic;emulator::main;emulator::main_ret;simplelog::termlog::TermLogger::init;log::set_logger;log::set_logger_raw;log::set_logger::_{{closure}};simplelog::termlog::TermLogger::init::_{{closure}};simplelog::termlog::TermLogger::new;term::stdout;>::new;term::terminfo::TermInfo::from_env;term::terminfo::TermInfo::from_name;>::and_then;term::terminfo::TermInfo::from_name::_{{closure}};term::terminfo::TermInfo::from_path;term::terminfo::TermInfo::_from_path;term::terminfo::parser::compiled::parse;std::io::Read::read_to_end;std::io::read_to_end;>::resize;>::extend_with_element;core::ptr::_::offset 194077 +emulator-?/4152;__rust_maybe_catch_panic;emulator::main;simplelog::termlog::TermLogger::init;page_fault 71141 +emulator-?/4152;_dl_map_object;_dl_load_cache_lookup 86339 +emulator-?/4152;_dl_start_user;_dl_start 17736 +emulator-?/4152;_start 716 +emulator-?/4152;_start;page_fault 3646 +emulator-?/4152;je_arena_ralloc_no_move 173377 +emulator-?/4152;je_arena_tcache_fill_small;page_fault 70745 +emulator-?/4152;je_tcache_boot 65964 diff --git a/tests/data/collapse-perf/results/single-event-collapsed.txt b/tests/data/collapse-perf/results/single-event-collapsed.txt index f572440f..62189b67 100644 --- a/tests/data/collapse-perf/results/single-event-collapsed.txt +++ b/tests/data/collapse-perf/results/single-event-collapsed.txt @@ -1 +1 @@ -boa_cli;[unknown];boa_cli::main;boa::realm::Realm::create;boa::realm::Realm::create_instrinsics;boa::builtins::console::create_constructor;boa::builtins::value::ValueData::set_field_slice;boa::builtins::value::ValueData::set_field;boa::builtins::object::internal_methods_trait::ObjectInternalMethods::set;::define_own_property;boa::builtins::value::to_value;::to_value;gc::Gc::new;gc::gc::GcBox::new;std::thread::local::LocalKey::with;std::thread::local::LocalKey::try_with;gc::gc::GcBox::new::_{{closure}};gc::gc::collect_garbage;gc::gc::collect_garbage::mark;gc::gc::GcBox::trace_inner; as gc::trace::Trace>::trace; as gc::trace::Trace>::trace; as gc::trace::Trace>::trace::mark;::trace;::trace::mark; as gc::trace::Trace>::trace; as gc::trace::Trace>::trace::mark;::trace;::trace::mark; as gc::trace::Trace>::trace;gc::gc::GcBox::trace_inner;::trace;::trace::mark; as gc::trace::Trace>::trace;::trace;::trace::mark; as gc::trace::Trace>::trace; as gc::trace::Trace>::trace::mark; as gc::trace::Trace>::trace; as gc::trace::Trace>::trace::mark;::trace;::trace::mark; as gc::trace::Trace>::trace; as gc::trace::Trace>::trace::mark; as gc::trace::Trace>::trace;gc::gc::GcBox::trace_inner;::trace;::trace::mark; as gc::trace::Trace>::trace;::trace;::trace::mark; as gc::trace::Trace>::trace; as gc::trace::Trace>::trace::mark; as gc::trace::Trace>::trace; as gc::trace::Trace>::trace::mark;::trace;::trace::mark; as gc::trace::Trace>::trace; as gc::trace::Trace>::trace::mark; as gc::trace::Trace>::trace;gc::gc::GcBox::trace_inner;::trace;::trace::mark; as gc::trace::Trace>::trace;::trace;::trace::mark; as gc::trace::Trace>::trace; as gc::trace::Trace>::trace::mark; as gc::trace::Trace>::trace; as gc::trace::Trace>::trace::mark;::trace;::trace::mark; as gc::trace::Trace>::trace; as gc::trace::Trace>::trace::mark; as gc::trace::Trace>::trace;gc::gc::GcBox::trace_inner;::trace;::trace::mark; as gc::trace::Trace>::trace; as gc::trace::Trace>::trace::mark; as gc::trace::Trace>::trace;::trace;::trace::mark;::trace;::trace::mark;::trace;::trace::mark; as gc::trace::Trace>::trace; as gc::trace::Trace>::trace::mark; as gc::trace::Trace>::trace 1 +boa_cli;[unknown];boa_cli::main;boa::realm::Realm::create;boa::realm::Realm::create_instrinsics;boa::builtins::console::create_constructor;boa::builtins::value::ValueData::set_field_slice;boa::builtins::value::ValueData::set_field;boa::builtins::object::internal_methods_trait::ObjectInternalMethods::set;::define_own_property;boa::builtins::value::to_value;::to_value;gc::Gc::new;gc::gc::GcBox::new;std::thread::local::LocalKey::with;std::thread::local::LocalKey::try_with;gc::gc::GcBox::new::_{{closure}};gc::gc::collect_garbage;gc::gc::collect_garbage::mark;gc::gc::GcBox::trace_inner; as gc::trace::Trace>::trace; as gc::trace::Trace>::trace; as gc::trace::Trace>::trace::mark;::trace;::trace::mark; as gc::trace::Trace>::trace; as gc::trace::Trace>::trace::mark;::trace;::trace::mark; as gc::trace::Trace>::trace;gc::gc::GcBox::trace_inner;::trace;::trace::mark; as gc::trace::Trace>::trace;::trace;::trace::mark; as gc::trace::Trace>::trace; as gc::trace::Trace>::trace::mark; as gc::trace::Trace>::trace; as gc::trace::Trace>::trace::mark;::trace;::trace::mark; as gc::trace::Trace>::trace; as gc::trace::Trace>::trace::mark; as gc::trace::Trace>::trace;gc::gc::GcBox::trace_inner;::trace;::trace::mark; as gc::trace::Trace>::trace;::trace;::trace::mark; as gc::trace::Trace>::trace; as gc::trace::Trace>::trace::mark; as gc::trace::Trace>::trace; as gc::trace::Trace>::trace::mark;::trace;::trace::mark; as gc::trace::Trace>::trace; as gc::trace::Trace>::trace::mark; as gc::trace::Trace>::trace;gc::gc::GcBox::trace_inner;::trace;::trace::mark; as gc::trace::Trace>::trace;::trace;::trace::mark; as gc::trace::Trace>::trace; as gc::trace::Trace>::trace::mark; as gc::trace::Trace>::trace; as gc::trace::Trace>::trace::mark;::trace;::trace::mark; as gc::trace::Trace>::trace; as gc::trace::Trace>::trace::mark; as gc::trace::Trace>::trace;gc::gc::GcBox::trace_inner;::trace;::trace::mark; as gc::trace::Trace>::trace; as gc::trace::Trace>::trace::mark; as gc::trace::Trace>::trace;::trace;::trace::mark;::trace;::trace::mark;::trace;::trace::mark; as gc::trace::Trace>::trace; as gc::trace::Trace>::trace::mark; as gc::trace::Trace>::trace 10101010 diff --git a/tests/data/collapse-perf/results/sourcepawn-jitdump-collapsed-jit.txt b/tests/data/collapse-perf/results/sourcepawn-jitdump-collapsed-jit.txt index d4eecd98..7293eef2 100644 --- a/tests/data/collapse-perf/results/sourcepawn-jitdump-collapsed-jit.txt +++ b/tests/data/collapse-perf/results/sourcepawn-jitdump-collapsed-jit.txt @@ -1 +1 @@ -spshell;__libc_start_main;main;Execute;sp::ScriptedInvoker::Invoke;sp::PluginContext::Invoke;sp::Environment::Invoke;_[j];fib.smx::main_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j] 1 +spshell;__libc_start_main;main;Execute;sp::ScriptedInvoker::Invoke;sp::PluginContext::Invoke;sp::Environment::Invoke;_[j];fib.smx::main_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j];fib.smx::fib_[j] 22145531 diff --git a/tests/data/collapse-perf/results/versioned-vmlinux-collapsed-kernel.txt b/tests/data/collapse-perf/results/versioned-vmlinux-collapsed-kernel.txt index 77d5431f..da6adf89 100644 --- a/tests/data/collapse-perf/results/versioned-vmlinux-collapsed-kernel.txt +++ b/tests/data/collapse-perf/results/versioned-vmlinux-collapsed-kernel.txt @@ -1 +1 @@ -swapper;[vmlinux-5.4.14-cloudflare-2020.1.11]_[k];start_secondary_[k];cpu_startup_entry_[k];do_idle_[k];cpuidle_enter_[k];cpuidle_enter_state_[k];common_interrupt_[k];do_IRQ_[k];irq_exit_[k];__softirqentry_text_start_[k];net_rx_action_[k];mlx5e_napi_poll_[k];mlx5e_poll_rx_cq_[k];mlx5e_handle_rx_cqe_[k];mlx5e_skb_from_cqe_linear_[k];mlx5e_xdp_handle_[k];bpf_prog_2b956549c660136a_uni_l4lb 1 +swapper;[vmlinux-5.4.14-cloudflare-2020.1.11]_[k];start_secondary_[k];cpu_startup_entry_[k];do_idle_[k];cpuidle_enter_[k];cpuidle_enter_state_[k];common_interrupt_[k];do_IRQ_[k];irq_exit_[k];__softirqentry_text_start_[k];net_rx_action_[k];mlx5e_napi_poll_[k];mlx5e_poll_rx_cq_[k];mlx5e_handle_rx_cqe_[k];mlx5e_skb_from_cqe_linear_[k];mlx5e_xdp_handle_[k];bpf_prog_2b956549c660136a_uni_l4lb 20834821 From edaba3bd1cf7fb7f2c0041c8f1a55048d4ae768a Mon Sep 17 00:00:00 2001 From: Jon Gjengset Date: Sun, 14 Jul 2024 15:19:12 +0200 Subject: [PATCH 26/39] Allow blessing test run for collapse too --- tests/common/collapse.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/tests/common/collapse.rs b/tests/common/collapse.rs index 0dd6eca4..a69a0a90 100644 --- a/tests/common/collapse.rs +++ b/tests/common/collapse.rs @@ -89,7 +89,15 @@ where eprintln!("test output in {}", tm.display()); } // and then compare - compare_results(result, expected, expected_filename, strip_quotes); + if let Err(e) = std::panic::catch_unwind(|| { + compare_results(result.clone(), expected, expected_filename, strip_quotes) + }) { + if std::env::var("INFERNO_BLESS_TESTS").is_ok() { + fs::write(expected_filename, result.get_ref()).unwrap(); + } else { + std::panic::resume_unwind(e); + } + } Ok(()) } From ed3abab70648a7fbcce3e3d7dbcaef4937dfa2da Mon Sep 17 00:00:00 2001 From: Jon Gjengset Date: Sun, 14 Jul 2024 15:30:55 +0200 Subject: [PATCH 27/39] Also bring our flamegraph change ref https://github.com/brendangregg/FlameGraph/pull/231 --- flamegraph | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flamegraph b/flamegraph index f79a352e..f5b296af 160000 --- a/flamegraph +++ b/flamegraph @@ -1 +1 @@ -Subproject commit f79a352eb75a9be97760ca4d8226b66b2b047d50 +Subproject commit f5b296af5244f77ecf02bb0e901e35f70ddcd7ed From cea03ec7ca455a7d9dea63d0ce9b35c6ab3bba33 Mon Sep 17 00:00:00 2001 From: Jon Gjengset Date: Sun, 14 Jul 2024 16:02:35 +0200 Subject: [PATCH 28/39] Also port brendangregg/FlameGraph#147 --- src/collapse/perf.rs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/collapse/perf.rs b/src/collapse/perf.rs index c29272e7..604ebe1e 100644 --- a/src/collapse/perf.rs +++ b/src/collapse/perf.rs @@ -524,7 +524,7 @@ impl Folder { func = tidy_generic(func); } - if TIDY_JAVA && self.pname == "java" { + if TIDY_JAVA && self.pname.starts_with("java") { func = tidy_java(func); } @@ -541,14 +541,18 @@ impl Folder { // // 7f722d142778 Ljava/io/PrintStream;::print (/tmp/perf-19982.map) if !self.cache_line.is_empty() { - func.push_str("_[i]"); // inlined + if !func.contains("_[i]") { + func.push_str("_[i]"); // inlined + } } else if self.opt.annotate_kernel && is_kernel(module) { func.push_str("_[k]"); // kernel } else if self.opt.annotate_jit && ((module.starts_with("/tmp/perf-") && module.ends_with(".map")) || (module.contains("/jitted-") && module.ends_with(".so"))) { - func.push_str("_[j]"); // jitted + if !func.contains("_[j]") { + func.push_str("_[j]"); // jitted + } } self.cache_line.push(func); From 59d078013fc647ed7b865ada0fe1df4ff77a2c4e Mon Sep 17 00:00:00 2001 From: Jon Gjengset Date: Sun, 14 Jul 2024 16:02:55 +0200 Subject: [PATCH 29/39] Further bump our flamegraph port --- flamegraph | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flamegraph b/flamegraph index f5b296af..57207afb 160000 --- a/flamegraph +++ b/flamegraph @@ -1 +1 @@ -Subproject commit f5b296af5244f77ecf02bb0e901e35f70ddcd7ed +Subproject commit 57207afbe114e3d50c6c7aef93d3206ef76cf6e2 From c58d49d65eae8f5fa7594422286ff5911d1d4b42 Mon Sep 17 00:00:00 2001 From: Jon Gjengset Date: Sun, 14 Jul 2024 16:10:14 +0200 Subject: [PATCH 30/39] Update CHANGELOG --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9f910e86..c2a1a71f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- More reliably detect Java and avoid double-annotating. [#319](https://github.com/jonhoo/inferno/pull/319) +- Take period into account when collapsing stacks. [#319](https://github.com/jonhoo/inferno/pull/319) +- Updated dashmap to v6 + ### Removed ## [0.11.19] - 2023-11-25 From 3e788062b9c4a80fe6254983832c06e18f1305bd Mon Sep 17 00:00:00 2001 From: Jon Gjengset Date: Sun, 14 Jul 2024 10:27:33 -0400 Subject: [PATCH 31/39] Release 0.11.20 (#324) --- .github/workflows/check.yml | 2 +- CHANGELOG.md | 17 +- Cargo.lock | 588 ++++++++++++++---------------------- Cargo.toml | 8 +- 4 files changed, 251 insertions(+), 364 deletions(-) diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 4219529a..9a349b20 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -79,7 +79,7 @@ jobs: # https://docs.github.com/en/actions/learn-github-actions/contexts#context-availability strategy: matrix: - msrv: ["1.65.0"] # dashmap 6 + msrv: ["1.71.0"] # env_logger and clap name: ubuntu / ${{ matrix.msrv }} steps: - uses: actions/checkout@v4 diff --git a/CHANGELOG.md b/CHANGELOG.md index c2a1a71f..6c3af426 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,11 +9,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +### Removed + +## [0.11.20] - 2024-07-14 +### Changed + - More reliably detect Java and avoid double-annotating. [#319](https://github.com/jonhoo/inferno/pull/319) - Take period into account when collapsing stacks. [#319](https://github.com/jonhoo/inferno/pull/319) - Updated dashmap to v6 - -### Removed +- MSRV (sadly) bumped to 1.71.0 for env_logger and clap and dashmap ## [0.11.19] - 2023-11-25 ### Changed @@ -302,7 +306,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Moved to `IndexMap` and FNV hashing ([#127](https://github.com/jonhoo/inferno/pull/127)) - Moved CI to Azure DevOps Pipelines -[Unreleased]: https://github.com/jonhoo/inferno/compare/v0.11.13...HEAD +[Unreleased]: https://github.com/jonhoo/inferno/compare/v0.11.20...HEAD +[0.11.20]: https://github.com/jonhoo/inferno/compare/v0.11.19...v0.11.20 +[0.11.19]: https://github.com/jonhoo/inferno/compare/v0.11.18...v0.11.19 +[0.11.18]: https://github.com/jonhoo/inferno/compare/v0.11.17...v0.11.18 +[0.11.17]: https://github.com/jonhoo/inferno/compare/v0.11.16...v0.11.17 +[0.11.16]: https://github.com/jonhoo/inferno/compare/v0.11.15...v0.11.16 +[0.11.15]: https://github.com/jonhoo/inferno/compare/v0.11.14...v0.11.15 +[0.11.14]: https://github.com/jonhoo/inferno/compare/v0.11.13...v0.11.14 [0.11.13]: https://github.com/jonhoo/inferno/compare/v0.11.12...v0.11.13 [0.11.12]: https://github.com/jonhoo/inferno/compare/v0.11.11...v0.11.12 [0.11.11]: https://github.com/jonhoo/inferno/compare/v0.11.10...v0.11.11 diff --git a/Cargo.lock b/Cargo.lock index 0f15f01d..9b0994d5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10,9 +10,9 @@ checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" [[package]] name = "ahash" -version = "0.8.7" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77c3a9648d43b9cd48db467b3f87fdd6e146bcc88ab0180006cef2179fe11d01" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", "getrandom", @@ -23,13 +23,19 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] +[[package]] +name = "allocator-api2" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" + [[package]] name = "anes" version = "0.1.6" @@ -38,56 +44,50 @@ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" [[package]] name = "anstream" -version = "0.3.2" +version = "0.6.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163" +checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" dependencies = [ - "anstyle 1.0.2", + "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", - "is-terminal", + "is_terminal_polyfill", "utf8parse", ] [[package]] name = "anstyle" -version = "0.3.5" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23ea9e81bd02e310c216d080f6223c179012256e5151c41db88d12c88a1684d2" - -[[package]] -name = "anstyle" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15c4c2c83f81532e5845a733998b6971faca23490340a418e9b72a3ec9de12ea" +checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" [[package]] name = "anstyle-parse" -version = "0.2.1" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333" +checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" dependencies = [ "windows-sys", ] [[package]] name = "anstyle-wincon" -version = "1.0.2" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c677ab05e09154296dd37acecd46420c17b9713e8366facafa8fc0885167cf4c" +checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" dependencies = [ - "anstyle 1.0.2", + "anstyle", "windows-sys", ] @@ -99,11 +99,11 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "assert_cmd" -version = "2.0.10" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0b2340f55d9661d76793b2bfc2eb0e62689bd79d067a95707ea762afd5e9dd" +checksum = "ed72493ac66d5804837f480ab3766c72bdfab91a65e565fc54fa9e42db0073a8" dependencies = [ - "anstyle 0.3.5", + "anstyle", "bstr", "doc-comment", "predicates", @@ -112,40 +112,23 @@ dependencies = [ "wait-timeout", ] -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi 0.1.19", - "libc", - "winapi", -] - [[package]] name = "autocfg" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" -version = "1.3.2" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitflags" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" [[package]] name = "bstr" -version = "1.6.2" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c2f7349907b712260e64b0afe2f84692af14a454be26187d9df565c7f69266a" +checksum = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706" dependencies = [ "memchr", "regex-automata", @@ -154,15 +137,15 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.14.0" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytemuck" -version = "1.14.0" +version = "1.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" +checksum = "b236fc92302c97ed75b38da1f4917b5cdda4984745740f153a5d3059e48d725e" [[package]] name = "cast" @@ -178,9 +161,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "ciborium" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "effd91f6c78e5a4ace8a5d3c0b6bfaec9e2baaef55f3efc00e45fb2e477ee926" +checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" dependencies = [ "ciborium-io", "ciborium-ll", @@ -189,15 +172,15 @@ dependencies = [ [[package]] name = "ciborium-io" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdf919175532b369853f5d5e20b26b43112613fd6fe7aee757e35f7a44642656" +checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" [[package]] name = "ciborium-ll" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "defaa24ecc093c77630e6c15e17c51f5e187bf35ee514f4e2d67baaa96dae22b" +checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" dependencies = [ "ciborium-io", "half", @@ -205,44 +188,31 @@ dependencies = [ [[package]] name = "clap" -version = "3.2.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" -dependencies = [ - "bitflags 1.3.2", - "clap_lex 0.2.4", - "indexmap 1.9.3", - "textwrap", -] - -[[package]] -name = "clap" -version = "4.3.24" +version = "4.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb690e81c7840c0d7aade59f242ea3b41b9bc27bcd5997890e7702ae4b32e487" +checksum = "1e578d6ec4194633722ccf9544794b71b1385c3c027efe0c55db226fc880865c" dependencies = [ "clap_builder", "clap_derive", - "once_cell", ] [[package]] name = "clap_builder" -version = "4.3.24" +version = "4.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ed2e96bc16d8d740f6f48d663eddf4b8a0983e79210fd55479b7bcd0a69860e" +checksum = "4df4df40ec50c46000231c914968278b1eb05098cf8f1b3a518a95030e71d1c7" dependencies = [ "anstream", - "anstyle 1.0.2", - "clap_lex 0.5.0", + "anstyle", + "clap_lex", "strsim", ] [[package]] name = "clap_derive" -version = "4.3.12" +version = "4.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54a9bb5758fc5dfe728d1019941681eccaf0cf8a4189b692a0ee2f2ecf90a050" +checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" dependencies = [ "heck", "proc-macro2", @@ -252,24 +222,15 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" -dependencies = [ - "os_str_bytes", -] - -[[package]] -name = "clap_lex" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b" +checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" [[package]] name = "colorchoice" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" [[package]] name = "core2" @@ -282,28 +243,28 @@ dependencies = [ [[package]] name = "crc32fast" -version = "1.3.2" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ "cfg-if", ] [[package]] name = "criterion" -version = "0.4.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb" +checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f" dependencies = [ "anes", - "atty", "cast", "ciborium", - "clap 3.2.25", + "clap", "criterion-plot", + "is-terminal", "itertools", - "lazy_static", "num-traits", + "once_cell", "oorandom", "plotters", "rayon", @@ -327,46 +288,43 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.8" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" +checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" dependencies = [ - "cfg-if", "crossbeam-utils", ] [[package]] name = "crossbeam-deque" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" dependencies = [ - "cfg-if", "crossbeam-epoch", "crossbeam-utils", ] [[package]] name = "crossbeam-epoch" -version = "0.9.15" +version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ - "autocfg", - "cfg-if", "crossbeam-utils", - "memoffset", - "scopeguard", ] [[package]] name = "crossbeam-utils" -version = "0.8.16" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" -dependencies = [ - "cfg-if", -] +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" [[package]] name = "dary_heap" @@ -382,7 +340,7 @@ checksum = "804c8821570c3f8b70230c2ba75ffa5c0f9a4189b9a432b6656c536712acae28" dependencies = [ "cfg-if", "crossbeam-utils", - "hashbrown 0.14.2", + "hashbrown", "lock_api", "once_cell", "parking_lot_core", @@ -408,16 +366,26 @@ checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" [[package]] name = "either" -version = "1.9.0" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" + +[[package]] +name = "env_filter" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +checksum = "a009aa4810eb158359dda09d0c87378e4bbb89b5a801f016885a4707ba24f7ea" +dependencies = [ + "log", +] [[package]] name = "env_logger" -version = "0.10.1" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95b3f3e67048839cb0d0781f445682a35113da7121f7c949db0e2be96a4fbece" +checksum = "38b35839ba51819680ba087cd351788c9a3c476841207e0b8cee0b04722343b9" dependencies = [ + "env_filter", "log", ] @@ -427,21 +395,11 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" -[[package]] -name = "errno" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f258a7194e7f7c2a7837a8913aeab7fd8c383457034fa20ce4dd3dcb813e8eb8" -dependencies = [ - "libc", - "windows-sys", -] - [[package]] name = "getrandom" -version = "0.2.11" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "libc", @@ -450,31 +408,24 @@ dependencies = [ [[package]] name = "half" -version = "1.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" - -[[package]] -name = "hashbrown" -version = "0.12.3" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" +dependencies = [ + "cfg-if", + "crunchy", +] [[package]] name = "hashbrown" -version = "0.13.2" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" dependencies = [ "ahash", + "allocator-api2", ] -[[package]] -name = "hashbrown" -version = "0.14.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156" - [[package]] name = "heck" version = "0.4.1" @@ -483,52 +434,33 @@ checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - -[[package]] -name = "hermit-abi" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" - -[[package]] -name = "indexmap" -version = "1.9.3" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", -] +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" [[package]] name = "indexmap" -version = "2.1.0" +version = "2.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ "equivalent", - "hashbrown 0.14.2", + "hashbrown", ] [[package]] name = "inferno" -version = "0.11.19" +version = "0.11.20" dependencies = [ "ahash", "assert_cmd", - "clap 4.3.24", + "clap", "criterion", "crossbeam-channel", "crossbeam-utils", "dashmap", "env_logger", - "indexmap 2.1.0", + "indexmap", "is-terminal", "itoa", "libflate", @@ -549,15 +481,21 @@ dependencies = [ [[package]] name = "is-terminal" -version = "0.4.9" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" +checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" dependencies = [ - "hermit-abi 0.3.3", - "rustix", + "hermit-abi", + "libc", "windows-sys", ] +[[package]] +name = "is_terminal_polyfill" +version = "1.70.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" + [[package]] name = "itertools" version = "0.10.5" @@ -569,36 +507,30 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.9" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "js-sys" -version = "0.3.65" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54c0c35952f67de54bb584e9fd912b3023117cbafc0a77d8f3dee1fb5f572fe8" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" dependencies = [ "wasm-bindgen", ] -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - [[package]] name = "libc" -version = "0.2.150" +version = "0.2.155" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" +checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" [[package]] name = "libflate" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f7d5654ae1795afc7ff76f4365c2c8791b0feb18e8996a96adad8ffd7c3b2bf" +checksum = "45d9dfdc14ea4ef0900c1cddbc8dcd553fbaacd8a4a282cf4018ae9dd04fb21e" dependencies = [ "adler32", "core2", @@ -609,26 +541,20 @@ dependencies = [ [[package]] name = "libflate_lz77" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be5f52fb8c451576ec6b79d3f4deb327398bc05bbdbd99021a6e77a4c855d524" +checksum = "e6e0d73b369f386f1c44abd9c570d5318f55ccde816ff4b562fa452e5182863d" dependencies = [ "core2", - "hashbrown 0.13.2", + "hashbrown", "rle-decode-fast", ] -[[package]] -name = "linux-raw-sys" -version = "0.4.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "969488b55f8ac402214f3f5fd243ebb7206cf82de60d3172994707a4bcc2b829" - [[package]] name = "lock_api" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ "autocfg", "scopeguard", @@ -636,9 +562,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.20" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "maplit" @@ -648,18 +574,9 @@ checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" [[package]] name = "memchr" -version = "2.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" - -[[package]] -name = "memoffset" -version = "0.9.0" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" -dependencies = [ - "autocfg", -] +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "num-format" @@ -673,36 +590,30 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.17" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", ] [[package]] name = "once_cell" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "oorandom" -version = "11.1.3" +version = "11.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" - -[[package]] -name = "os_str_bytes" -version = "6.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" +checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9" [[package]] name = "parking_lot_core" -version = "0.9.9" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", @@ -713,9 +624,9 @@ dependencies = [ [[package]] name = "plotters" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2c224ba00d7cadd4d5c660deaf2098e5e80e07846537c51f9cfa4be50c1fd45" +checksum = "a15b6eccb8484002195a3e44fe65a4ce8e93a625797a063735536fd59cb01cf3" dependencies = [ "num-traits", "plotters-backend", @@ -726,15 +637,15 @@ dependencies = [ [[package]] name = "plotters-backend" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e76628b4d3a7581389a35d5b6e2139607ad7c75b17aed325f210aa91f4a9609" +checksum = "414cec62c6634ae900ea1c56128dfe87cf63e7caece0852ec76aba307cebadb7" [[package]] name = "plotters-svg" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38f6d39893cca0701371e3c27294f09797214b86f1fb951b89ade8ec04e2abab" +checksum = "81b30686a7d9c3e010b84284bdd26a29f2138574f52f5eb6f794fc0ad924e705" dependencies = [ "plotters-backend", ] @@ -747,13 +658,12 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "predicates" -version = "3.0.3" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09963355b9f467184c04017ced4a2ba2d75cbcb4e7462690d388233253d4b1a9" +checksum = "68b87bfd4605926cdfefc1c3b5f8fe560e3feca9d5552cf68c466d3d8236c7e8" dependencies = [ - "anstyle 1.0.2", + "anstyle", "difflib", - "itertools", "predicates-core", ] @@ -785,9 +695,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.69" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] @@ -803,9 +713,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.33" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] @@ -842,9 +752,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.8.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" dependencies = [ "either", "rayon-core", @@ -852,9 +762,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.12.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" dependencies = [ "crossbeam-deque", "crossbeam-utils", @@ -862,18 +772,18 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.4.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd" dependencies = [ - "bitflags 1.3.2", + "bitflags", ] [[package]] name = "regex" -version = "1.9.6" +version = "1.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebee201405406dbf528b8b672104ae6d6d63e6d118cb10e4d51abbc7b58044ff" +checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" dependencies = [ "aho-corasick", "memchr", @@ -883,9 +793,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.3.9" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59b23e92ee4318893fa3fe3e6fb365258efbfe6ac6ab30f090cdcbb7aa37efa9" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" dependencies = [ "aho-corasick", "memchr", @@ -894,15 +804,15 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.7.5" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" [[package]] name = "rgb" -version = "0.8.37" +version = "0.8.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05aaa8004b64fd573fc9d002f4e632d51ad4f026c2b5ba95fcb6c2f32c2c47d8" +checksum = "1aee83dc281d5a3200d37b299acd13b81066ea126a7f16f0eae70fc9aed241d9" dependencies = [ "bytemuck", ] @@ -913,24 +823,11 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3582f63211428f83597b51b2ddb88e2a91a9d52d12831f9d08f5e624e8977422" -[[package]] -name = "rustix" -version = "0.38.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc99bc2d4f1fed22595588a013687477aedf3cdcfb26558c559edb67b4d9b22e" -dependencies = [ - "bitflags 2.4.1", - "errno", - "libc", - "linux-raw-sys", - "windows-sys", -] - [[package]] name = "ryu" -version = "1.0.15" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "same-file" @@ -949,18 +846,18 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "serde" -version = "1.0.193" +version = "1.0.204" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" +checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.193" +version = "1.0.204" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" +checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" dependencies = [ "proc-macro2", "quote", @@ -969,9 +866,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.108" +version = "1.0.120" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" +checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5" dependencies = [ "itoa", "ryu", @@ -980,9 +877,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.11.2" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "str_stack" @@ -998,9 +895,9 @@ checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] name = "syn" -version = "2.0.39" +version = "2.0.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a" +checksum = "b146dcf730474b4bcd16c311627b31ede9ab149045db4d6088b3becaea046462" dependencies = [ "proc-macro2", "quote", @@ -1022,12 +919,6 @@ dependencies = [ "log", ] -[[package]] -name = "textwrap" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" - [[package]] name = "tinytemplate" version = "1.2.1" @@ -1046,9 +937,9 @@ checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "utf8parse" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "version_check" @@ -1067,9 +958,9 @@ dependencies = [ [[package]] name = "walkdir" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" dependencies = [ "same-file", "winapi-util", @@ -1083,9 +974,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.88" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7daec296f25a1bae309c0cd5c29c4b260e510e6d813c286b19eaadf409d40fce" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -1093,9 +984,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.88" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e397f4664c0e4e428e8313a469aaa58310d302159845980fd23b0f22a847f217" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" dependencies = [ "bumpalo", "log", @@ -1108,9 +999,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.88" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5961017b3b08ad5f3fe39f1e79877f8ee7c23c5e5fd5eb80de95abc41f1f16b2" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1118,9 +1009,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.88" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5353b8dab669f5e10f5bd76df26a9360c748f054f862ff5f3f8aae0c7fb3907" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", @@ -1131,69 +1022,48 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.88" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d046c5d029ba91a1ed14da14dca44b68bf2f124cfbaf741c54151fdb3e0750b" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" [[package]] name = "web-sys" -version = "0.3.65" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5db499c5f66323272151db0e666cd34f78617522fb0c1604d31a27c50c206a85" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" dependencies = [ "js-sys", "wasm-bindgen", ] -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - [[package]] name = "winapi-util" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" dependencies = [ - "winapi", + "windows-sys", ] -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - [[package]] name = "windows-sys" -version = "0.48.0" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ "windows-targets", ] [[package]] name = "windows-targets" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ "windows_aarch64_gnullvm", "windows_aarch64_msvc", "windows_i686_gnu", + "windows_i686_gnullvm", "windows_i686_msvc", "windows_x86_64_gnu", "windows_x86_64_gnullvm", @@ -1202,45 +1072,51 @@ dependencies = [ [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" -version = "0.48.5" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "yansi" @@ -1250,18 +1126,18 @@ checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" [[package]] name = "zerocopy" -version = "0.7.31" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c4061bedbb353041c12f413700357bec76df2c7e2ca8e4df8bac24c6bf68e3d" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.31" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3c129550b3e6de3fd0ba67ba5c81818f9805e58b8d7fee80a3a59d2c9fc601a" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 39f6c1e8..a701bca0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,9 +1,9 @@ [package] name = "inferno" -version = "0.11.19" +version = "0.11.20" edition = "2021" authors = ["Jon Gjengset "] -rust-version = "1.64.0" +rust-version = "1.71.0" readme = "README.md" description = "Rust port of the FlameGraph performance profiling tool suite" @@ -32,7 +32,7 @@ is-terminal = "0.4.3" crossbeam-utils = { version = "0.8", optional = true } crossbeam-channel = { version = "0.5", optional = true } dashmap = { version = "6.0.1", optional = true } -env_logger = { version = "0.10", default-features = false, optional = true } +env_logger = { version = "0.11", default-features = false, optional = true } indexmap = { version = "2.0", optional = true } itoa = "1" log = "0.4" @@ -45,7 +45,7 @@ once_cell = "1.12.0" [dev-dependencies] assert_cmd = "2" -criterion = "0.4" +criterion = "0.5" libflate = "2" maplit = "1.0.1" pretty_assertions = "1" From 6d74d7029aa2cea40291d03b3746714cc7545486 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C5=91rik=20Levente?= <33373714+Levminer@users.noreply.github.com> Date: Sat, 27 Jul 2024 10:16:18 +0200 Subject: [PATCH 32/39] Fix warnings (#326) --- tests/common/mod.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/common/mod.rs b/tests/common/mod.rs index 4abbe946..8a725e84 100644 --- a/tests/common/mod.rs +++ b/tests/common/mod.rs @@ -1,4 +1,5 @@ #![allow(dead_code)] +#![allow(unused_imports)] mod collapse; From 1c60840c78f3a157cdf12e9e80d796b481c1551a Mon Sep 17 00:00:00 2001 From: Matt Keeter Date: Mon, 29 Jul 2024 11:01:45 -0400 Subject: [PATCH 33/39] Trim executable name when getting function color (#329) --- src/flamegraph/color/palettes.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/flamegraph/color/palettes.rs b/src/flamegraph/color/palettes.rs index b3d8879c..5a17148f 100644 --- a/src/flamegraph/color/palettes.rs +++ b/src/flamegraph/color/palettes.rs @@ -129,6 +129,7 @@ pub(super) mod rust { use crate::flamegraph::color::BasicPalette; pub(in super::super) fn resolve(name: &str) -> BasicPalette { + let name = name.split_once('`').map(|(_, after)| after).unwrap_or(name); if name.starts_with("core::") || name.starts_with("std::") || name.starts_with("alloc::") @@ -601,6 +602,14 @@ mod tests { input: String::from(" Date: Sat, 3 Aug 2024 05:00:51 -0400 Subject: [PATCH 34/39] Add support for combined stack + ustack DTrace collapse (#328) --- src/collapse/dtrace.rs | 47 +++++++++- tests/collapse-dtrace.rs | 8 ++ .../collapse-dtrace/results/stack-ustack.txt | 4 + tests/data/collapse-dtrace/stack-ustack.txt | 87 +++++++++++++++++++ 4 files changed, 145 insertions(+), 1 deletion(-) create mode 100644 tests/data/collapse-dtrace/results/stack-ustack.txt create mode 100644 tests/data/collapse-dtrace/stack-ustack.txt diff --git a/src/collapse/dtrace.rs b/src/collapse/dtrace.rs index 4efc871d..11a09adc 100644 --- a/src/collapse/dtrace.rs +++ b/src/collapse/dtrace.rs @@ -226,7 +226,7 @@ impl CollapsePrivate for Folder { } } } - true + matches!(state, State::EndOfLine) } fn clone_and_reset_stack_context(&self) -> Self { @@ -492,6 +492,51 @@ mod tests { ::collapse(&mut folder, &bytes[..], io::sink()) } + #[test] + fn test_collapse_dtrace_would_end_stack() { + let mut folder = Folder::default(); + assert!(!folder.would_end_stack(b"function_name")); + assert!(!folder.would_end_stack(b" function_name ")); + assert!(!folder.would_end_stack(b" ")); + assert!(!folder.would_end_stack(b"")); + assert!(!folder.would_end_stack(b"")); + assert!(!folder.would_end_stack(b" function_name ")); + assert!(folder.would_end_stack(b" 256 ")); + + assert!(!folder.would_end_stack(b" ")); + assert!(!folder.would_end_stack(b" ")); + assert!(!folder.would_end_stack(b"")); + assert!(!folder.would_end_stack(b"function_name")); + assert!(!folder.would_end_stack(b" function_name ")); + assert!(!folder.would_end_stack(b" function_name ")); + assert!(!folder.would_end_stack(b" ")); + assert!(folder.would_end_stack(b" 12 ")); + + assert!(!folder.would_end_stack(b"function_name")); + assert!(!folder.would_end_stack(b" function_name ")); + assert!(!folder.would_end_stack(b" function_name ")); + assert!(!folder.would_end_stack(b" ")); + assert!(!folder.would_end_stack(b" function_name ")); + assert!(!folder.would_end_stack(b" function_name ")); + assert!(folder.would_end_stack(b" 3 ")); + + assert!(!folder.would_end_stack(b"function_name")); + assert!(!folder.would_end_stack(b" function_name ")); + assert!(!folder.would_end_stack(b" 5function_name ")); + assert!(!folder.would_end_stack(b" ")); + assert!(!folder.would_end_stack(b" function_name ")); + assert!(!folder.would_end_stack(b" function_name ")); + assert!(folder.would_end_stack(b" 3 ")); + + assert!(!folder.would_end_stack(b"function_name")); + assert!(!folder.would_end_stack(b" function_name ")); + assert!(!folder.would_end_stack(b" 5424 f")); + assert!(!folder.would_end_stack(b" ")); + assert!(!folder.would_end_stack(b" function_name ")); + assert!(!folder.would_end_stack(b" function_name ")); + assert!(folder.would_end_stack(b" 3 ")); + } + /// Varies the nstacks_per_job parameter and outputs the 10 fastests configurations by file. /// /// Command: `cargo test bench_nstacks_dtrace --release -- --ignored --nocapture` diff --git a/tests/collapse-dtrace.rs b/tests/collapse-dtrace.rs index 7fab4ac4..648a1644 100644 --- a/tests/collapse-dtrace.rs +++ b/tests/collapse-dtrace.rs @@ -83,6 +83,14 @@ fn collapse_dtrace_compare_to_flamegraph_bug() { test_collapse_dtrace(test_file, result_file, options).unwrap() } +#[test] +fn collapse_dtrace_stack_ustack() { + let test_file = "./tests/data/collapse-dtrace/stack-ustack.txt"; + let result_file = "./tests/data/collapse-dtrace/results/stack-ustack.txt"; + + test_collapse_dtrace(test_file, result_file, Options::default()).unwrap() +} + #[test] fn collapse_dtrace_should_log_warning_for_only_header_lines() { test_collapse_dtrace_logs( diff --git a/tests/data/collapse-dtrace/results/stack-ustack.txt b/tests/data/collapse-dtrace/results/stack-ustack.txt new file mode 100644 index 00000000..453184ac --- /dev/null +++ b/tests/data/collapse-dtrace/results/stack-ustack.txt @@ -0,0 +1,4 @@ +libc.so.1`_lwp_start;libc.so.1`_thrp_setup;cru-ds-fdsync-v1`std::sys::unix::thread::Thread::new::thread_start;cru-ds-fdsync-v1`core::ops::function::FnOnce::call_once{{vtable.shim}};cru-ds-fdsync-v1`std::sys_common::backtrace::__rust_begin_short_backtrace;cru-ds-fdsync-v1`rayon_core::registry::ThreadBuilder::run;cru-ds-fdsync-v1`rayon_core::registry::WorkerThread::wait_until_cold;cru-ds-fdsync-v1` as rayon_core::job::Job>::execute;cru-ds-fdsync-v1`std::panicking::try;cru-ds-fdsync-v1`crucible_downstairs::extent::Extent::flush;cru-ds-fdsync-v1`::flush;cru-ds-fdsync-v1`std::fs::File::sync_all;libc.so.1`__fdsync;unix`sys_syscall;genunix`fdsync;genunix`fop_fsync;zfs`zfs_fsync;zfs`zil_commit;zfs`zil_commit_impl;zfs`zil_commit_itx_assign;zfs`zil_itx_assign;zfs`dmu_objset_ds 1 +libc.so.1`_lwp_start;libc.so.1`_thrp_setup;cru-ds-fdsync-v1`std::sys::unix::thread::Thread::new::thread_start;cru-ds-fdsync-v1`core::ops::function::FnOnce::call_once{{vtable.shim}};cru-ds-fdsync-v1`std::sys_common::backtrace::__rust_begin_short_backtrace;cru-ds-fdsync-v1`tokio::runtime::task::harness::Harness;cru-ds-fdsync-v1`tokio::runtime::task::core::Core;cru-ds-fdsync-v1`tokio::runtime::scheduler::multi_thread::worker::run;cru-ds-fdsync-v1`tokio::runtime::context::runtime::enter_runtime;cru-ds-fdsync-v1`tokio::runtime::context::scoped::Scoped;cru-ds-fdsync-v1`tokio::runtime::scheduler::multi_thread::worker::Context::run;cru-ds-fdsync-v1`tokio::runtime::scheduler::multi_thread::worker::Context::run_task;cru-ds-fdsync-v1`tokio::runtime::task::harness::Harness;cru-ds-fdsync-v1`tokio::runtime::task::core::Core;cru-ds-fdsync-v1`crucible_downstairs::Downstairs::run::_{{closure}};cru-ds-fdsync-v1`crucible_downstairs::ActiveConnection::do_work_if_ready::{{closure}};cru-ds-fdsync-v1`crucible_downstairs::ActiveConnection::do_work::{{closure}};cru-ds-fdsync-v1`crucible_downstairs::region::Region::region_write;cru-ds-fdsync-v1`crucible_downstairs::extent::Extent::write;cru-ds-fdsync-v1`::write;libc.so.1`__pwrite;unix`sys_syscall;genunix`pwrite;genunix`fop_write;zfs`zfs_write;zfs`dmu_tx_assign;zfs`dmu_tx_try_assign;zfs`dsl_dir_tempreserve_space;zfs`arc_memory_throttle 1 +libc.so.1`_lwp_start;libc.so.1`_thrp_setup;cru-ds-fdsync-v1`std::sys::unix::thread::Thread::new::thread_start;cru-ds-fdsync-v1`core::ops::function::FnOnce::call_once{{vtable.shim}};cru-ds-fdsync-v1`std::sys_common::backtrace::__rust_begin_short_backtrace;cru-ds-fdsync-v1`tokio::runtime::task::harness::Harness;cru-ds-fdsync-v1`tokio::runtime::task::core::Core;cru-ds-fdsync-v1`tokio::runtime::scheduler::multi_thread::worker::run;cru-ds-fdsync-v1`tokio::runtime::context::runtime::enter_runtime;cru-ds-fdsync-v1`tokio::runtime::context::scoped::Scoped;cru-ds-fdsync-v1`tokio::runtime::scheduler::multi_thread::worker::Context::run;cru-ds-fdsync-v1`tokio::runtime::scheduler::multi_thread::worker::Context::run_task;cru-ds-fdsync-v1`tokio::runtime::task::harness::Harness;cru-ds-fdsync-v1`tokio::runtime::task::core::Core;cru-ds-fdsync-v1`crucible_downstairs::recv_task::_{{closure}};cru-ds-fdsync-v1` as futures_core::stream::Stream>::poll_next::h375c4bf72398a9c9+0x451 + cru-ds-fdsync-v1` as core::future::future::Future>::poll::hdb622d175ae42c67+0x376 + cru-ds-fdsync-v1`crucible_downstairs::recv_task::_$u7b$$u7b$closure$u7d$$u7d$::h2313d0ca35c97b46 (.llvm.9599067906520872268)+0x1e8 + cru-ds-fdsync-v1`tokio::runtime::task::core::Core::poll::ha1b200ead37ecb81+0x3e + cru-ds-fdsync-v1`tokio::runtime::task::harness::Harness::poll::h6096748dfbf63e3f+0x47 + cru-ds-fdsync-v1`tokio::runtime::scheduler::multi_thread::worker::Context::run_task::hbc7adf21738f2cc8+0x146 + cru-ds-fdsync-v1`tokio::runtime::scheduler::multi_thread::worker::Context::run::h8894624b64f9ebd1+0xabe + cru-ds-fdsync-v1`tokio::runtime::context::scoped::Scoped::set::h7f53e80a35be279f+0x2b + cru-ds-fdsync-v1`tokio::runtime::context::runtime::enter_runtime::ha36cde2fe36fc9dc+0x172 + cru-ds-fdsync-v1`tokio::runtime::scheduler::multi_thread::worker::run::heea3712ec5628e2e+0x4b + cru-ds-fdsync-v1`tokio::runtime::task::core::Core::poll::h4fdbe1f8b2e046e9+0x43 + cru-ds-fdsync-v1`tokio::runtime::task::harness::Harness::poll::hdaaa15b8bfc6c3b5+0x45 + cru-ds-fdsync-v1`std::sys_common::backtrace::__rust_begin_short_backtrace::h07e5ebb552c48fa6+0x1b6 + cru-ds-fdsync-v1`core::ops::function::FnOnce::call_once{{vtable.shim}}::hfb58463ecc052a89+0x75 + cru-ds-fdsync-v1`std::sys::unix::thread::Thread::new::thread_start::h1783cbcbbf061711+0x29 + libc.so.1`_thrp_setup+0x77 + libc.so.1`_lwp_start + 1 + + zfs`arc_memory_throttle+0x1 + zfs`dsl_dir_tempreserve_space+0x9e + zfs`dmu_tx_try_assign+0x149 + zfs`dmu_tx_assign+0x56 + zfs`zfs_write+0x475 + genunix`fop_write+0x5d + genunix`pwrite+0x172 + unix`sys_syscall+0x17d + + libc.so.1`__pwrite+0xa + cru-ds-fdsync-v1`::write::hef63fa757835e3ff+0x1621 + cru-ds-fdsync-v1`crucible_downstairs::extent::Extent::write::hfeced6743c01c23b+0x2fd + cru-ds-fdsync-v1`crucible_downstairs::region::Region::region_write::hfbbb7f74fb6b1568+0x654 + cru-ds-fdsync-v1`crucible_downstairs::ActiveConnection::do_work::{{closure}}::h50e10780011359fc+0x1128 + cru-ds-fdsync-v1`crucible_downstairs::ActiveConnection::do_work_if_ready::{{closure}}::h65a7bded82d12d6c+0x148 + cru-ds-fdsync-v1`crucible_downstairs::Downstairs::run::_$u7b$$u7b$closure$u7d$$u7d$::h7a3087a6f836e6c7 (.llvm.14070482526595365531)+0x2012 + cru-ds-fdsync-v1`tokio::runtime::task::core::Core::poll::hf3cf7a78e14ca649+0x47 + cru-ds-fdsync-v1`tokio::runtime::task::harness::Harness::poll::h2d72b7b7afc40df2+0x49 + cru-ds-fdsync-v1`tokio::runtime::scheduler::multi_thread::worker::Context::run_task::hbc7adf21738f2cc8+0x190 + cru-ds-fdsync-v1`tokio::runtime::scheduler::multi_thread::worker::Context::run::h8894624b64f9ebd1+0xabe + cru-ds-fdsync-v1`tokio::runtime::context::scoped::Scoped::set::h7f53e80a35be279f+0x2b + cru-ds-fdsync-v1`tokio::runtime::context::runtime::enter_runtime::ha36cde2fe36fc9dc+0x172 + cru-ds-fdsync-v1`tokio::runtime::scheduler::multi_thread::worker::run::heea3712ec5628e2e+0x4b + cru-ds-fdsync-v1`tokio::runtime::task::core::Core::poll::h4fdbe1f8b2e046e9+0x43 + cru-ds-fdsync-v1`tokio::runtime::task::harness::Harness::poll::hdaaa15b8bfc6c3b5+0x45 + cru-ds-fdsync-v1`std::sys_common::backtrace::__rust_begin_short_backtrace::h07e5ebb552c48fa6+0x1b6 + cru-ds-fdsync-v1`core::ops::function::FnOnce::call_once{{vtable.shim}}::hfb58463ecc052a89+0x75 + cru-ds-fdsync-v1`std::sys::unix::thread::Thread::new::thread_start::h1783cbcbbf061711+0x29 + libc.so.1`_thrp_setup+0x77 + libc.so.1`_lwp_start + 1 + + zfs`metaslab_group_alloc_verify+0x1 + zfs`zio_execute+0xa7 + genunix`taskq_thread+0x2a6 + unix`thread_start+0xb + + 1 + + zfs`dmu_objset_ds+0x1 + zfs`zil_itx_assign+0x194 + zfs`zil_commit_itx_assign+0x65 + zfs`zil_commit_impl+0x26 + zfs`zil_commit+0x4b + zfs`zfs_fsync+0xf6 + genunix`fop_fsync+0x4a + genunix`fdsync+0xc4 + unix`sys_syscall+0x17d + + libc.so.1`__fdsync+0xa + cru-ds-fdsync-v1`std::fs::File::sync_all::hcd4d0768a77cbc2e+0x14 + cru-ds-fdsync-v1`::flush::h68fcf1774758d74e+0x9c + cru-ds-fdsync-v1`crucible_downstairs::extent::Extent::flush::h0eac5b95dfa4f5f0+0x472 + cru-ds-fdsync-v1`std::panicking::try::h7ba6611983f64757+0x4c + cru-ds-fdsync-v1`_$LT$rayon_core..job..HeapJob$LT$BODY$GT$$u20$as$u20$rayon_core..job..Job$GT$::execute::h60b9d586fc4f8a0f (.llvm.8052073739315931670)+0x46 + cru-ds-fdsync-v1`rayon_core::registry::WorkerThread::wait_until_cold::haa78671c0e7aa9b1+0x50f + cru-ds-fdsync-v1`rayon_core::registry::ThreadBuilder::run::hf28d413d115bded0+0x398 + cru-ds-fdsync-v1`std::sys_common::backtrace::__rust_begin_short_backtrace::hfcd6324a3e87fc1e+0x48 + cru-ds-fdsync-v1`core::ops::function::FnOnce::call_once{{vtable.shim}}::hbfa4fc2e086997af+0xb2 + cru-ds-fdsync-v1`std::sys::unix::thread::Thread::new::thread_start::h1783cbcbbf061711+0x29 + libc.so.1`_thrp_setup+0x77 + libc.so.1`_lwp_start + 1 From 0558e2a8bcbdca0dffdb9ef4938168cb2dd5c096 Mon Sep 17 00:00:00 2001 From: Jon Gjengset Date: Sat, 3 Aug 2024 11:05:21 +0200 Subject: [PATCH 35/39] Avoid unused feature warnings --- src/lib.rs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 54f0f9a4..e5865303 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -145,12 +145,8 @@ #![cfg_attr(doc, allow(rustdoc::missing_doc_code_examples))] #![deny(missing_docs)] #![warn(unreachable_pub)] -#![cfg_attr(all(test, feature = "nightly"), feature(test))] #![allow(clippy::disallowed_names)] -#[cfg(all(test, feature = "nightly"))] -extern crate test; - /// Stack collapsing for various input formats. /// /// See the [crate-level documentation] for details. From e286b8e26e0f9ecaf6de437c487a4e5971c8eed1 Mon Sep 17 00:00:00 2001 From: Jon Gjengset Date: Sat, 3 Aug 2024 11:05:09 +0200 Subject: [PATCH 36/39] Bump version number --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9b0994d5..a4e0ff49 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -450,7 +450,7 @@ dependencies = [ [[package]] name = "inferno" -version = "0.11.20" +version = "0.11.21" dependencies = [ "ahash", "assert_cmd", diff --git a/Cargo.toml b/Cargo.toml index a701bca0..8b393baf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "inferno" -version = "0.11.20" +version = "0.11.21" edition = "2021" authors = ["Jon Gjengset "] rust-version = "1.71.0" From 49c83eefa186e55115f253987a18e37fb5e5fed1 Mon Sep 17 00:00:00 2001 From: Jon Gjengset Date: Sat, 3 Aug 2024 11:05:02 +0200 Subject: [PATCH 37/39] Update changelog --- CHANGELOG.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6c3af426..0c602447 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Removed +## [0.11.21] - 2024-08-03 +### Added + +- Support for combined stack + ustack DTrace collapse. [#328](https://github.com/jonhoo/inferno/pull/328) + +### Changed + +- Trim executable name when getting function color. [#329](https://github.com/jonhoo/inferno/pull/329) + ## [0.11.20] - 2024-07-14 ### Changed @@ -306,7 +315,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Moved to `IndexMap` and FNV hashing ([#127](https://github.com/jonhoo/inferno/pull/127)) - Moved CI to Azure DevOps Pipelines -[Unreleased]: https://github.com/jonhoo/inferno/compare/v0.11.20...HEAD +[Unreleased]: https://github.com/jonhoo/inferno/compare/v0.11.21...HEAD +[0.11.21]: https://github.com/jonhoo/inferno/compare/v0.11.20...v0.11.21 [0.11.20]: https://github.com/jonhoo/inferno/compare/v0.11.19...v0.11.20 [0.11.19]: https://github.com/jonhoo/inferno/compare/v0.11.18...v0.11.19 [0.11.18]: https://github.com/jonhoo/inferno/compare/v0.11.17...v0.11.18 From 31e263b3f063d2b3b22b40518c055811f3721390 Mon Sep 17 00:00:00 2001 From: Jon Gjengset Date: Sat, 3 Aug 2024 11:08:19 +0200 Subject: [PATCH 38/39] cargo update --- Cargo.lock | 148 ++++++++++++++++++++++++++++++----------------------- 1 file changed, 84 insertions(+), 64 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a4e0ff49..d98ec015 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -44,9 +44,9 @@ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" [[package]] name = "anstream" -version = "0.6.14" +version = "0.6.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" +checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" dependencies = [ "anstyle", "anstyle-parse", @@ -59,36 +59,36 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" +checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" [[package]] name = "anstyle-parse" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" +checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" +checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" dependencies = [ - "windows-sys", + "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.3" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" +checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" dependencies = [ "anstyle", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] @@ -99,9 +99,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "assert_cmd" -version = "2.0.14" +version = "2.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed72493ac66d5804837f480ab3766c72bdfab91a65e565fc54fa9e42db0073a8" +checksum = "bc65048dd435533bb1baf2ed9956b9a278fbfdcf90301b39ee117f06c0199d37" dependencies = [ "anstyle", "bstr", @@ -126,9 +126,9 @@ checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" [[package]] name = "bstr" -version = "1.9.1" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706" +checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" dependencies = [ "memchr", "regex-automata", @@ -143,9 +143,15 @@ checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytemuck" -version = "1.16.1" +version = "1.16.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "102087e286b4677862ea56cf8fc58bb2cdfa8725c40ffb80fe3a008eb7f2fc83" + +[[package]] +name = "byteorder" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b236fc92302c97ed75b38da1f4917b5cdda4984745740f153a5d3059e48d725e" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "cast" @@ -188,9 +194,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.4.18" +version = "4.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e578d6ec4194633722ccf9544794b71b1385c3c027efe0c55db226fc880865c" +checksum = "0fbb260a053428790f3de475e304ff84cdbc4face759ea7a3e64c1edd938a7fc" dependencies = [ "clap_builder", "clap_derive", @@ -198,9 +204,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.4.18" +version = "4.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4df4df40ec50c46000231c914968278b1eb05098cf8f1b3a518a95030e71d1c7" +checksum = "64b17d7ea74e9f833c7dbf2cbe4fb12ff26783eda4782a8975b72f895c9b4d99" dependencies = [ "anstream", "anstyle", @@ -210,9 +216,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.4.7" +version = "4.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" +checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0" dependencies = [ "heck", "proc-macro2", @@ -222,15 +228,15 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.6.0" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" +checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" [[package]] name = "colorchoice" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" +checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" [[package]] name = "core2" @@ -372,18 +378,18 @@ checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "env_filter" -version = "0.1.0" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a009aa4810eb158359dda09d0c87378e4bbb89b5a801f016885a4707ba24f7ea" +checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab" dependencies = [ "log", ] [[package]] name = "env_logger" -version = "0.11.3" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b35839ba51819680ba087cd351788c9a3c476841207e0b8cee0b04722343b9" +checksum = "e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d" dependencies = [ "env_filter", "log", @@ -428,9 +434,9 @@ dependencies = [ [[package]] name = "heck" -version = "0.4.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" @@ -440,9 +446,9 @@ checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" [[package]] name = "indexmap" -version = "2.2.6" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +checksum = "de3fc2e30ba82dd1b3911c8de1ffc143c74a914a14e99514d7637e3099df5ea0" dependencies = [ "equivalent", "hashbrown", @@ -487,14 +493,14 @@ checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" dependencies = [ "hermit-abi", "libc", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] name = "is_terminal_polyfill" -version = "1.70.0" +version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] name = "itertools" @@ -652,15 +658,18 @@ dependencies = [ [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] [[package]] name = "predicates" -version = "3.1.0" +version = "3.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b87bfd4605926cdfefc1c3b5f8fe560e3feca9d5552cf68c466d3d8236c7e8" +checksum = "7e9086cc7640c29a356d1a29fd134380bee9d8f79a17410aa76e7ad295f42c97" dependencies = [ "anstyle", "difflib", @@ -669,15 +678,15 @@ dependencies = [ [[package]] name = "predicates-core" -version = "1.0.6" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b794032607612e7abeb4db69adb4e33590fa6cf1149e95fd7cb00e634b92f174" +checksum = "ae8177bee8e75d6846599c6b9ff679ed51e882816914eec639944d7c9aa11931" [[package]] name = "predicates-tree" -version = "1.0.9" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368ba315fb8c5052ab692e68a0eefec6ec57b23a36959c14496f0b0df2c0cecf" +checksum = "41b740d195ed3166cd147c8047ec98db0e22ec019eb8eeb76d343b795304fb13" dependencies = [ "predicates-core", "termtree", @@ -772,18 +781,18 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd" +checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" dependencies = [ "bitflags", ] [[package]] name = "regex" -version = "1.10.5" +version = "1.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" +checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" dependencies = [ "aho-corasick", "memchr", @@ -810,9 +819,9 @@ checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" [[package]] name = "rgb" -version = "0.8.44" +version = "0.8.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aee83dc281d5a3200d37b299acd13b81066ea126a7f16f0eae70fc9aed241d9" +checksum = "ade4539f42266ded9e755c605bdddf546242b2c961b03b06a7375260788a0523" dependencies = [ "bytemuck", ] @@ -866,11 +875,12 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.120" +version = "1.0.122" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5" +checksum = "784b6203951c57ff748476b126ccb5e8e2959a5c19e5c617ab1956be3dbc68da" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] @@ -889,15 +899,15 @@ checksum = "9091b6114800a5f2141aee1d1b9d6ca3592ac062dc5decb3764ec5895a47b4eb" [[package]] name = "strsim" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "syn" -version = "2.0.71" +version = "2.0.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b146dcf730474b4bcd16c311627b31ede9ab149045db4d6088b3becaea046462" +checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af" dependencies = [ "proc-macro2", "quote", @@ -943,9 +953,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "wait-timeout" @@ -1038,11 +1048,11 @@ dependencies = [ [[package]] name = "winapi-util" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys", + "windows-sys 0.59.0", ] [[package]] @@ -1054,6 +1064,15 @@ dependencies = [ "windows-targets", ] +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets", +] + [[package]] name = "windows-targets" version = "0.52.6" @@ -1130,6 +1149,7 @@ version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ + "byteorder", "zerocopy-derive", ] From 59c7138036cd5c634f93023ba7630979bfa0d2d1 Mon Sep 17 00:00:00 2001 From: Jon Gjengset Date: Sat, 3 Aug 2024 11:21:23 +0200 Subject: [PATCH 39/39] Downgrade clap to maintain MSRV --- Cargo.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d98ec015..39102f3a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -194,9 +194,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.13" +version = "4.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fbb260a053428790f3de475e304ff84cdbc4face759ea7a3e64c1edd938a7fc" +checksum = "1e578d6ec4194633722ccf9544794b71b1385c3c027efe0c55db226fc880865c" dependencies = [ "clap_builder", "clap_derive", @@ -204,9 +204,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.13" +version = "4.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64b17d7ea74e9f833c7dbf2cbe4fb12ff26783eda4782a8975b72f895c9b4d99" +checksum = "4df4df40ec50c46000231c914968278b1eb05098cf8f1b3a518a95030e71d1c7" dependencies = [ "anstream", "anstyle", @@ -216,9 +216,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.13" +version = "4.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0" +checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" dependencies = [ "heck", "proc-macro2", @@ -228,9 +228,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.2" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" +checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" [[package]] name = "colorchoice" @@ -434,9 +434,9 @@ dependencies = [ [[package]] name = "heck" -version = "0.5.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "hermit-abi" @@ -899,9 +899,9 @@ checksum = "9091b6114800a5f2141aee1d1b9d6ca3592ac062dc5decb3764ec5895a47b4eb" [[package]] name = "strsim" -version = "0.11.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] name = "syn"