diff --git a/benchmarks/aggregate_gpui_shell.py b/benchmarks/aggregate_gpui_shell.py index 0b09dc19..63ca45d8 100644 --- a/benchmarks/aggregate_gpui_shell.py +++ b/benchmarks/aggregate_gpui_shell.py @@ -84,14 +84,16 @@ def main() -> None: "automatic": select(samples(directory, "panel", "automatic"), lifecycle_keys), }, } - for workload, name, suitable, regression_guard in ( - ("panel", "realistic 443-node host-heavy panel", False, True), - ("compute", "render-driven numeric layout checksum", True, False), + for workload, name, suitable, regression_guard, native_required in ( + ("panel", "realistic 443-node host-heavy panel", False, True, False), + ("compute", "render-driven numeric layout checksum", True, False, True), + ("mixed", "market compute, sort, aggregate, and visible list", False, False, True), ): document["workloads"].append({ "name": name, "suitable_for_jit": suitable, "regression_guard": regression_guard, + "native_required": native_required, "interpreter": select(samples(directory, workload, "interpreter"), workload_keys), "automatic": select(samples(directory, workload, "automatic"), workload_keys), }) diff --git a/benchmarks/gpui_shell_report.rs b/benchmarks/gpui_shell_report.rs index 70a87c27..96fa8cf0 100644 --- a/benchmarks/gpui_shell_report.rs +++ b/benchmarks/gpui_shell_report.rs @@ -42,6 +42,8 @@ struct Workload { name: String, suitable_for_jit: bool, regression_guard: bool, + #[serde(default)] + native_required: bool, interpreter: Vec, automatic: Vec, } @@ -182,11 +184,12 @@ fn validate_and_render(report: &Report) -> Result<(String, bool), String> { .iter() .map(|x| x.fallback_count) .sum::(); + let native_gate = !workload.native_required || every_sample_native; let suitable_gate = !workload.suitable_for_jit || (speedup[0] + f64::EPSILON * 8.0 >= 2.0 && every_sample_native); let regression_gate = !workload.regression_guard || (speedup[0] + f64::EPSILON * 8.0 >= 1.0 / 1.05 && tail[1] <= 1.05); - let pass = suitable_gate && regression_gate; + let pass = native_gate && suitable_gate && regression_gate; workloads_pass &= pass; if workload.suitable_for_jit { suitable += 1; @@ -417,6 +420,7 @@ mod tests { name: "real panel".into(), suitable_for_jit: true, regression_guard: true, + native_required: false, interpreter: samples(100 * speedup, false, 0), automatic: samples(100, true, automatic_native_entries), }], @@ -511,4 +515,29 @@ mod tests { assert!(markdown.contains("host panel")); assert!(markdown.contains("Overall: **FAIL**")); } + + #[test] + fn observational_mixed_workload_requires_native_without_a_speed_gate() { + let mut report = report(2, 1); + let mut mixed = report.workloads[0].clone(); + mixed.name = "mixed market panel".into(); + mixed.suitable_for_jit = false; + mixed.regression_guard = false; + mixed.native_required = true; + mixed + .interpreter + .iter_mut() + .for_each(|sample| sample.steady_state_ns = 100); + report.workloads.push(mixed); + + let (markdown, pass) = validate_and_render(&report).unwrap(); + assert!(pass, "{markdown}"); + + report.workloads[1] + .automatic + .iter_mut() + .for_each(|sample| sample.native_entries = 0); + let (markdown, pass) = validate_and_render(&report).unwrap(); + assert!(!pass, "{markdown}"); + } } diff --git a/benchmarks/results/gpui-shell-mixed-v1.json b/benchmarks/results/gpui-shell-mixed-v1.json new file mode 100644 index 00000000..1c228a12 --- /dev/null +++ b/benchmarks/results/gpui-shell-mixed-v1.json @@ -0,0 +1,6541 @@ +{ + "schema": "gpui-shell-jit-v1", + "provenance": { + "shell_revision": "c0b989691707d5c18d973cf9cf805bbcadde37b5", + "rquickjs_revision": "034c9f04f80ef0464ee2589dbb202608ac090e4d", + "shell_dirty": false, + "rquickjs_dirty": false, + "test_binary_sha256": "5db3e093e9307e77c86de2ab1cb5d6b6df235652c856b3658e638eda10766384", + "integration_patch_sha256": "91a233c06d09a91764b0ea05c8440144717eae1fbf4c12ee95ad83d6001f9c31", + "cpu_affinity": "0", + "target_triple": "x86_64-unknown-linux-gnu", + "command": [ + "scripts/bench-gpui-shell.sh", + "/home/jason/work/gpui-kit", + "/tmp/gpui-shell-mixed-clean.json" + ] + }, + "policy": { + "warmup_processes": 5, + "paired_processes": 30, + "bootstrap_resamples": 10000 + }, + "workloads": [ + { + "name": "realistic 443-node host-heavy panel", + "suitable_for_jit": false, + "regression_guard": true, + "native_required": false, + "interpreter": [ + { + "pair_index": 0, + "steady_state_ns": 822872, + "p99_script_render_ns": 856400, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 1, + "steady_state_ns": 814943, + "p99_script_render_ns": 841168, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 2, + "steady_state_ns": 819471, + "p99_script_render_ns": 838164, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 3, + "steady_state_ns": 814428, + "p99_script_render_ns": 836449, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 4, + "steady_state_ns": 817484, + "p99_script_render_ns": 835545, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 5, + "steady_state_ns": 820077, + "p99_script_render_ns": 835342, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 6, + "steady_state_ns": 822418, + "p99_script_render_ns": 836164, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 7, + "steady_state_ns": 816696, + "p99_script_render_ns": 837455, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 8, + "steady_state_ns": 822787, + "p99_script_render_ns": 843516, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 9, + "steady_state_ns": 820258, + "p99_script_render_ns": 847844, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 10, + "steady_state_ns": 813635, + "p99_script_render_ns": 826258, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 11, + "steady_state_ns": 814045, + "p99_script_render_ns": 830318, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 12, + "steady_state_ns": 819383, + "p99_script_render_ns": 837314, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 13, + "steady_state_ns": 821611, + "p99_script_render_ns": 845717, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 14, + "steady_state_ns": 815693, + "p99_script_render_ns": 835395, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 15, + "steady_state_ns": 816842, + "p99_script_render_ns": 835751, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 16, + "steady_state_ns": 820379, + "p99_script_render_ns": 862979, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 17, + "steady_state_ns": 820188, + "p99_script_render_ns": 846767, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 18, + "steady_state_ns": 818421, + "p99_script_render_ns": 836508, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 19, + "steady_state_ns": 821333, + "p99_script_render_ns": 838438, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 20, + "steady_state_ns": 820570, + "p99_script_render_ns": 865499, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 21, + "steady_state_ns": 817166, + "p99_script_render_ns": 839238, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 22, + "steady_state_ns": 818731, + "p99_script_render_ns": 834231, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 23, + "steady_state_ns": 817448, + "p99_script_render_ns": 839184, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 24, + "steady_state_ns": 815959, + "p99_script_render_ns": 839089, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 25, + "steady_state_ns": 816726, + "p99_script_render_ns": 840644, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 26, + "steady_state_ns": 817935, + "p99_script_render_ns": 844433, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 27, + "steady_state_ns": 821490, + "p99_script_render_ns": 855016, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 28, + "steady_state_ns": 820989, + "p99_script_render_ns": 845221, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 29, + "steady_state_ns": 822187, + "p99_script_render_ns": 847239, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + } + ], + "automatic": [ + { + "pair_index": 0, + "steady_state_ns": 827589, + "p99_script_render_ns": 855048, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": true, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 14, + "unsupported_opcode_failures": 0, + "tier1_rejections": 14, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 1, + "steady_state_ns": 827428, + "p99_script_render_ns": 854259, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": true, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 14, + "unsupported_opcode_failures": 0, + "tier1_rejections": 14, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 2, + "steady_state_ns": 828652, + "p99_script_render_ns": 857142, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": true, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 14, + "unsupported_opcode_failures": 0, + "tier1_rejections": 14, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 3, + "steady_state_ns": 823771, + "p99_script_render_ns": 844638, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": true, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 14, + "unsupported_opcode_failures": 0, + "tier1_rejections": 14, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 4, + "steady_state_ns": 825140, + "p99_script_render_ns": 845083, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": true, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 14, + "unsupported_opcode_failures": 0, + "tier1_rejections": 14, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 5, + "steady_state_ns": 826814, + "p99_script_render_ns": 846595, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": true, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 14, + "unsupported_opcode_failures": 0, + "tier1_rejections": 14, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 6, + "steady_state_ns": 824678, + "p99_script_render_ns": 846619, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": true, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 14, + "unsupported_opcode_failures": 0, + "tier1_rejections": 14, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 7, + "steady_state_ns": 823606, + "p99_script_render_ns": 835724, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": true, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 14, + "unsupported_opcode_failures": 0, + "tier1_rejections": 14, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 8, + "steady_state_ns": 826721, + "p99_script_render_ns": 842023, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": true, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 14, + "unsupported_opcode_failures": 0, + "tier1_rejections": 14, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 9, + "steady_state_ns": 824711, + "p99_script_render_ns": 870083, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": true, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 14, + "unsupported_opcode_failures": 0, + "tier1_rejections": 14, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 10, + "steady_state_ns": 824442, + "p99_script_render_ns": 837719, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": true, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 14, + "unsupported_opcode_failures": 0, + "tier1_rejections": 14, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 11, + "steady_state_ns": 826604, + "p99_script_render_ns": 860446, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": true, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 14, + "unsupported_opcode_failures": 0, + "tier1_rejections": 14, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 12, + "steady_state_ns": 826490, + "p99_script_render_ns": 841738, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": true, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 14, + "unsupported_opcode_failures": 0, + "tier1_rejections": 14, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 13, + "steady_state_ns": 822830, + "p99_script_render_ns": 844041, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": true, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 14, + "unsupported_opcode_failures": 0, + "tier1_rejections": 14, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 14, + "steady_state_ns": 823072, + "p99_script_render_ns": 832019, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": true, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 14, + "unsupported_opcode_failures": 0, + "tier1_rejections": 14, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 15, + "steady_state_ns": 821572, + "p99_script_render_ns": 840232, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": true, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 14, + "unsupported_opcode_failures": 0, + "tier1_rejections": 14, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 16, + "steady_state_ns": 825072, + "p99_script_render_ns": 841406, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": true, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 14, + "unsupported_opcode_failures": 0, + "tier1_rejections": 14, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 17, + "steady_state_ns": 826516, + "p99_script_render_ns": 854072, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": true, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 14, + "unsupported_opcode_failures": 0, + "tier1_rejections": 14, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 18, + "steady_state_ns": 826226, + "p99_script_render_ns": 847715, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": true, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 14, + "unsupported_opcode_failures": 0, + "tier1_rejections": 14, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 19, + "steady_state_ns": 823983, + "p99_script_render_ns": 844113, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": true, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 14, + "unsupported_opcode_failures": 0, + "tier1_rejections": 14, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 20, + "steady_state_ns": 824479, + "p99_script_render_ns": 854862, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": true, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 14, + "unsupported_opcode_failures": 0, + "tier1_rejections": 14, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 21, + "steady_state_ns": 826720, + "p99_script_render_ns": 846985, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": true, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 14, + "unsupported_opcode_failures": 0, + "tier1_rejections": 14, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 22, + "steady_state_ns": 826001, + "p99_script_render_ns": 852799, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": true, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 14, + "unsupported_opcode_failures": 0, + "tier1_rejections": 14, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 23, + "steady_state_ns": 828069, + "p99_script_render_ns": 842725, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": true, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 14, + "unsupported_opcode_failures": 0, + "tier1_rejections": 14, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 24, + "steady_state_ns": 825149, + "p99_script_render_ns": 840880, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": true, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 14, + "unsupported_opcode_failures": 0, + "tier1_rejections": 14, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 25, + "steady_state_ns": 822232, + "p99_script_render_ns": 838845, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": true, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 14, + "unsupported_opcode_failures": 0, + "tier1_rejections": 14, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 26, + "steady_state_ns": 823683, + "p99_script_render_ns": 840121, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": true, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 14, + "unsupported_opcode_failures": 0, + "tier1_rejections": 14, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 27, + "steady_state_ns": 828550, + "p99_script_render_ns": 858076, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": true, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 14, + "unsupported_opcode_failures": 0, + "tier1_rejections": 14, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 28, + "steady_state_ns": 826671, + "p99_script_render_ns": 853937, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": true, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 14, + "unsupported_opcode_failures": 0, + "tier1_rejections": 14, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 29, + "steady_state_ns": 827995, + "p99_script_render_ns": 848879, + "checksum": "443:74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "native_enabled": true, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 14, + "unsupported_opcode_failures": 0, + "tier1_rejections": 14, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + } + ] + }, + { + "name": "render-driven numeric layout checksum", + "suitable_for_jit": true, + "regression_guard": false, + "native_required": true, + "interpreter": [ + { + "pair_index": 0, + "steady_state_ns": 231042, + "p99_script_render_ns": 242070, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 1, + "steady_state_ns": 230567, + "p99_script_render_ns": 242974, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 2, + "steady_state_ns": 229495, + "p99_script_render_ns": 242035, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 3, + "steady_state_ns": 229960, + "p99_script_render_ns": 242014, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 4, + "steady_state_ns": 230002, + "p99_script_render_ns": 239878, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 5, + "steady_state_ns": 229221, + "p99_script_render_ns": 239493, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 6, + "steady_state_ns": 229431, + "p99_script_render_ns": 240011, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 7, + "steady_state_ns": 230650, + "p99_script_render_ns": 240479, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 8, + "steady_state_ns": 229233, + "p99_script_render_ns": 241356, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 9, + "steady_state_ns": 227337, + "p99_script_render_ns": 239632, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 10, + "steady_state_ns": 228906, + "p99_script_render_ns": 242239, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 11, + "steady_state_ns": 228200, + "p99_script_render_ns": 240242, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 12, + "steady_state_ns": 228066, + "p99_script_render_ns": 239669, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 13, + "steady_state_ns": 228707, + "p99_script_render_ns": 239834, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 14, + "steady_state_ns": 229544, + "p99_script_render_ns": 240114, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 15, + "steady_state_ns": 230606, + "p99_script_render_ns": 241173, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 16, + "steady_state_ns": 229504, + "p99_script_render_ns": 242077, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 17, + "steady_state_ns": 229961, + "p99_script_render_ns": 240967, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 18, + "steady_state_ns": 229112, + "p99_script_render_ns": 241017, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 19, + "steady_state_ns": 229671, + "p99_script_render_ns": 241976, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 20, + "steady_state_ns": 228242, + "p99_script_render_ns": 242063, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 21, + "steady_state_ns": 229820, + "p99_script_render_ns": 240800, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 22, + "steady_state_ns": 228651, + "p99_script_render_ns": 241120, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 23, + "steady_state_ns": 228516, + "p99_script_render_ns": 240680, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 24, + "steady_state_ns": 230105, + "p99_script_render_ns": 241508, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 25, + "steady_state_ns": 229799, + "p99_script_render_ns": 240983, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 26, + "steady_state_ns": 230226, + "p99_script_render_ns": 242977, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 27, + "steady_state_ns": 228461, + "p99_script_render_ns": 243945, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 28, + "steady_state_ns": 228080, + "p99_script_render_ns": 243032, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 29, + "steady_state_ns": 228860, + "p99_script_render_ns": 240249, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + } + ], + "automatic": [ + { + "pair_index": 0, + "steady_state_ns": 12152, + "p99_script_render_ns": 14476, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": true, + "native_entries": 233, + "fallback_count": 0, + "installed": 2, + "compile_failures": 7, + "unsupported_opcode_failures": 0, + "tier1_rejections": 7, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 233, + "osr_entries": 1, + "deopts": 0 + }, + { + "pair_index": 1, + "steady_state_ns": 12013, + "p99_script_render_ns": 14724, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": true, + "native_entries": 236, + "fallback_count": 0, + "installed": 2, + "compile_failures": 7, + "unsupported_opcode_failures": 0, + "tier1_rejections": 7, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 236, + "osr_entries": 1, + "deopts": 0 + }, + { + "pair_index": 2, + "steady_state_ns": 12227, + "p99_script_render_ns": 14204, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": true, + "native_entries": 235, + "fallback_count": 0, + "installed": 2, + "compile_failures": 7, + "unsupported_opcode_failures": 0, + "tier1_rejections": 7, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 235, + "osr_entries": 1, + "deopts": 0 + }, + { + "pair_index": 3, + "steady_state_ns": 23050, + "p99_script_render_ns": 50378, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": true, + "native_entries": 231, + "fallback_count": 0, + "installed": 2, + "compile_failures": 7, + "unsupported_opcode_failures": 0, + "tier1_rejections": 7, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 231, + "osr_entries": 1, + "deopts": 0 + }, + { + "pair_index": 4, + "steady_state_ns": 11976, + "p99_script_render_ns": 16169, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": true, + "native_entries": 235, + "fallback_count": 0, + "installed": 2, + "compile_failures": 7, + "unsupported_opcode_failures": 0, + "tier1_rejections": 7, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 235, + "osr_entries": 1, + "deopts": 0 + }, + { + "pair_index": 5, + "steady_state_ns": 11943, + "p99_script_render_ns": 14241, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": true, + "native_entries": 236, + "fallback_count": 0, + "installed": 2, + "compile_failures": 7, + "unsupported_opcode_failures": 0, + "tier1_rejections": 7, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 236, + "osr_entries": 1, + "deopts": 0 + }, + { + "pair_index": 6, + "steady_state_ns": 12097, + "p99_script_render_ns": 13235, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": true, + "native_entries": 234, + "fallback_count": 0, + "installed": 2, + "compile_failures": 7, + "unsupported_opcode_failures": 0, + "tier1_rejections": 7, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 234, + "osr_entries": 1, + "deopts": 0 + }, + { + "pair_index": 7, + "steady_state_ns": 22869, + "p99_script_render_ns": 50801, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": true, + "native_entries": 231, + "fallback_count": 0, + "installed": 2, + "compile_failures": 7, + "unsupported_opcode_failures": 0, + "tier1_rejections": 7, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 231, + "osr_entries": 1, + "deopts": 0 + }, + { + "pair_index": 8, + "steady_state_ns": 23692, + "p99_script_render_ns": 50682, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": true, + "native_entries": 231, + "fallback_count": 0, + "installed": 2, + "compile_failures": 7, + "unsupported_opcode_failures": 0, + "tier1_rejections": 7, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 231, + "osr_entries": 1, + "deopts": 0 + }, + { + "pair_index": 9, + "steady_state_ns": 12076, + "p99_script_render_ns": 13161, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": true, + "native_entries": 235, + "fallback_count": 0, + "installed": 2, + "compile_failures": 7, + "unsupported_opcode_failures": 0, + "tier1_rejections": 7, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 235, + "osr_entries": 1, + "deopts": 0 + }, + { + "pair_index": 10, + "steady_state_ns": 11843, + "p99_script_render_ns": 12949, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": true, + "native_entries": 233, + "fallback_count": 0, + "installed": 2, + "compile_failures": 7, + "unsupported_opcode_failures": 0, + "tier1_rejections": 7, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 233, + "osr_entries": 1, + "deopts": 0 + }, + { + "pair_index": 11, + "steady_state_ns": 19150, + "p99_script_render_ns": 46973, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": true, + "native_entries": 232, + "fallback_count": 0, + "installed": 2, + "compile_failures": 7, + "unsupported_opcode_failures": 0, + "tier1_rejections": 7, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 232, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 12, + "steady_state_ns": 11781, + "p99_script_render_ns": 14522, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": true, + "native_entries": 235, + "fallback_count": 0, + "installed": 2, + "compile_failures": 7, + "unsupported_opcode_failures": 0, + "tier1_rejections": 7, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 235, + "osr_entries": 1, + "deopts": 0 + }, + { + "pair_index": 13, + "steady_state_ns": 11953, + "p99_script_render_ns": 15936, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": true, + "native_entries": 236, + "fallback_count": 0, + "installed": 2, + "compile_failures": 7, + "unsupported_opcode_failures": 0, + "tier1_rejections": 7, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 236, + "osr_entries": 1, + "deopts": 0 + }, + { + "pair_index": 14, + "steady_state_ns": 11931, + "p99_script_render_ns": 13491, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": true, + "native_entries": 237, + "fallback_count": 0, + "installed": 2, + "compile_failures": 7, + "unsupported_opcode_failures": 0, + "tier1_rejections": 7, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 237, + "osr_entries": 1, + "deopts": 0 + }, + { + "pair_index": 15, + "steady_state_ns": 12282, + "p99_script_render_ns": 16641, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": true, + "native_entries": 235, + "fallback_count": 0, + "installed": 2, + "compile_failures": 7, + "unsupported_opcode_failures": 0, + "tier1_rejections": 7, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 235, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 16, + "steady_state_ns": 12356, + "p99_script_render_ns": 15787, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": true, + "native_entries": 236, + "fallback_count": 0, + "installed": 2, + "compile_failures": 7, + "unsupported_opcode_failures": 0, + "tier1_rejections": 7, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 236, + "osr_entries": 1, + "deopts": 0 + }, + { + "pair_index": 17, + "steady_state_ns": 12297, + "p99_script_render_ns": 15352, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": true, + "native_entries": 235, + "fallback_count": 0, + "installed": 2, + "compile_failures": 7, + "unsupported_opcode_failures": 0, + "tier1_rejections": 7, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 235, + "osr_entries": 1, + "deopts": 0 + }, + { + "pair_index": 18, + "steady_state_ns": 11902, + "p99_script_render_ns": 13443, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": true, + "native_entries": 236, + "fallback_count": 0, + "installed": 2, + "compile_failures": 7, + "unsupported_opcode_failures": 0, + "tier1_rejections": 7, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 236, + "osr_entries": 1, + "deopts": 0 + }, + { + "pair_index": 19, + "steady_state_ns": 12083, + "p99_script_render_ns": 16160, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": true, + "native_entries": 235, + "fallback_count": 0, + "installed": 2, + "compile_failures": 7, + "unsupported_opcode_failures": 0, + "tier1_rejections": 7, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 235, + "osr_entries": 1, + "deopts": 0 + }, + { + "pair_index": 20, + "steady_state_ns": 11687, + "p99_script_render_ns": 13558, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": true, + "native_entries": 237, + "fallback_count": 0, + "installed": 2, + "compile_failures": 7, + "unsupported_opcode_failures": 0, + "tier1_rejections": 7, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 237, + "osr_entries": 1, + "deopts": 0 + }, + { + "pair_index": 21, + "steady_state_ns": 11745, + "p99_script_render_ns": 14633, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": true, + "native_entries": 233, + "fallback_count": 0, + "installed": 2, + "compile_failures": 7, + "unsupported_opcode_failures": 0, + "tier1_rejections": 7, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 233, + "osr_entries": 1, + "deopts": 0 + }, + { + "pair_index": 22, + "steady_state_ns": 11868, + "p99_script_render_ns": 15895, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": true, + "native_entries": 233, + "fallback_count": 0, + "installed": 2, + "compile_failures": 7, + "unsupported_opcode_failures": 0, + "tier1_rejections": 7, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 233, + "osr_entries": 1, + "deopts": 0 + }, + { + "pair_index": 23, + "steady_state_ns": 12013, + "p99_script_render_ns": 15630, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": true, + "native_entries": 234, + "fallback_count": 0, + "installed": 2, + "compile_failures": 7, + "unsupported_opcode_failures": 0, + "tier1_rejections": 7, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 234, + "osr_entries": 1, + "deopts": 0 + }, + { + "pair_index": 24, + "steady_state_ns": 11670, + "p99_script_render_ns": 13359, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": true, + "native_entries": 238, + "fallback_count": 0, + "installed": 2, + "compile_failures": 7, + "unsupported_opcode_failures": 0, + "tier1_rejections": 7, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 238, + "osr_entries": 1, + "deopts": 0 + }, + { + "pair_index": 25, + "steady_state_ns": 12254, + "p99_script_render_ns": 14629, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": true, + "native_entries": 235, + "fallback_count": 0, + "installed": 2, + "compile_failures": 7, + "unsupported_opcode_failures": 0, + "tier1_rejections": 7, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 235, + "osr_entries": 1, + "deopts": 0 + }, + { + "pair_index": 26, + "steady_state_ns": 23091, + "p99_script_render_ns": 49914, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": true, + "native_entries": 230, + "fallback_count": 0, + "installed": 2, + "compile_failures": 7, + "unsupported_opcode_failures": 0, + "tier1_rejections": 7, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 230, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 27, + "steady_state_ns": 11894, + "p99_script_render_ns": 15706, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": true, + "native_entries": 236, + "fallback_count": 0, + "installed": 2, + "compile_failures": 7, + "unsupported_opcode_failures": 0, + "tier1_rejections": 7, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 236, + "osr_entries": 1, + "deopts": 0 + }, + { + "pair_index": 28, + "steady_state_ns": 22871, + "p99_script_render_ns": 49947, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": true, + "native_entries": 231, + "fallback_count": 0, + "installed": 2, + "compile_failures": 7, + "unsupported_opcode_failures": 0, + "tier1_rejections": 7, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 231, + "osr_entries": 1, + "deopts": 0 + }, + { + "pair_index": 29, + "steady_state_ns": 12005, + "p99_script_render_ns": 13734, + "checksum": "2:189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "snapshot_sha256": "189f4321efb486a19c78ba406c9292b315bdc907bd0d79fa4a0860f499843993", + "script_renders": 270, + "native_enabled": true, + "native_entries": 234, + "fallback_count": 0, + "installed": 2, + "compile_failures": 7, + "unsupported_opcode_failures": 0, + "tier1_rejections": 7, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 234, + "osr_entries": 1, + "deopts": 0 + } + ] + }, + { + "name": "market compute, sort, aggregate, and visible list", + "suitable_for_jit": false, + "regression_guard": false, + "native_required": true, + "interpreter": [ + { + "pair_index": 0, + "steady_state_ns": 317162, + "p99_script_render_ns": 344894, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 1, + "steady_state_ns": 318414, + "p99_script_render_ns": 336536, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 2, + "steady_state_ns": 318364, + "p99_script_render_ns": 350506, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 3, + "steady_state_ns": 317290, + "p99_script_render_ns": 343269, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 4, + "steady_state_ns": 320838, + "p99_script_render_ns": 345306, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 5, + "steady_state_ns": 318680, + "p99_script_render_ns": 340636, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 6, + "steady_state_ns": 318460, + "p99_script_render_ns": 343342, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 7, + "steady_state_ns": 318980, + "p99_script_render_ns": 340948, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 8, + "steady_state_ns": 320190, + "p99_script_render_ns": 348882, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 9, + "steady_state_ns": 317154, + "p99_script_render_ns": 340977, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 10, + "steady_state_ns": 318880, + "p99_script_render_ns": 348357, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 11, + "steady_state_ns": 318546, + "p99_script_render_ns": 341120, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 12, + "steady_state_ns": 318184, + "p99_script_render_ns": 333734, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 13, + "steady_state_ns": 316716, + "p99_script_render_ns": 338574, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 14, + "steady_state_ns": 318276, + "p99_script_render_ns": 341478, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 15, + "steady_state_ns": 316720, + "p99_script_render_ns": 339961, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 16, + "steady_state_ns": 317617, + "p99_script_render_ns": 333424, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 17, + "steady_state_ns": 319162, + "p99_script_render_ns": 346759, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 18, + "steady_state_ns": 318151, + "p99_script_render_ns": 340952, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 19, + "steady_state_ns": 317515, + "p99_script_render_ns": 339411, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 20, + "steady_state_ns": 319005, + "p99_script_render_ns": 339269, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 21, + "steady_state_ns": 319686, + "p99_script_render_ns": 336985, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 22, + "steady_state_ns": 319312, + "p99_script_render_ns": 342468, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 23, + "steady_state_ns": 317549, + "p99_script_render_ns": 343629, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 24, + "steady_state_ns": 317424, + "p99_script_render_ns": 341796, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 25, + "steady_state_ns": 318914, + "p99_script_render_ns": 344728, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 26, + "steady_state_ns": 319458, + "p99_script_render_ns": 343427, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 27, + "steady_state_ns": 318515, + "p99_script_render_ns": 347443, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 28, + "steady_state_ns": 320268, + "p99_script_render_ns": 352747, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 29, + "steady_state_ns": 318565, + "p99_script_render_ns": 337303, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": false, + "native_entries": 0, + "fallback_count": 0, + "installed": 0, + "compile_failures": 0, + "unsupported_opcode_failures": 0, + "tier1_rejections": 0, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 0, + "install_failures": 0, + "native_exits": 0, + "osr_entries": 0, + "deopts": 0 + } + ], + "automatic": [ + { + "pair_index": 0, + "steady_state_ns": 136856, + "p99_script_render_ns": 155675, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": true, + "native_entries": 24365, + "fallback_count": 0, + "installed": 3, + "compile_failures": 13, + "unsupported_opcode_failures": 0, + "tier1_rejections": 9, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 4, + "install_failures": 0, + "native_exits": 24365, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 1, + "steady_state_ns": 137086, + "p99_script_render_ns": 157665, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": true, + "native_entries": 24440, + "fallback_count": 0, + "installed": 3, + "compile_failures": 13, + "unsupported_opcode_failures": 0, + "tier1_rejections": 9, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 4, + "install_failures": 0, + "native_exits": 24440, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 2, + "steady_state_ns": 136622, + "p99_script_render_ns": 149455, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": true, + "native_entries": 24428, + "fallback_count": 0, + "installed": 3, + "compile_failures": 13, + "unsupported_opcode_failures": 0, + "tier1_rejections": 9, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 4, + "install_failures": 0, + "native_exits": 24428, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 3, + "steady_state_ns": 137581, + "p99_script_render_ns": 159310, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": true, + "native_entries": 24431, + "fallback_count": 0, + "installed": 3, + "compile_failures": 13, + "unsupported_opcode_failures": 0, + "tier1_rejections": 9, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 4, + "install_failures": 0, + "native_exits": 24431, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 4, + "steady_state_ns": 137573, + "p99_script_render_ns": 159539, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": true, + "native_entries": 24528, + "fallback_count": 0, + "installed": 3, + "compile_failures": 13, + "unsupported_opcode_failures": 0, + "tier1_rejections": 9, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 4, + "install_failures": 0, + "native_exits": 24528, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 5, + "steady_state_ns": 138225, + "p99_script_render_ns": 157894, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": true, + "native_entries": 24498, + "fallback_count": 0, + "installed": 3, + "compile_failures": 13, + "unsupported_opcode_failures": 0, + "tier1_rejections": 9, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 4, + "install_failures": 0, + "native_exits": 24498, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 6, + "steady_state_ns": 136580, + "p99_script_render_ns": 142729, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": true, + "native_entries": 24517, + "fallback_count": 0, + "installed": 3, + "compile_failures": 13, + "unsupported_opcode_failures": 0, + "tier1_rejections": 9, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 4, + "install_failures": 0, + "native_exits": 24517, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 7, + "steady_state_ns": 136675, + "p99_script_render_ns": 143099, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": true, + "native_entries": 24449, + "fallback_count": 0, + "installed": 3, + "compile_failures": 13, + "unsupported_opcode_failures": 0, + "tier1_rejections": 9, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 4, + "install_failures": 0, + "native_exits": 24449, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 8, + "steady_state_ns": 136900, + "p99_script_render_ns": 148266, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": true, + "native_entries": 24410, + "fallback_count": 0, + "installed": 3, + "compile_failures": 13, + "unsupported_opcode_failures": 0, + "tier1_rejections": 9, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 4, + "install_failures": 0, + "native_exits": 24410, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 9, + "steady_state_ns": 136821, + "p99_script_render_ns": 144152, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": true, + "native_entries": 24349, + "fallback_count": 0, + "installed": 3, + "compile_failures": 13, + "unsupported_opcode_failures": 0, + "tier1_rejections": 9, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 4, + "install_failures": 0, + "native_exits": 24349, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 10, + "steady_state_ns": 136862, + "p99_script_render_ns": 155845, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": true, + "native_entries": 24347, + "fallback_count": 0, + "installed": 3, + "compile_failures": 13, + "unsupported_opcode_failures": 0, + "tier1_rejections": 9, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 4, + "install_failures": 0, + "native_exits": 24347, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 11, + "steady_state_ns": 136763, + "p99_script_render_ns": 145433, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": true, + "native_entries": 24449, + "fallback_count": 0, + "installed": 3, + "compile_failures": 13, + "unsupported_opcode_failures": 0, + "tier1_rejections": 9, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 4, + "install_failures": 0, + "native_exits": 24449, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 12, + "steady_state_ns": 136965, + "p99_script_render_ns": 158320, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": true, + "native_entries": 24436, + "fallback_count": 0, + "installed": 3, + "compile_failures": 13, + "unsupported_opcode_failures": 0, + "tier1_rejections": 9, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 4, + "install_failures": 0, + "native_exits": 24436, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 13, + "steady_state_ns": 133532, + "p99_script_render_ns": 148699, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": true, + "native_entries": 24401, + "fallback_count": 0, + "installed": 3, + "compile_failures": 13, + "unsupported_opcode_failures": 0, + "tier1_rejections": 9, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 4, + "install_failures": 0, + "native_exits": 24401, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 14, + "steady_state_ns": 136667, + "p99_script_render_ns": 155960, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": true, + "native_entries": 24498, + "fallback_count": 0, + "installed": 3, + "compile_failures": 13, + "unsupported_opcode_failures": 0, + "tier1_rejections": 9, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 4, + "install_failures": 0, + "native_exits": 24498, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 15, + "steady_state_ns": 133509, + "p99_script_render_ns": 149244, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": true, + "native_entries": 24439, + "fallback_count": 0, + "installed": 3, + "compile_failures": 13, + "unsupported_opcode_failures": 0, + "tier1_rejections": 9, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 4, + "install_failures": 0, + "native_exits": 24439, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 16, + "steady_state_ns": 134057, + "p99_script_render_ns": 147641, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": true, + "native_entries": 24476, + "fallback_count": 0, + "installed": 3, + "compile_failures": 13, + "unsupported_opcode_failures": 0, + "tier1_rejections": 9, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 4, + "install_failures": 0, + "native_exits": 24476, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 17, + "steady_state_ns": 138092, + "p99_script_render_ns": 160248, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": true, + "native_entries": 24449, + "fallback_count": 0, + "installed": 3, + "compile_failures": 13, + "unsupported_opcode_failures": 0, + "tier1_rejections": 9, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 4, + "install_failures": 0, + "native_exits": 24449, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 18, + "steady_state_ns": 136351, + "p99_script_render_ns": 154428, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": true, + "native_entries": 24449, + "fallback_count": 0, + "installed": 3, + "compile_failures": 13, + "unsupported_opcode_failures": 0, + "tier1_rejections": 9, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 4, + "install_failures": 0, + "native_exits": 24449, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 19, + "steady_state_ns": 137578, + "p99_script_render_ns": 159528, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": true, + "native_entries": 24479, + "fallback_count": 0, + "installed": 3, + "compile_failures": 13, + "unsupported_opcode_failures": 0, + "tier1_rejections": 9, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 4, + "install_failures": 0, + "native_exits": 24479, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 20, + "steady_state_ns": 136889, + "p99_script_render_ns": 159553, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": true, + "native_entries": 24498, + "fallback_count": 0, + "installed": 3, + "compile_failures": 13, + "unsupported_opcode_failures": 0, + "tier1_rejections": 9, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 4, + "install_failures": 0, + "native_exits": 24498, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 21, + "steady_state_ns": 137446, + "p99_script_render_ns": 155813, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": true, + "native_entries": 24455, + "fallback_count": 0, + "installed": 3, + "compile_failures": 13, + "unsupported_opcode_failures": 0, + "tier1_rejections": 9, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 4, + "install_failures": 0, + "native_exits": 24455, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 22, + "steady_state_ns": 136714, + "p99_script_render_ns": 148955, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": true, + "native_entries": 24221, + "fallback_count": 0, + "installed": 3, + "compile_failures": 13, + "unsupported_opcode_failures": 0, + "tier1_rejections": 9, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 4, + "install_failures": 0, + "native_exits": 24221, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 23, + "steady_state_ns": 137012, + "p99_script_render_ns": 155173, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": true, + "native_entries": 24338, + "fallback_count": 0, + "installed": 3, + "compile_failures": 13, + "unsupported_opcode_failures": 0, + "tier1_rejections": 9, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 4, + "install_failures": 0, + "native_exits": 24338, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 24, + "steady_state_ns": 138086, + "p99_script_render_ns": 159135, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": true, + "native_entries": 24351, + "fallback_count": 0, + "installed": 3, + "compile_failures": 13, + "unsupported_opcode_failures": 0, + "tier1_rejections": 9, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 4, + "install_failures": 0, + "native_exits": 24351, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 25, + "steady_state_ns": 137602, + "p99_script_render_ns": 157854, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": true, + "native_entries": 24353, + "fallback_count": 0, + "installed": 3, + "compile_failures": 13, + "unsupported_opcode_failures": 0, + "tier1_rejections": 9, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 4, + "install_failures": 0, + "native_exits": 24353, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 26, + "steady_state_ns": 137684, + "p99_script_render_ns": 158367, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": true, + "native_entries": 24210, + "fallback_count": 0, + "installed": 3, + "compile_failures": 13, + "unsupported_opcode_failures": 0, + "tier1_rejections": 9, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 4, + "install_failures": 0, + "native_exits": 24210, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 27, + "steady_state_ns": 134086, + "p99_script_render_ns": 144610, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": true, + "native_entries": 24449, + "fallback_count": 0, + "installed": 3, + "compile_failures": 13, + "unsupported_opcode_failures": 0, + "tier1_rejections": 9, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 4, + "install_failures": 0, + "native_exits": 24449, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 28, + "steady_state_ns": 136982, + "p99_script_render_ns": 156844, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": true, + "native_entries": 24353, + "fallback_count": 0, + "installed": 3, + "compile_failures": 13, + "unsupported_opcode_failures": 0, + "tier1_rejections": 9, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 4, + "install_failures": 0, + "native_exits": 24353, + "osr_entries": 0, + "deopts": 0 + }, + { + "pair_index": 29, + "steady_state_ns": 137280, + "p99_script_render_ns": 151688, + "checksum": "38:d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "snapshot_sha256": "d7ab2dde1d51d17cf64c46a07f13cbbd785d6aefff9994ad254af5fbb5255663", + "script_renders": 270, + "native_enabled": true, + "native_entries": 24401, + "fallback_count": 0, + "installed": 3, + "compile_failures": 13, + "unsupported_opcode_failures": 0, + "tier1_rejections": 9, + "resource_limit_failures": 0, + "cancelled_compilations": 0, + "compiler_panics": 0, + "invalid_artifacts": 4, + "install_failures": 0, + "native_exits": 24401, + "osr_entries": 0, + "deopts": 0 + } + ] + } + ], + "lifecycle": { + "interpreter": [ + { + "pair_index": 0, + "first_window_ns": 5290403, + "hot_reload_ns": 680834, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 73563, + "instantiate_ns": 12814, + "render_ns": 666696, + "total_ns": 753149 + }, + { + "source_eval_ns": 36245, + "instantiate_ns": 9164, + "render_ns": 667825, + "total_ns": 713299 + }, + { + "source_eval_ns": 32858, + "instantiate_ns": 8379, + "render_ns": 639520, + "total_ns": 680818 + }, + { + "source_eval_ns": 30604, + "instantiate_ns": 8213, + "render_ns": 641956, + "total_ns": 680834 + }, + { + "source_eval_ns": 29930, + "instantiate_ns": 7938, + "render_ns": 630310, + "total_ns": 668237 + } + ] + }, + { + "pair_index": 1, + "first_window_ns": 5465158, + "hot_reload_ns": 676524, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 52335, + "instantiate_ns": 10435, + "render_ns": 631383, + "total_ns": 694237 + }, + { + "source_eval_ns": 37259, + "instantiate_ns": 8974, + "render_ns": 627085, + "total_ns": 673384 + }, + { + "source_eval_ns": 32943, + "instantiate_ns": 8060, + "render_ns": 633817, + "total_ns": 674882 + }, + { + "source_eval_ns": 30674, + "instantiate_ns": 7596, + "render_ns": 638344, + "total_ns": 676671 + }, + { + "source_eval_ns": 30362, + "instantiate_ns": 7562, + "render_ns": 638537, + "total_ns": 676524 + } + ] + }, + { + "pair_index": 2, + "first_window_ns": 5241714, + "hot_reload_ns": 686854, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 52079, + "instantiate_ns": 10567, + "render_ns": 627878, + "total_ns": 690629 + }, + { + "source_eval_ns": 37406, + "instantiate_ns": 8746, + "render_ns": 667595, + "total_ns": 713813 + }, + { + "source_eval_ns": 35774, + "instantiate_ns": 8047, + "render_ns": 642971, + "total_ns": 686854 + }, + { + "source_eval_ns": 31581, + "instantiate_ns": 7662, + "render_ns": 641271, + "total_ns": 680573 + }, + { + "source_eval_ns": 30767, + "instantiate_ns": 8007, + "render_ns": 635939, + "total_ns": 674773 + } + ] + }, + { + "pair_index": 3, + "first_window_ns": 5250011, + "hot_reload_ns": 681780, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 51374, + "instantiate_ns": 11032, + "render_ns": 646771, + "total_ns": 709260 + }, + { + "source_eval_ns": 37054, + "instantiate_ns": 8827, + "render_ns": 640588, + "total_ns": 686537 + }, + { + "source_eval_ns": 32518, + "instantiate_ns": 8107, + "render_ns": 641097, + "total_ns": 681780 + }, + { + "source_eval_ns": 30786, + "instantiate_ns": 7953, + "render_ns": 633972, + "total_ns": 672772 + }, + { + "source_eval_ns": 30476, + "instantiate_ns": 7547, + "render_ns": 637732, + "total_ns": 675815 + } + ] + }, + { + "pair_index": 4, + "first_window_ns": 5372592, + "hot_reload_ns": 684169, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 51689, + "instantiate_ns": 10191, + "render_ns": 632171, + "total_ns": 694138 + }, + { + "source_eval_ns": 36305, + "instantiate_ns": 8527, + "render_ns": 632766, + "total_ns": 677678 + }, + { + "source_eval_ns": 32591, + "instantiate_ns": 7849, + "render_ns": 643890, + "total_ns": 684395 + }, + { + "source_eval_ns": 31148, + "instantiate_ns": 7816, + "render_ns": 645137, + "total_ns": 684169 + }, + { + "source_eval_ns": 30350, + "instantiate_ns": 7797, + "render_ns": 638445, + "total_ns": 676662 + } + ] + }, + { + "pair_index": 5, + "first_window_ns": 5251492, + "hot_reload_ns": 677587, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 65473, + "instantiate_ns": 10243, + "render_ns": 641447, + "total_ns": 717247 + }, + { + "source_eval_ns": 36652, + "instantiate_ns": 8348, + "render_ns": 632506, + "total_ns": 677587 + }, + { + "source_eval_ns": 32870, + "instantiate_ns": 8304, + "render_ns": 642540, + "total_ns": 683778 + }, + { + "source_eval_ns": 31343, + "instantiate_ns": 7938, + "render_ns": 636299, + "total_ns": 675637 + }, + { + "source_eval_ns": 30275, + "instantiate_ns": 7981, + "render_ns": 633460, + "total_ns": 671787 + } + ] + }, + { + "pair_index": 6, + "first_window_ns": 5225700, + "hot_reload_ns": 678748, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 52969, + "instantiate_ns": 10230, + "render_ns": 638540, + "total_ns": 701854 + }, + { + "source_eval_ns": 43048, + "instantiate_ns": 10186, + "render_ns": 668372, + "total_ns": 721674 + }, + { + "source_eval_ns": 34277, + "instantiate_ns": 8572, + "render_ns": 635842, + "total_ns": 678748 + }, + { + "source_eval_ns": 31846, + "instantiate_ns": 8163, + "render_ns": 637023, + "total_ns": 677088 + }, + { + "source_eval_ns": 30433, + "instantiate_ns": 7609, + "render_ns": 639741, + "total_ns": 677841 + } + ] + }, + { + "pair_index": 7, + "first_window_ns": 5220343, + "hot_reload_ns": 683105, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 51225, + "instantiate_ns": 10626, + "render_ns": 643451, + "total_ns": 705386 + }, + { + "source_eval_ns": 38184, + "instantiate_ns": 8712, + "render_ns": 636136, + "total_ns": 683105 + }, + { + "source_eval_ns": 33027, + "instantiate_ns": 8044, + "render_ns": 661097, + "total_ns": 702230 + }, + { + "source_eval_ns": 30775, + "instantiate_ns": 8014, + "render_ns": 633613, + "total_ns": 672464 + }, + { + "source_eval_ns": 30088, + "instantiate_ns": 7566, + "render_ns": 644725, + "total_ns": 682437 + } + ] + }, + { + "pair_index": 8, + "first_window_ns": 5250149, + "hot_reload_ns": 688291, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 52918, + "instantiate_ns": 10658, + "render_ns": 639070, + "total_ns": 702728 + }, + { + "source_eval_ns": 36245, + "instantiate_ns": 8318, + "render_ns": 637944, + "total_ns": 682570 + }, + { + "source_eval_ns": 32775, + "instantiate_ns": 8281, + "render_ns": 675036, + "total_ns": 716157 + }, + { + "source_eval_ns": 31659, + "instantiate_ns": 7835, + "render_ns": 648737, + "total_ns": 688291 + }, + { + "source_eval_ns": 33359, + "instantiate_ns": 8284, + "render_ns": 645510, + "total_ns": 687211 + } + ] + }, + { + "pair_index": 9, + "first_window_ns": 5242886, + "hot_reload_ns": 684467, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 58794, + "instantiate_ns": 10932, + "render_ns": 631074, + "total_ns": 700891 + }, + { + "source_eval_ns": 38402, + "instantiate_ns": 9119, + "render_ns": 632804, + "total_ns": 680394 + }, + { + "source_eval_ns": 37969, + "instantiate_ns": 7809, + "render_ns": 636617, + "total_ns": 682455 + }, + { + "source_eval_ns": 33292, + "instantiate_ns": 8520, + "render_ns": 643187, + "total_ns": 685060 + }, + { + "source_eval_ns": 32036, + "instantiate_ns": 7997, + "render_ns": 644372, + "total_ns": 684467 + } + ] + }, + { + "pair_index": 10, + "first_window_ns": 5244057, + "hot_reload_ns": 678916, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 54878, + "instantiate_ns": 11002, + "render_ns": 641150, + "total_ns": 707112 + }, + { + "source_eval_ns": 35821, + "instantiate_ns": 8565, + "render_ns": 637370, + "total_ns": 681824 + }, + { + "source_eval_ns": 32370, + "instantiate_ns": 7999, + "render_ns": 638485, + "total_ns": 678916 + }, + { + "source_eval_ns": 30304, + "instantiate_ns": 7429, + "render_ns": 625489, + "total_ns": 663275 + }, + { + "source_eval_ns": 29852, + "instantiate_ns": 7652, + "render_ns": 637235, + "total_ns": 674799 + } + ] + }, + { + "pair_index": 11, + "first_window_ns": 5386999, + "hot_reload_ns": 673279, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 50993, + "instantiate_ns": 11241, + "render_ns": 653014, + "total_ns": 715352 + }, + { + "source_eval_ns": 36506, + "instantiate_ns": 8842, + "render_ns": 627878, + "total_ns": 673285 + }, + { + "source_eval_ns": 32883, + "instantiate_ns": 7933, + "render_ns": 632403, + "total_ns": 673279 + }, + { + "source_eval_ns": 30581, + "instantiate_ns": 7741, + "render_ns": 634387, + "total_ns": 672767 + }, + { + "source_eval_ns": 29624, + "instantiate_ns": 7472, + "render_ns": 630990, + "total_ns": 668146 + } + ] + }, + { + "pair_index": 12, + "first_window_ns": 5436589, + "hot_reload_ns": 677961, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 67677, + "instantiate_ns": 11721, + "render_ns": 638917, + "total_ns": 718426 + }, + { + "source_eval_ns": 37011, + "instantiate_ns": 8659, + "render_ns": 643938, + "total_ns": 689670 + }, + { + "source_eval_ns": 33557, + "instantiate_ns": 7631, + "render_ns": 629557, + "total_ns": 670806 + }, + { + "source_eval_ns": 35243, + "instantiate_ns": 8439, + "render_ns": 634218, + "total_ns": 677961 + }, + { + "source_eval_ns": 31134, + "instantiate_ns": 7890, + "render_ns": 629200, + "total_ns": 668282 + } + ] + }, + { + "pair_index": 13, + "first_window_ns": 5299020, + "hot_reload_ns": 685063, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 67924, + "instantiate_ns": 12124, + "render_ns": 643815, + "total_ns": 723964 + }, + { + "source_eval_ns": 36366, + "instantiate_ns": 8723, + "render_ns": 641155, + "total_ns": 686307 + }, + { + "source_eval_ns": 33174, + "instantiate_ns": 8072, + "render_ns": 643754, + "total_ns": 685063 + }, + { + "source_eval_ns": 31264, + "instantiate_ns": 7930, + "render_ns": 639340, + "total_ns": 678595 + }, + { + "source_eval_ns": 31320, + "instantiate_ns": 8012, + "render_ns": 634438, + "total_ns": 673828 + } + ] + }, + { + "pair_index": 14, + "first_window_ns": 5274467, + "hot_reload_ns": 679578, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 52216, + "instantiate_ns": 10610, + "render_ns": 651043, + "total_ns": 713952 + }, + { + "source_eval_ns": 44483, + "instantiate_ns": 10255, + "render_ns": 657171, + "total_ns": 711983 + }, + { + "source_eval_ns": 32372, + "instantiate_ns": 10465, + "render_ns": 625482, + "total_ns": 668379 + }, + { + "source_eval_ns": 30655, + "instantiate_ns": 7634, + "render_ns": 641222, + "total_ns": 679578 + }, + { + "source_eval_ns": 30163, + "instantiate_ns": 7502, + "render_ns": 637585, + "total_ns": 675313 + } + ] + }, + { + "pair_index": 15, + "first_window_ns": 5375926, + "hot_reload_ns": 672816, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 50968, + "instantiate_ns": 9925, + "render_ns": 635819, + "total_ns": 696794 + }, + { + "source_eval_ns": 36590, + "instantiate_ns": 8544, + "render_ns": 630184, + "total_ns": 675383 + }, + { + "source_eval_ns": 32324, + "instantiate_ns": 7957, + "render_ns": 628827, + "total_ns": 669169 + }, + { + "source_eval_ns": 30624, + "instantiate_ns": 7765, + "render_ns": 634361, + "total_ns": 672816 + }, + { + "source_eval_ns": 30292, + "instantiate_ns": 7529, + "render_ns": 632751, + "total_ns": 670629 + } + ] + }, + { + "pair_index": 16, + "first_window_ns": 5263556, + "hot_reload_ns": 681403, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 70720, + "instantiate_ns": 12232, + "render_ns": 643625, + "total_ns": 726705 + }, + { + "source_eval_ns": 36614, + "instantiate_ns": 8624, + "render_ns": 634431, + "total_ns": 679730 + }, + { + "source_eval_ns": 35533, + "instantiate_ns": 8557, + "render_ns": 643628, + "total_ns": 687780 + }, + { + "source_eval_ns": 31641, + "instantiate_ns": 8009, + "render_ns": 638128, + "total_ns": 677839 + }, + { + "source_eval_ns": 30161, + "instantiate_ns": 7914, + "render_ns": 643271, + "total_ns": 681403 + } + ] + }, + { + "pair_index": 17, + "first_window_ns": 5296175, + "hot_reload_ns": 680685, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 65839, + "instantiate_ns": 12508, + "render_ns": 642114, + "total_ns": 720582 + }, + { + "source_eval_ns": 37390, + "instantiate_ns": 8958, + "render_ns": 625827, + "total_ns": 672243 + }, + { + "source_eval_ns": 31949, + "instantiate_ns": 7661, + "render_ns": 634851, + "total_ns": 674520 + }, + { + "source_eval_ns": 30442, + "instantiate_ns": 7882, + "render_ns": 642304, + "total_ns": 680685 + }, + { + "source_eval_ns": 30433, + "instantiate_ns": 7892, + "render_ns": 644283, + "total_ns": 682670 + } + ] + }, + { + "pair_index": 18, + "first_window_ns": 5226365, + "hot_reload_ns": 677872, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 51946, + "instantiate_ns": 11069, + "render_ns": 637378, + "total_ns": 700492 + }, + { + "source_eval_ns": 36943, + "instantiate_ns": 8843, + "render_ns": 638805, + "total_ns": 684664 + }, + { + "source_eval_ns": 32350, + "instantiate_ns": 7824, + "render_ns": 637329, + "total_ns": 677564 + }, + { + "source_eval_ns": 30290, + "instantiate_ns": 7519, + "render_ns": 636211, + "total_ns": 674077 + }, + { + "source_eval_ns": 29777, + "instantiate_ns": 7771, + "render_ns": 640267, + "total_ns": 677872 + } + ] + }, + { + "pair_index": 19, + "first_window_ns": 5288125, + "hot_reload_ns": 687922, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 51060, + "instantiate_ns": 10197, + "render_ns": 648870, + "total_ns": 710208 + }, + { + "source_eval_ns": 36848, + "instantiate_ns": 8455, + "render_ns": 642947, + "total_ns": 688322 + }, + { + "source_eval_ns": 33091, + "instantiate_ns": 7917, + "render_ns": 634515, + "total_ns": 675597 + }, + { + "source_eval_ns": 33234, + "instantiate_ns": 7663, + "render_ns": 640456, + "total_ns": 681430 + }, + { + "source_eval_ns": 34868, + "instantiate_ns": 7706, + "render_ns": 645282, + "total_ns": 687922 + } + ] + }, + { + "pair_index": 20, + "first_window_ns": 5223806, + "hot_reload_ns": 684207, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 78598, + "instantiate_ns": 21211, + "render_ns": 679612, + "total_ns": 779505 + }, + { + "source_eval_ns": 53095, + "instantiate_ns": 11908, + "render_ns": 652740, + "total_ns": 717832 + }, + { + "source_eval_ns": 34469, + "instantiate_ns": 9028, + "render_ns": 640642, + "total_ns": 684207 + }, + { + "source_eval_ns": 31924, + "instantiate_ns": 8279, + "render_ns": 640745, + "total_ns": 681011 + }, + { + "source_eval_ns": 31217, + "instantiate_ns": 7933, + "render_ns": 641271, + "total_ns": 680480 + } + ] + }, + { + "pair_index": 21, + "first_window_ns": 5343362, + "hot_reload_ns": 687004, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 77572, + "instantiate_ns": 12480, + "render_ns": 646710, + "total_ns": 736864 + }, + { + "source_eval_ns": 43842, + "instantiate_ns": 9451, + "render_ns": 641272, + "total_ns": 694628 + }, + { + "source_eval_ns": 33551, + "instantiate_ns": 8114, + "render_ns": 637405, + "total_ns": 679135 + }, + { + "source_eval_ns": 31111, + "instantiate_ns": 7812, + "render_ns": 637766, + "total_ns": 676749 + }, + { + "source_eval_ns": 30089, + "instantiate_ns": 7851, + "render_ns": 649002, + "total_ns": 687004 + } + ] + }, + { + "pair_index": 22, + "first_window_ns": 5417771, + "hot_reload_ns": 686787, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 75266, + "instantiate_ns": 12523, + "render_ns": 681222, + "total_ns": 769122 + }, + { + "source_eval_ns": 36425, + "instantiate_ns": 8269, + "render_ns": 642032, + "total_ns": 686787 + }, + { + "source_eval_ns": 32145, + "instantiate_ns": 12826, + "render_ns": 636445, + "total_ns": 681484 + }, + { + "source_eval_ns": 30335, + "instantiate_ns": 8100, + "render_ns": 655017, + "total_ns": 693517 + }, + { + "source_eval_ns": 30546, + "instantiate_ns": 8035, + "render_ns": 633141, + "total_ns": 671783 + } + ] + }, + { + "pair_index": 23, + "first_window_ns": 5429156, + "hot_reload_ns": 688434, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 76199, + "instantiate_ns": 12524, + "render_ns": 640845, + "total_ns": 729655 + }, + { + "source_eval_ns": 36040, + "instantiate_ns": 8367, + "render_ns": 643880, + "total_ns": 688362 + }, + { + "source_eval_ns": 32660, + "instantiate_ns": 8092, + "render_ns": 641375, + "total_ns": 682199 + }, + { + "source_eval_ns": 31729, + "instantiate_ns": 8247, + "render_ns": 670468, + "total_ns": 710515 + }, + { + "source_eval_ns": 35004, + "instantiate_ns": 8118, + "render_ns": 645247, + "total_ns": 688434 + } + ] + }, + { + "pair_index": 24, + "first_window_ns": 5530395, + "hot_reload_ns": 684224, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 75324, + "instantiate_ns": 12403, + "render_ns": 641957, + "total_ns": 729788 + }, + { + "source_eval_ns": 38676, + "instantiate_ns": 9704, + "render_ns": 641810, + "total_ns": 690263 + }, + { + "source_eval_ns": 34177, + "instantiate_ns": 7968, + "render_ns": 642012, + "total_ns": 684224 + }, + { + "source_eval_ns": 31230, + "instantiate_ns": 7937, + "render_ns": 639502, + "total_ns": 678731 + }, + { + "source_eval_ns": 30940, + "instantiate_ns": 7662, + "render_ns": 641439, + "total_ns": 680107 + } + ] + }, + { + "pair_index": 25, + "first_window_ns": 5378802, + "hot_reload_ns": 677648, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 77468, + "instantiate_ns": 12619, + "render_ns": 642057, + "total_ns": 732228 + }, + { + "source_eval_ns": 37490, + "instantiate_ns": 8375, + "render_ns": 633757, + "total_ns": 679688 + }, + { + "source_eval_ns": 33569, + "instantiate_ns": 8017, + "render_ns": 632645, + "total_ns": 674289 + }, + { + "source_eval_ns": 34079, + "instantiate_ns": 7715, + "render_ns": 635796, + "total_ns": 677648 + }, + { + "source_eval_ns": 31354, + "instantiate_ns": 7907, + "render_ns": 635970, + "total_ns": 675294 + } + ] + }, + { + "pair_index": 26, + "first_window_ns": 5335072, + "hot_reload_ns": 680607, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 76265, + "instantiate_ns": 12114, + "render_ns": 642534, + "total_ns": 731000 + }, + { + "source_eval_ns": 37421, + "instantiate_ns": 9239, + "render_ns": 645586, + "total_ns": 692316 + }, + { + "source_eval_ns": 33858, + "instantiate_ns": 7887, + "render_ns": 634348, + "total_ns": 676158 + }, + { + "source_eval_ns": 32071, + "instantiate_ns": 7967, + "render_ns": 640506, + "total_ns": 680607 + }, + { + "source_eval_ns": 30115, + "instantiate_ns": 7588, + "render_ns": 636243, + "total_ns": 674009 + } + ] + }, + { + "pair_index": 27, + "first_window_ns": 5265131, + "hot_reload_ns": 686476, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 62870, + "instantiate_ns": 10870, + "render_ns": 637510, + "total_ns": 711364 + }, + { + "source_eval_ns": 36720, + "instantiate_ns": 8697, + "render_ns": 640993, + "total_ns": 686476 + }, + { + "source_eval_ns": 33447, + "instantiate_ns": 7940, + "render_ns": 652616, + "total_ns": 694067 + }, + { + "source_eval_ns": 31721, + "instantiate_ns": 7852, + "render_ns": 638082, + "total_ns": 677718 + }, + { + "source_eval_ns": 31521, + "instantiate_ns": 8600, + "render_ns": 642977, + "total_ns": 683162 + } + ] + }, + { + "pair_index": 28, + "first_window_ns": 5329998, + "hot_reload_ns": 685503, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 68546, + "instantiate_ns": 15470, + "render_ns": 633658, + "total_ns": 717760 + }, + { + "source_eval_ns": 38197, + "instantiate_ns": 8672, + "render_ns": 638573, + "total_ns": 685503 + }, + { + "source_eval_ns": 33902, + "instantiate_ns": 8301, + "render_ns": 650252, + "total_ns": 692527 + }, + { + "source_eval_ns": 31123, + "instantiate_ns": 7901, + "render_ns": 636284, + "total_ns": 675360 + }, + { + "source_eval_ns": 29771, + "instantiate_ns": 7736, + "render_ns": 645533, + "total_ns": 683108 + } + ] + }, + { + "pair_index": 29, + "first_window_ns": 5244615, + "hot_reload_ns": 685467, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 54855, + "instantiate_ns": 10326, + "render_ns": 633909, + "total_ns": 699173 + }, + { + "source_eval_ns": 36718, + "instantiate_ns": 8186, + "render_ns": 644686, + "total_ns": 689651 + }, + { + "source_eval_ns": 33565, + "instantiate_ns": 7913, + "render_ns": 641161, + "total_ns": 682701 + }, + { + "source_eval_ns": 34467, + "instantiate_ns": 8480, + "render_ns": 642466, + "total_ns": 685467 + }, + { + "source_eval_ns": 32232, + "instantiate_ns": 8104, + "render_ns": 638987, + "total_ns": 679378 + } + ] + } + ], + "automatic": [ + { + "pair_index": 0, + "first_window_ns": 5306714, + "hot_reload_ns": 694697, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 58398, + "instantiate_ns": 10034, + "render_ns": 645624, + "total_ns": 714141 + }, + { + "source_eval_ns": 37935, + "instantiate_ns": 8456, + "render_ns": 651473, + "total_ns": 697930 + }, + { + "source_eval_ns": 37815, + "instantiate_ns": 9360, + "render_ns": 647449, + "total_ns": 694697 + }, + { + "source_eval_ns": 31383, + "instantiate_ns": 7694, + "render_ns": 644022, + "total_ns": 683166 + }, + { + "source_eval_ns": 30080, + "instantiate_ns": 7645, + "render_ns": 646870, + "total_ns": 684665 + } + ] + }, + { + "pair_index": 1, + "first_window_ns": 5356177, + "hot_reload_ns": 688787, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 71209, + "instantiate_ns": 12232, + "render_ns": 645004, + "total_ns": 728529 + }, + { + "source_eval_ns": 37172, + "instantiate_ns": 8696, + "render_ns": 636872, + "total_ns": 682805 + }, + { + "source_eval_ns": 34989, + "instantiate_ns": 9702, + "render_ns": 658705, + "total_ns": 703465 + }, + { + "source_eval_ns": 32801, + "instantiate_ns": 8293, + "render_ns": 647627, + "total_ns": 688787 + }, + { + "source_eval_ns": 31085, + "instantiate_ns": 7588, + "render_ns": 643512, + "total_ns": 682246 + } + ] + }, + { + "pair_index": 2, + "first_window_ns": 5323279, + "hot_reload_ns": 678196, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 70324, + "instantiate_ns": 12184, + "render_ns": 667427, + "total_ns": 750023 + }, + { + "source_eval_ns": 37569, + "instantiate_ns": 9207, + "render_ns": 637196, + "total_ns": 684039 + }, + { + "source_eval_ns": 33301, + "instantiate_ns": 8180, + "render_ns": 627773, + "total_ns": 669321 + }, + { + "source_eval_ns": 31538, + "instantiate_ns": 8071, + "render_ns": 631872, + "total_ns": 671544 + }, + { + "source_eval_ns": 29873, + "instantiate_ns": 7602, + "render_ns": 640658, + "total_ns": 678196 + } + ] + }, + { + "pair_index": 3, + "first_window_ns": 5319183, + "hot_reload_ns": 688049, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 53482, + "instantiate_ns": 10080, + "render_ns": 635429, + "total_ns": 699123 + }, + { + "source_eval_ns": 37478, + "instantiate_ns": 8532, + "render_ns": 629243, + "total_ns": 675325 + }, + { + "source_eval_ns": 38644, + "instantiate_ns": 9343, + "render_ns": 653329, + "total_ns": 701385 + }, + { + "source_eval_ns": 34699, + "instantiate_ns": 8059, + "render_ns": 638259, + "total_ns": 681080 + }, + { + "source_eval_ns": 43631, + "instantiate_ns": 8082, + "render_ns": 636278, + "total_ns": 688049 + } + ] + }, + { + "pair_index": 4, + "first_window_ns": 5293405, + "hot_reload_ns": 692822, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 51371, + "instantiate_ns": 10096, + "render_ns": 645254, + "total_ns": 706807 + }, + { + "source_eval_ns": 37538, + "instantiate_ns": 8730, + "render_ns": 646478, + "total_ns": 692822 + }, + { + "source_eval_ns": 39639, + "instantiate_ns": 9705, + "render_ns": 669872, + "total_ns": 719284 + }, + { + "source_eval_ns": 32453, + "instantiate_ns": 8459, + "render_ns": 642539, + "total_ns": 683508 + }, + { + "source_eval_ns": 30996, + "instantiate_ns": 7773, + "render_ns": 638643, + "total_ns": 677471 + } + ] + }, + { + "pair_index": 5, + "first_window_ns": 5225213, + "hot_reload_ns": 698546, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 69220, + "instantiate_ns": 11798, + "render_ns": 639861, + "total_ns": 720958 + }, + { + "source_eval_ns": 37655, + "instantiate_ns": 9150, + "render_ns": 651667, + "total_ns": 698546 + }, + { + "source_eval_ns": 38117, + "instantiate_ns": 9968, + "render_ns": 650564, + "total_ns": 698718 + }, + { + "source_eval_ns": 32783, + "instantiate_ns": 8261, + "render_ns": 634515, + "total_ns": 675616 + }, + { + "source_eval_ns": 30668, + "instantiate_ns": 7745, + "render_ns": 637671, + "total_ns": 676148 + } + ] + }, + { + "pair_index": 6, + "first_window_ns": 5327710, + "hot_reload_ns": 684800, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 69303, + "instantiate_ns": 11676, + "render_ns": 639406, + "total_ns": 720470 + }, + { + "source_eval_ns": 38326, + "instantiate_ns": 9107, + "render_ns": 644078, + "total_ns": 691597 + }, + { + "source_eval_ns": 34019, + "instantiate_ns": 8529, + "render_ns": 642185, + "total_ns": 684800 + }, + { + "source_eval_ns": 32725, + "instantiate_ns": 8481, + "render_ns": 635542, + "total_ns": 676817 + }, + { + "source_eval_ns": 31051, + "instantiate_ns": 8027, + "render_ns": 632468, + "total_ns": 671609 + } + ] + }, + { + "pair_index": 7, + "first_window_ns": 5294487, + "hot_reload_ns": 699172, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 52823, + "instantiate_ns": 9890, + "render_ns": 636377, + "total_ns": 699172 + }, + { + "source_eval_ns": 36611, + "instantiate_ns": 8304, + "render_ns": 631766, + "total_ns": 676749 + }, + { + "source_eval_ns": 32575, + "instantiate_ns": 7674, + "render_ns": 637558, + "total_ns": 677869 + }, + { + "source_eval_ns": 31310, + "instantiate_ns": 7757, + "render_ns": 679782, + "total_ns": 718910 + }, + { + "source_eval_ns": 33060, + "instantiate_ns": 8720, + "render_ns": 663717, + "total_ns": 705561 + } + ] + }, + { + "pair_index": 8, + "first_window_ns": 5279989, + "hot_reload_ns": 703019, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 56910, + "instantiate_ns": 11392, + "render_ns": 671253, + "total_ns": 739639 + }, + { + "source_eval_ns": 37965, + "instantiate_ns": 9023, + "render_ns": 655963, + "total_ns": 703019 + }, + { + "source_eval_ns": 38661, + "instantiate_ns": 9417, + "render_ns": 659749, + "total_ns": 707892 + }, + { + "source_eval_ns": 31670, + "instantiate_ns": 8174, + "render_ns": 642090, + "total_ns": 681986 + }, + { + "source_eval_ns": 30548, + "instantiate_ns": 7599, + "render_ns": 637054, + "total_ns": 675261 + } + ] + }, + { + "pair_index": 9, + "first_window_ns": 5370076, + "hot_reload_ns": 699959, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 60833, + "instantiate_ns": 11010, + "render_ns": 636978, + "total_ns": 708953 + }, + { + "source_eval_ns": 39243, + "instantiate_ns": 10310, + "render_ns": 650347, + "total_ns": 699959 + }, + { + "source_eval_ns": 49184, + "instantiate_ns": 10872, + "render_ns": 639028, + "total_ns": 699138 + }, + { + "source_eval_ns": 34416, + "instantiate_ns": 9293, + "render_ns": 662822, + "total_ns": 706588 + }, + { + "source_eval_ns": 31997, + "instantiate_ns": 8671, + "render_ns": 625935, + "total_ns": 666658 + } + ] + }, + { + "pair_index": 10, + "first_window_ns": 5271344, + "hot_reload_ns": 684912, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 56997, + "instantiate_ns": 10482, + "render_ns": 685835, + "total_ns": 753412 + }, + { + "source_eval_ns": 37170, + "instantiate_ns": 8708, + "render_ns": 633940, + "total_ns": 679879 + }, + { + "source_eval_ns": 32787, + "instantiate_ns": 7944, + "render_ns": 641038, + "total_ns": 681825 + }, + { + "source_eval_ns": 31998, + "instantiate_ns": 7928, + "render_ns": 653326, + "total_ns": 693308 + }, + { + "source_eval_ns": 30093, + "instantiate_ns": 7726, + "render_ns": 647038, + "total_ns": 684912 + } + ] + }, + { + "pair_index": 11, + "first_window_ns": 5376868, + "hot_reload_ns": 695067, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 67441, + "instantiate_ns": 12696, + "render_ns": 701293, + "total_ns": 781514 + }, + { + "source_eval_ns": 41058, + "instantiate_ns": 11665, + "render_ns": 660926, + "total_ns": 713718 + }, + { + "source_eval_ns": 39925, + "instantiate_ns": 11472, + "render_ns": 643598, + "total_ns": 695067 + }, + { + "source_eval_ns": 32693, + "instantiate_ns": 8596, + "render_ns": 643523, + "total_ns": 684871 + }, + { + "source_eval_ns": 35367, + "instantiate_ns": 8246, + "render_ns": 632517, + "total_ns": 676187 + } + ] + }, + { + "pair_index": 12, + "first_window_ns": 5486680, + "hot_reload_ns": 683902, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 53511, + "instantiate_ns": 10643, + "render_ns": 639990, + "total_ns": 704242 + }, + { + "source_eval_ns": 37071, + "instantiate_ns": 9063, + "render_ns": 629693, + "total_ns": 675903 + }, + { + "source_eval_ns": 39272, + "instantiate_ns": 8347, + "render_ns": 636219, + "total_ns": 683902 + }, + { + "source_eval_ns": 32061, + "instantiate_ns": 8253, + "render_ns": 647773, + "total_ns": 688153 + }, + { + "source_eval_ns": 32672, + "instantiate_ns": 7992, + "render_ns": 638168, + "total_ns": 678891 + } + ] + }, + { + "pair_index": 13, + "first_window_ns": 5252896, + "hot_reload_ns": 681714, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 53299, + "instantiate_ns": 10268, + "render_ns": 640841, + "total_ns": 704498 + }, + { + "source_eval_ns": 37975, + "instantiate_ns": 8685, + "render_ns": 639108, + "total_ns": 685837 + }, + { + "source_eval_ns": 33726, + "instantiate_ns": 8457, + "render_ns": 620845, + "total_ns": 663094 + }, + { + "source_eval_ns": 32248, + "instantiate_ns": 8141, + "render_ns": 630473, + "total_ns": 670922 + }, + { + "source_eval_ns": 34962, + "instantiate_ns": 8575, + "render_ns": 638119, + "total_ns": 681714 + } + ] + }, + { + "pair_index": 14, + "first_window_ns": 5285817, + "hot_reload_ns": 682528, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 52384, + "instantiate_ns": 10076, + "render_ns": 632670, + "total_ns": 695214 + }, + { + "source_eval_ns": 37868, + "instantiate_ns": 8445, + "render_ns": 636147, + "total_ns": 682528 + }, + { + "source_eval_ns": 40499, + "instantiate_ns": 8579, + "render_ns": 636228, + "total_ns": 685368 + }, + { + "source_eval_ns": 32472, + "instantiate_ns": 8309, + "render_ns": 632385, + "total_ns": 673228 + }, + { + "source_eval_ns": 30566, + "instantiate_ns": 7842, + "render_ns": 634113, + "total_ns": 672584 + } + ] + }, + { + "pair_index": 15, + "first_window_ns": 5324662, + "hot_reload_ns": 675990, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 51941, + "instantiate_ns": 10017, + "render_ns": 640455, + "total_ns": 702541 + }, + { + "source_eval_ns": 36221, + "instantiate_ns": 8707, + "render_ns": 633417, + "total_ns": 678406 + }, + { + "source_eval_ns": 33617, + "instantiate_ns": 7959, + "render_ns": 620334, + "total_ns": 661972 + }, + { + "source_eval_ns": 35025, + "instantiate_ns": 8040, + "render_ns": 631093, + "total_ns": 674221 + }, + { + "source_eval_ns": 31120, + "instantiate_ns": 8034, + "render_ns": 636770, + "total_ns": 675990 + } + ] + }, + { + "pair_index": 16, + "first_window_ns": 5324036, + "hot_reload_ns": 679663, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 53468, + "instantiate_ns": 10156, + "render_ns": 634732, + "total_ns": 698468 + }, + { + "source_eval_ns": 37570, + "instantiate_ns": 8635, + "render_ns": 639771, + "total_ns": 686043 + }, + { + "source_eval_ns": 33430, + "instantiate_ns": 7635, + "render_ns": 633417, + "total_ns": 674543 + }, + { + "source_eval_ns": 31648, + "instantiate_ns": 7797, + "render_ns": 633220, + "total_ns": 672725 + }, + { + "source_eval_ns": 33588, + "instantiate_ns": 8728, + "render_ns": 637286, + "total_ns": 679663 + } + ] + }, + { + "pair_index": 17, + "first_window_ns": 5291097, + "hot_reload_ns": 680118, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 53695, + "instantiate_ns": 10183, + "render_ns": 643493, + "total_ns": 707449 + }, + { + "source_eval_ns": 39432, + "instantiate_ns": 9252, + "render_ns": 632663, + "total_ns": 681420 + }, + { + "source_eval_ns": 33539, + "instantiate_ns": 7993, + "render_ns": 638522, + "total_ns": 680118 + }, + { + "source_eval_ns": 32484, + "instantiate_ns": 8133, + "render_ns": 638911, + "total_ns": 679588 + }, + { + "source_eval_ns": 30076, + "instantiate_ns": 7883, + "render_ns": 634315, + "total_ns": 672338 + } + ] + }, + { + "pair_index": 18, + "first_window_ns": 5247763, + "hot_reload_ns": 693816, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 53338, + "instantiate_ns": 10752, + "render_ns": 651187, + "total_ns": 715361 + }, + { + "source_eval_ns": 37268, + "instantiate_ns": 8600, + "render_ns": 638899, + "total_ns": 684835 + }, + { + "source_eval_ns": 38691, + "instantiate_ns": 9635, + "render_ns": 647328, + "total_ns": 695722 + }, + { + "source_eval_ns": 32183, + "instantiate_ns": 8010, + "render_ns": 653564, + "total_ns": 693816 + }, + { + "source_eval_ns": 31747, + "instantiate_ns": 8350, + "render_ns": 652087, + "total_ns": 692245 + } + ] + }, + { + "pair_index": 19, + "first_window_ns": 5287056, + "hot_reload_ns": 696334, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 56365, + "instantiate_ns": 10147, + "render_ns": 633085, + "total_ns": 699680 + }, + { + "source_eval_ns": 36365, + "instantiate_ns": 8320, + "render_ns": 638905, + "total_ns": 683662 + }, + { + "source_eval_ns": 37403, + "instantiate_ns": 8788, + "render_ns": 650077, + "total_ns": 696334 + }, + { + "source_eval_ns": 31363, + "instantiate_ns": 7753, + "render_ns": 674601, + "total_ns": 713781 + }, + { + "source_eval_ns": 33187, + "instantiate_ns": 8302, + "render_ns": 643512, + "total_ns": 685061 + } + ] + }, + { + "pair_index": 20, + "first_window_ns": 5454340, + "hot_reload_ns": 685822, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 76682, + "instantiate_ns": 13455, + "render_ns": 651361, + "total_ns": 741583 + }, + { + "source_eval_ns": 37614, + "instantiate_ns": 8799, + "render_ns": 634559, + "total_ns": 681033 + }, + { + "source_eval_ns": 32509, + "instantiate_ns": 7849, + "render_ns": 643537, + "total_ns": 683961 + }, + { + "source_eval_ns": 32553, + "instantiate_ns": 8005, + "render_ns": 645201, + "total_ns": 685822 + }, + { + "source_eval_ns": 30925, + "instantiate_ns": 8098, + "render_ns": 649658, + "total_ns": 688742 + } + ] + }, + { + "pair_index": 21, + "first_window_ns": 5492888, + "hot_reload_ns": 681935, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 76336, + "instantiate_ns": 12257, + "render_ns": 635839, + "total_ns": 724752 + }, + { + "source_eval_ns": 37168, + "instantiate_ns": 8673, + "render_ns": 631934, + "total_ns": 677853 + }, + { + "source_eval_ns": 38460, + "instantiate_ns": 7859, + "render_ns": 630865, + "total_ns": 677244 + }, + { + "source_eval_ns": 31524, + "instantiate_ns": 7982, + "render_ns": 643098, + "total_ns": 682666 + }, + { + "source_eval_ns": 34668, + "instantiate_ns": 7928, + "render_ns": 639282, + "total_ns": 681935 + } + ] + }, + { + "pair_index": 22, + "first_window_ns": 5480213, + "hot_reload_ns": 677214, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 78147, + "instantiate_ns": 12194, + "render_ns": 632474, + "total_ns": 722911 + }, + { + "source_eval_ns": 39432, + "instantiate_ns": 9297, + "render_ns": 628426, + "total_ns": 677214 + }, + { + "source_eval_ns": 39220, + "instantiate_ns": 9620, + "render_ns": 657995, + "total_ns": 706900 + }, + { + "source_eval_ns": 31890, + "instantiate_ns": 8365, + "render_ns": 625643, + "total_ns": 665956 + }, + { + "source_eval_ns": 29822, + "instantiate_ns": 7621, + "render_ns": 638580, + "total_ns": 676081 + } + ] + }, + { + "pair_index": 23, + "first_window_ns": 5457578, + "hot_reload_ns": 694178, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 77184, + "instantiate_ns": 11875, + "render_ns": 679500, + "total_ns": 768686 + }, + { + "source_eval_ns": 40560, + "instantiate_ns": 8694, + "render_ns": 651666, + "total_ns": 700985 + }, + { + "source_eval_ns": 33890, + "instantiate_ns": 8053, + "render_ns": 629209, + "total_ns": 671211 + }, + { + "source_eval_ns": 32155, + "instantiate_ns": 8070, + "render_ns": 628878, + "total_ns": 669163 + }, + { + "source_eval_ns": 29533, + "instantiate_ns": 7602, + "render_ns": 656988, + "total_ns": 694178 + } + ] + }, + { + "pair_index": 24, + "first_window_ns": 5447852, + "hot_reload_ns": 677507, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 75417, + "instantiate_ns": 11392, + "render_ns": 685321, + "total_ns": 772212 + }, + { + "source_eval_ns": 39141, + "instantiate_ns": 9376, + "render_ns": 645646, + "total_ns": 694236 + }, + { + "source_eval_ns": 33995, + "instantiate_ns": 8183, + "render_ns": 632446, + "total_ns": 674688 + }, + { + "source_eval_ns": 32162, + "instantiate_ns": 7955, + "render_ns": 637322, + "total_ns": 677507 + }, + { + "source_eval_ns": 30543, + "instantiate_ns": 7742, + "render_ns": 633085, + "total_ns": 671442 + } + ] + }, + { + "pair_index": 25, + "first_window_ns": 5282560, + "hot_reload_ns": 679431, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 75936, + "instantiate_ns": 12326, + "render_ns": 637202, + "total_ns": 725566 + }, + { + "source_eval_ns": 37130, + "instantiate_ns": 8824, + "render_ns": 643334, + "total_ns": 689356 + }, + { + "source_eval_ns": 32893, + "instantiate_ns": 7975, + "render_ns": 632625, + "total_ns": 673554 + }, + { + "source_eval_ns": 31440, + "instantiate_ns": 8066, + "render_ns": 639862, + "total_ns": 679431 + }, + { + "source_eval_ns": 34397, + "instantiate_ns": 8950, + "render_ns": 627934, + "total_ns": 671337 + } + ] + }, + { + "pair_index": 26, + "first_window_ns": 5410018, + "hot_reload_ns": 691379, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 73076, + "instantiate_ns": 11613, + "render_ns": 631445, + "total_ns": 716245 + }, + { + "source_eval_ns": 38718, + "instantiate_ns": 9137, + "render_ns": 641612, + "total_ns": 689533 + }, + { + "source_eval_ns": 34847, + "instantiate_ns": 8789, + "render_ns": 640448, + "total_ns": 684144 + }, + { + "source_eval_ns": 37599, + "instantiate_ns": 9866, + "render_ns": 644857, + "total_ns": 692393 + }, + { + "source_eval_ns": 30996, + "instantiate_ns": 8325, + "render_ns": 652002, + "total_ns": 691379 + } + ] + }, + { + "pair_index": 27, + "first_window_ns": 5349158, + "hot_reload_ns": 690399, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 74156, + "instantiate_ns": 13704, + "render_ns": 639192, + "total_ns": 727137 + }, + { + "source_eval_ns": 37871, + "instantiate_ns": 12418, + "render_ns": 640410, + "total_ns": 690778 + }, + { + "source_eval_ns": 33134, + "instantiate_ns": 8130, + "render_ns": 642437, + "total_ns": 683761 + }, + { + "source_eval_ns": 32400, + "instantiate_ns": 8385, + "render_ns": 646423, + "total_ns": 687270 + }, + { + "source_eval_ns": 36952, + "instantiate_ns": 9734, + "render_ns": 643648, + "total_ns": 690399 + } + ] + }, + { + "pair_index": 28, + "first_window_ns": 5311129, + "hot_reload_ns": 694059, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 72474, + "instantiate_ns": 13430, + "render_ns": 643791, + "total_ns": 729836 + }, + { + "source_eval_ns": 39208, + "instantiate_ns": 9517, + "render_ns": 645265, + "total_ns": 694059 + }, + { + "source_eval_ns": 38361, + "instantiate_ns": 9823, + "render_ns": 657291, + "total_ns": 705545 + }, + { + "source_eval_ns": 32424, + "instantiate_ns": 8660, + "render_ns": 636145, + "total_ns": 677291 + }, + { + "source_eval_ns": 30847, + "instantiate_ns": 8016, + "render_ns": 631906, + "total_ns": 670833 + } + ] + }, + { + "pair_index": 29, + "first_window_ns": 5308099, + "hot_reload_ns": 687367, + "snapshot_sha256": "74e5df0f0554ea7728a678665a0b74d45d8d533bc916c5c6687569c39d1fdb75", + "script_renders": 270, + "reload_observations": [ + { + "source_eval_ns": 53167, + "instantiate_ns": 10851, + "render_ns": 648191, + "total_ns": 712301 + }, + { + "source_eval_ns": 38436, + "instantiate_ns": 9253, + "render_ns": 675499, + "total_ns": 723258 + }, + { + "source_eval_ns": 33562, + "instantiate_ns": 8287, + "render_ns": 645440, + "total_ns": 687367 + }, + { + "source_eval_ns": 32277, + "instantiate_ns": 7990, + "render_ns": 632607, + "total_ns": 672943 + }, + { + "source_eval_ns": 30271, + "instantiate_ns": 7820, + "render_ns": 644265, + "total_ns": 682419 + } + ] + } + ] + } +} diff --git a/benchmarks/results/gpui-shell-mixed-v1.md b/benchmarks/results/gpui-shell-mixed-v1.md new file mode 100644 index 00000000..a4a6f2bb --- /dev/null +++ b/benchmarks/results/gpui-shell-mixed-v1.md @@ -0,0 +1,19 @@ +# gpui-shell JIT acceptance + +Shell `c0b989691707d5c18d973cf9cf805bbcadde37b5`, rquickjs `034c9f04f80ef0464ee2589dbb202608ac090e4d`, target `x86_64-unknown-linux-gnu`, CPU affinity `0`. 30 paired fresh processes after 5 discarded warmups. + +| workload | steady-state speedup CI | P99 speed CI | native entries | fallback | status | +|---|---:|---:|---:|---:|---| +| realistic 443-node host-heavy panel | 0.99x..0.99x | 0.99x..1.00x | 0 | 0 | PASS | +| render-driven numeric layout checksum | 15.34x..18.33x | 10.73x..15.24x | 7028 | 0 | PASS | +| market compute, sort, aggregate, and visible list | 2.32x..2.34x | 2.20x..2.27x | 732467 | 0 | PASS | + +Diagnostics across automatic samples: + +- realistic 443-node host-heavy panel: installed=0, failures=420 (unsupported=0, tier1=420, resource=0, cancelled=0, panics=0, invalid=0, install=0), native exits=0, OSR entries=0, deopts=0 +- render-driven numeric layout checksum: installed=60, failures=210 (unsupported=0, tier1=210, resource=0, cancelled=0, panics=0, invalid=0, install=0), native exits=7028, OSR entries=27, deopts=0 +- market compute, sort, aggregate, and visible list: installed=90, failures=390 (unsupported=0, tier1=270, resource=0, cancelled=0, panics=0, invalid=120, install=0), native exits=732467, OSR entries=0, deopts=0 + +Lifecycle speed CIs: first window 0.99x..1.00x; hot reload 0.99x..1.00x. Snapshots and script-render counts match pairwise. + +Overall: **PASS**. diff --git a/docs/NEXT_SESSION_GOAL.md b/docs/NEXT_SESSION_GOAL.md index e6fd9e6e..01223a98 100644 --- a/docs/NEXT_SESSION_GOAL.md +++ b/docs/NEXT_SESSION_GOAL.md @@ -270,6 +270,34 @@ Fibonacci kernels are profitable, while broad strings/JSON/collections/ closures/async workers may still be interpreter-only, and the guarded Tier 1 array traversal is not yet a demonstrated speedup. +## Measured gpui-shell mixed-workload target + +The clean x86_64 Linux evidence in +`benchmarks/results/gpui-shell-mixed-v1.{json,md}` adds a product-shaped market +panel: compute 96 quote scores, aggregate and sort them, then build a 12-row +visible list through GPUI host builders. Across 30 interleaved fresh-process +pairs after five discarded warmups, automatic mode runs at 2.32x..2.34x the +interpreter's steady-state speed and 2.20x..2.27x its P99 speed. It records +732,467 native entries, zero fallback, zero deoptimization, and exact snapshot +and render-count parity. The host-heavy panel remains inside its 5% guard. + +This changes the next optimization order for gpui-shell work: + +1. Trace and eliminate, or correctly reject before compilation, the four + optimizing-tier invalid artifacts produced per mixed automatic process. + Add a focused comparator/object-property reproduction and require zero + invalid artifacts before treating this path as fully healthy. +2. Split the mixed workload into stable stage variants so compute, + array/object sorting, and visible-list host construction can be compared + independently without adding timers inside the JavaScript hot path. +3. Optimize the array/object stage only after the stage evidence identifies + it as material. Prefer stable shape/property specialization and hoisted + array guards; preserve exact sort comparator behavior and automatic + fallback. +4. Retain the existing product gates: mixed native coverage and semantic + parity, at least 2x for the suitable compute workload, and no more than 5% + regression for panel steady-state, P99, first-window, or hot reload. + After M2 (`docs/M2.md`), the core comparison/bitwise/`%`/unary/tail-call opcode set is native in both tiers. The next backlog items in priority order are: caching native entry handles on the C side so generic native-to-native diff --git a/integrations/gpui-component/README.md b/integrations/gpui-component/README.md index 0db5a53c..b663cdcb 100644 --- a/integrations/gpui-component/README.md +++ b/integrations/gpui-component/README.md @@ -48,20 +48,30 @@ script renders, and the focused parity test passed. Both diagnostic thresholds pass. Do not publish fixture, forced-tier, or single-pair results in place of the required confidence-bounded run. -The required frozen-binary run (five discarded warmup processes and 30 paired +The current frozen-binary run (five discarded warmup processes and 30 paired fresh processes per workload) is recorded in -`benchmarks/results/gpui-shell-jit-v1.{json,md}`. Every process is pinned to -one selected CPU (`GPUI_SHELL_JIT_CPU`, default `0`), then records 500 +`benchmarks/results/gpui-shell-mixed-v1.{json,md}`. Every process is pinned to +one selected CPU (`GPUI_SHELL_JIT_CPU`, default `0`), then records 200 identical renders with the true nearest-rank P99. Reload records the median of -five fresh module-generation observations and retains suspend, module -evaluation, instantiation, render, and deferred-resume phase timings in each -raw sample; no observation is discarded. +five fresh module-generation observations and retains module evaluation, +instantiation, render, and total timing in every raw sample; no observation is +discarded. -The current evidence passes every strict gate: the host-heavy panel's P99 CI -is -7.21%..+2.74%, first-window is -0.77%..+0.44%, and hot reload is --3.37%..+0.84%. The suitable numeric layout workload is 39.82x..40.19x with -16,835 native entries and zero fallback. Checksums and script-render counts -match in all 30 pairs. +The matrix separates three parts of the product workload: a host-heavy panel, +a pure numeric render kernel, and a mixed market panel that computes 96 quote +scores, aggregates and sorts them, then builds a 12-row visible list through +the real GPUI builder API. On the recorded x86_64 Linux host, the mixed panel +runs at 2.32x..2.34x the interpreter's steady-state speed and 2.20x..2.27x its +P99 speed. The numeric kernel runs at 15.34x..18.33x speed, while the +host-heavy panel runs at 0.99x the interpreter's speed and remains inside the +5% guard. First-window and hot-reload speeds are both 0.99x..1.00x. + +All 30 pairs retain identical checksums, snapshot SHA-256 values, and render +counts. The mixed workload records 732,467 native entries with zero fallback +and zero deoptimization. It also exposes 120 optimizing-tier invalid-artifact +compile failures (four per automatic process); these do not affect semantics +or the measured native path, but eliminating or correctly categorizing them is +the first follow-up target. The exact external write required is permission to modify these sibling files and refresh its `Cargo.lock`: diff --git a/integrations/gpui-component/rquickjs-jit.patch b/integrations/gpui-component/rquickjs-jit.patch index 7bf9cfdc..ac9e4aba 100644 --- a/integrations/gpui-component/rquickjs-jit.patch +++ b/integrations/gpui-component/rquickjs-jit.patch @@ -1,310 +1,547 @@ +diff --git a/Cargo.toml b/Cargo.toml +index b4f64291..bcf5cf07 100644 +--- a/Cargo.toml ++++ b/Cargo.toml +@@ -29,6 +29,7 @@ members = [ + "examples/markdown_table", + "crates/shell", + "crates/component-shell", ++ "crates/rquickjs-compat", + ] + resolver = "2" + +@@ -137,16 +138,23 @@ lsp-types = { opt-level = 3 } + gpui-pre-reqwest-client = { opt-level = 3 } + markdown = { opt-level = 3 } + xml5ever = { opt-level = 3 } +-# `rquickjs` is a facade that re-exports `rquickjs-core`, so naming it alone +-# optimises neither the interpreter nor the bindings. `rquickjs-sys` builds ++# `quickjs-jit` is a facade that re-exports `quickjs-jit-core`, so naming it alone ++# optimises neither the interpreter nor the bindings. `quickjs-jit-sys` builds + # QuickJS itself through `cc`, which reads this package's opt-level; without + # these two a debug build spends roughly three times as long in every script + # render. See `website/shell/hosting.md`. +-rquickjs = { opt-level = 3 } +-rquickjs-sys = { opt-level = 3 } +-rquickjs-core = { opt-level = 3 } ++quickjs-jit = { opt-level = 3 } ++quickjs-jit-runtime = { opt-level = 3 } ++quickjs-jit-sys = { opt-level = 3 } ++quickjs-jit-core = { opt-level = 3 } + cap-std = { opt-level = 3 } + ++[patch.crates-io] ++# LLRT's public modules still name their compatible binding dependency ++# `rquickjs`. Route those dependencies through a source-compatible facade so ++# the shell and LLRT share the exact same quickjs-jit types and VM. ++rquickjs = { path = "crates/rquickjs-compat" } ++ + [workspace.metadata.typos] + files.extend-exclude = ["**/fixtures/*"] + +diff --git a/crates/rquickjs-compat/Cargo.toml b/crates/rquickjs-compat/Cargo.toml +new file mode 100644 +index 00000000..c3c1eb41 +--- /dev/null ++++ b/crates/rquickjs-compat/Cargo.toml +@@ -0,0 +1,32 @@ ++[package] ++name = "rquickjs" ++version = "0.12.4" ++edition.workspace = true ++publish = false ++ ++[lib] ++path = "src/lib.rs" ++ ++[dependencies] ++upstream = { package = "quickjs-jit", version = "0.12.6", default-features = false } ++ ++[features] ++default = ["std"] ++std = ["upstream/std"] ++chrono = ["upstream/chrono"] ++either = ["upstream/either"] ++indexmap = ["upstream/indexmap"] ++phf = ["upstream/phf"] ++bindgen = ["upstream/bindgen"] ++parallel = ["upstream/parallel"] ++loader = ["upstream/loader"] ++dyn-load = ["upstream/dyn-load"] ++rust-alloc = ["upstream/rust-alloc"] ++macro = ["upstream/macro"] ++half = ["upstream/half"] ++bytes = ["upstream/bytes"] ++futures = ["upstream/futures"] ++classes = ["upstream/classes"] ++array-buffer = ["upstream/array-buffer"] ++allocator = ["upstream/allocator"] ++properties = ["upstream/properties"] +diff --git a/crates/rquickjs-compat/src/lib.rs b/crates/rquickjs-compat/src/lib.rs +new file mode 100644 +index 00000000..0261be28 +--- /dev/null ++++ b/crates/rquickjs-compat/src/lib.rs +@@ -0,0 +1,3 @@ ++//! Compatibility facade for dependencies that still name the upstream package. ++ ++pub use upstream::*; +diff --git a/crates/shell/Cargo.toml b/crates/shell/Cargo.toml +index 58c2ac1f..f6479c6a 100644 --- a/crates/shell/Cargo.toml +++ b/crates/shell/Cargo.toml -@@ -18,7 +18,7 @@ - path = "src/bin/gpui-shell.rs" - - [features] --default = ["quickjs"] -+default = ["quickjs", "quickjs-jit"] - # The scripting engine. See `src/engine/mod.rs` for the surface an engine has - # to provide; QuickJS is the only implementation today, and the feature exists +@@ -24,6 +24,7 @@ default = ["quickjs"] # so a second one can be added without the seam having to be invented first. -@@ -32,6 +32,7 @@ - "dep:reqwest", - "dep:tungstenite", - ] -+quickjs-jit = ["quickjs", "dep:rquickjs-jit", "rquickjs/jit-abi"] - - [dependencies] - gpui.workspace = true -@@ -40,6 +41,6 @@ + quickjs = [ + "dep:rquickjs", ++ "dep:rquickjs-jit", + "dep:llrt_buffer", + "dep:llrt_crypto", + "dep:llrt_path", +@@ -39,12 +40,12 @@ gpui_platform.workspace = true gpui-base = { workspace = true, features = ["inspector"] } gpui-fps.workspace = true + -rquickjs = { version = "0.12", features = [ -+rquickjs = { package = "quickjs-jit", version = "0.12.2", features = [ ++rquickjs = { package = "quickjs-jit", version = "0.12.6", features = [ "macro", "loader", - "classes", -@@ -45,6 +46,9 @@ - "classes", - "properties", +- "classes", +- "properties", ++ "jit-abi", ], optional = true } -+ -+[target.'cfg(not(target_family = "wasm"))'.dependencies] -+rquickjs-jit = { package = "quickjs-jit-runtime", version = "0.12.2", features = ["compiler"], optional = true } ++rquickjs-jit = { package = "quickjs-jit-runtime", version = "0.12.6", features = ["compiler"], optional = true } # LLRT is still pre-release. Keep every module on the same audited revision; # crates.io's 0.8.1-beta release uses rquickjs 0.11 and cannot share our VM. llrt_buffer = { git = "https://github.com/awslabs/llrt", rev = "7b95c82a9b15e7ddfb2778eca4b5a63111e74f51", optional = true } -@@ -71,6 +75,7 @@ - - [dev-dependencies] - gpui = { workspace = true, features = ["test-support"] } -+sha2 = "0.10" - - [target.'cfg(unix)'.dependencies] - libc = "0.2" +diff --git a/crates/shell/src/engine/quickjs/mod.rs b/crates/shell/src/engine/quickjs/mod.rs +index 07ad655f..3868aeaf 100644 --- a/crates/shell/src/engine/quickjs/mod.rs +++ b/crates/shell/src/engine/quickjs/mod.rs -@@ -33,6 +33,11 @@ +@@ -25,12 +25,13 @@ use anyhow::{Context as _, Result, anyhow}; + use gpui::{App, AppContext as _, ClickEvent, Entity, Global, Subscription, WeakEntity, Window}; + use rquickjs::{ + Array, Context as JsContext, Ctx, Error as JsError, Exception, FromJs, Function, Object, +- Persistent, Result as JsResult, Runtime as JsRuntime, Value, ++ Persistent, Result as JsResult, Value, + function::{Args as JsArgs, Func, Opt, This}, + loader::{BuiltinResolver, ImportAttributes, Loader, ModuleLoader, Resolver}, + module::Declared, + module::{Declarations, Exports, Module, ModuleDef}, }; ++use rquickjs_jit::{JitConfig, JitRuntime}; use smallvec::SmallVec; - -+#[cfg(all(feature = "quickjs-jit", not(target_family = "wasm")))] -+use rquickjs_jit::{Jit, JitConfig}; -+#[cfg(all(test, feature = "quickjs-jit", not(target_family = "wasm")))] -+use rquickjs_jit::JitMetrics; -+ + use crate::{ - entities::{EntityHandle, EntityStore}, - metrics::Metrics, -@@ -448,6 +453,124 @@ - (GpuiFpsModule, "gpui-fps", exports::GPUI_FPS), - ]; - -+enum RuntimeOwner { -+ // Keep the counterfactual's GPUI task scheduling identical to automatic -+ // mode. That leaves lifecycle timing to measure the JIT-specific work, -+ // rather than the one task that makes deferred attachment possible. -+ Interpreter { -+ runtime: JsRuntime, -+ lifecycle_scheduled: Cell, -+ }, -+ #[cfg(all(feature = "quickjs-jit", not(target_family = "wasm")))] -+ Automatic { -+ runtime: JsRuntime, -+ jit: RefCell>, -+ attach_scheduled: Cell, -+ }, -+} +@@ -240,6 +241,27 @@ mod retained_component_state_tests { + } + } + ++#[cfg(test)] ++mod jit_suspension_tests { ++ use super::*; + -+impl std::ops::Deref for RuntimeOwner { -+ type Target = JsRuntime; ++ #[test] ++ fn nested_suspension_preserves_the_outer_state() { ++ let runtime = ShellRuntime::new_isolated().unwrap(); + -+ fn deref(&self) -> &Self::Target { -+ match self { -+ Self::Interpreter { runtime, .. } => runtime, -+ #[cfg(all(feature = "quickjs-jit", not(target_family = "wasm")))] -+ Self::Automatic { runtime, .. } => runtime, -+ } ++ runtime ++ .with_jit_suspended(|| { ++ assert!(runtime.js_runtime.jit().is_suspended()); ++ runtime.with_jit_suspended(|| Ok(()))?; ++ assert!(runtime.js_runtime.jit().is_suspended()); ++ Ok(()) ++ }) ++ .unwrap(); ++ ++ assert!(!runtime.js_runtime.jit().is_suspended()); + } +} + -+impl RuntimeOwner { -+ fn interpreter() -> Result { -+ Ok(Self::Interpreter { -+ runtime: JsRuntime::new().map_err(js_setup_error)?, -+ lifecycle_scheduled: Cell::new(false), -+ }) -+ } + #[cfg(test)] + mod component_callback_value_tests { + use super::*; +@@ -830,6 +852,7 @@ pub struct ViewObject { + #[allow(dead_code)] // Its drop owns the resolver registration lifetime. + module_lease: Option, + application: Option>, ++ jit_warm: Rc>, + } + + impl std::fmt::Debug for ViewObject { +@@ -844,6 +867,7 @@ impl ViewObject { + value, + module_lease: None, + application: None, ++ jit_warm: Rc::new(Cell::new(false)), + } + } + +@@ -1342,7 +1366,38 @@ pub struct ShellRuntime { + next_application_generation: Cell, + /// Held so the context stays alive, and so the module loader can be scoped + /// to an application directory when one is loaded. +- js_runtime: JsRuntime, ++ js_runtime: JitRuntime, ++} + -+ fn automatic() -> Result { -+ #[cfg(all(feature = "quickjs-jit", not(target_family = "wasm")))] -+ { -+ return Ok(Self::Automatic { -+ runtime: JsRuntime::new().map_err(js_setup_error)?, -+ jit: RefCell::new(None), -+ attach_scheduled: Cell::new(false), -+ }); -+ } -+ Self::interpreter() -+ } ++struct JitSuspension<'a> { ++ jit: &'a rquickjs_jit::Jit, ++ active: bool, ++} + -+ fn poll_jit(&self) { -+ #[cfg(all(feature = "quickjs-jit", not(target_family = "wasm")))] -+ if let Self::Automatic { jit, .. } = self { -+ if let Some(jit) = jit.borrow().as_ref() { -+ jit.poll(); -+ } ++impl JitSuspension<'_> { ++ fn begin(jit: &rquickjs_jit::Jit) -> Result> { ++ let active = !jit.is_suspended(); ++ if active { ++ jit.suspend()?; + } ++ Ok(JitSuspension { jit, active }) + } + -+ fn suspend_jit(&self) { -+ if let Self::Interpreter { lifecycle_scheduled, .. } = self { -+ lifecycle_scheduled.set(false); -+ } -+ #[cfg(all(feature = "quickjs-jit", not(target_family = "wasm")))] -+ if let Self::Automatic { jit, attach_scheduled, .. } = self { -+ if let Some(jit) = jit.borrow().as_ref() { -+ if let Err(error) = jit.suspend() { -+ tracing::warn!(%error, "could not suspend QuickJS JIT for reload"); -+ } -+ } -+ attach_scheduled.set(false); ++ fn finish(mut self) -> Result<()> { ++ if self.active { ++ self.jit.resume()?; + } ++ self.active = false; ++ Ok(()) + } ++} + -+ fn schedule_attach(runtime: &Rc, cx: &mut App) { -+ if let Self::Interpreter { lifecycle_scheduled, .. } = &runtime.js_runtime { -+ if !lifecycle_scheduled.replace(true) { -+ // Production does one deferred lifecycle task after a render. -+ // The interpreter comparator performs the same scheduling, so -+ // first-window and reload timings isolate JIT-specific cost. -+ cx.spawn(async move |_| {}).detach(); -+ } -+ return; -+ } -+ #[cfg(all(feature = "quickjs-jit", not(target_family = "wasm")))] -+ if let Self::Automatic { attach_scheduled, .. } = &runtime.js_runtime { -+ if attach_scheduled.replace(true) { -+ return; -+ } -+ let runtime = Rc::downgrade(runtime); -+ cx.spawn(async move |cx| { -+ _ = cx.update(|_| { -+ let Some(runtime) = runtime.upgrade() else { return }; -+ let Self::Automatic { runtime: js, jit, .. } = &runtime.js_runtime else { return }; -+ let mut guard = jit.borrow_mut(); -+ if let Some(guard) = guard.as_ref() { -+ if let Err(error) = guard.resume() { -+ tracing::warn!(%error, "could not resume QuickJS JIT after reload"); -+ } -+ } else { -+ let config = JitConfig::builder().build().expect("valid gpui-shell JIT configuration"); -+ match Jit::attach(js, config) { -+ Ok(attached) => *guard = Some(attached), -+ Err(error) => tracing::warn!(%error, "QuickJS JIT unavailable; continuing interpreted"), -+ } -+ } -+ }); -+ }).detach(); ++impl Drop for JitSuspension<'_> { ++ fn drop(&mut self) { ++ if self.active { ++ let _ = self.jit.resume(); + } + } -+ -+ #[cfg(all(test, feature = "quickjs-jit", not(target_family = "wasm")))] -+ fn jit_metrics(&self) -> Option { -+ match self { -+ Self::Interpreter { .. } => None, -+ Self::Automatic { jit, .. } => jit.borrow().as_ref().map(Jit::metrics), + } + + impl Drop for ShellRuntime { +@@ -1376,6 +1431,17 @@ struct RuntimeGlobal(Weak); + impl Global for RuntimeGlobal {} + + impl ShellRuntime { ++ fn with_jit_suspended(&self, operation: impl FnOnce() -> Result) -> Result { ++ if !self.js_runtime.has_jit() { ++ return operation(); + } ++ let jit = self.js_runtime.jit(); ++ let suspension = JitSuspension::begin(jit)?; ++ let result = operation(); ++ suspension.finish()?; ++ result + } -+} + - pub struct ShellRuntime { - /// Declared first because fields drop in declaration order and every - /// `Persistent` handle must be released while the context still exists. -@@ -523,7 +578,7 @@ - next_application_generation: Cell, - /// Held so the context stays alive, and so the module loader can be scoped - /// to an application directory when one is loaded. -- js_runtime: JsRuntime, -+ js_runtime: RuntimeOwner, - } - - impl Drop for ShellRuntime { -@@ -575,9 +630,22 @@ - /// call frame rather than in runtime-global state. Use this only when a host - /// deliberately owns multiple isolated runtimes. - pub fn new_isolated() -> Result> { -+ Self::new_isolated_with_mode(false) + /// Loads an application's JavaScript entry without exposing engine values. + /// + /// Resolution, declaration refresh, module generations, capabilities and +@@ -1454,6 +1520,19 @@ impl ShellRuntime { + Self::new_isolated_with_components_and_dependency_store( + FrozenComponentRegistry::default(), + GitDependencyStore::for_user()?, ++ shell_jit_config()?, ++ ) + } + + #[cfg(test)] + pub(crate) fn new_isolated_interpreter() -> Result> { -+ Self::new_isolated_with_mode(true) ++ let js_runtime = JitRuntime::builder() ++ .build_interpreter() ++ .map_err(|error| anyhow!("failed to start the JavaScript interpreter: {error}"))?; ++ Self::new_isolated_with_components_dependency_store_and_runtime( ++ FrozenComponentRegistry::default(), ++ GitDependencyStore::for_user()?, ++ js_runtime, + ) + } + +@@ -1461,6 +1540,7 @@ impl ShellRuntime { + Self::new_isolated_with_components_and_dependency_store( + components, + GitDependencyStore::for_user()?, ++ shell_jit_config()?, + ) + } + +@@ -1471,16 +1551,37 @@ impl ShellRuntime { + Self::new_isolated_with_components_and_dependency_store( + FrozenComponentRegistry::default(), + dependency_store, ++ shell_jit_config()?, + ) + } + + fn new_isolated_with_components_and_dependency_store( + components: FrozenComponentRegistry, + dependency_store: GitDependencyStore, ++ jit_config: JitConfig, + ) -> Result> { ++ let js_runtime = JitRuntime::builder() ++ .config(jit_config) ++ .build() ++ .map_err(|error| anyhow!("failed to start the JavaScript JIT runtime: {error}"))?; ++ Self::new_isolated_with_components_dependency_store_and_runtime( ++ components, ++ dependency_store, ++ js_runtime, ++ ) + } + -+ fn new_isolated_with_mode(force_interpreter: bool) -> Result> { ++ fn new_isolated_with_components_dependency_store_and_runtime( ++ components: FrozenComponentRegistry, ++ dependency_store: GitDependencyStore, ++ js_runtime: JitRuntime, ++ ) -> Result> { ++ let jit_enabled = js_runtime.has_jit(); ++ if jit_enabled { ++ js_runtime.jit().suspend()?; ++ } let entities = EntityStore::try_new() .ok_or_else(|| anyhow!("gpui-shell entity store id space is exhausted"))?; - let js_runtime = JsRuntime::new().map_err(js_setup_error)?; -+ let js_runtime = if force_interpreter { -+ RuntimeOwner::interpreter()? -+ } else { -+ RuntimeOwner::automatic()? -+ }; let context = JsContext::full(&js_runtime).map_err(js_setup_error)?; - + let app_modules = AppModules::default(); -@@ -638,6 +706,15 @@ +@@ -1551,7 +1652,11 @@ impl ShellRuntime { + js_runtime, + }); + +- runtime.install_globals()?; ++ let installed = runtime.install_globals(); ++ if jit_enabled { ++ runtime.js_runtime.jit().resume()?; ++ } ++ installed?; Ok(runtime) } - -+ #[cfg(all(test, feature = "quickjs-jit", not(target_family = "wasm")))] -+ pub(crate) fn jit_metrics(&self) -> Option { -+ self.js_runtime.jit_metrics() -+ } -+ -+ fn poll_jit(&self) { -+ self.js_runtime.poll_jit(); -+ } -+ - pub(crate) fn set_global(self: &Rc, cx: &mut App) { - cx.set_global(RuntimeGlobal(Rc::downgrade(self))); - } -@@ -844,5 +946,6 @@ - /// deliberately owns multiple isolated runtimes. - pub(crate) fn load_app(self: &Rc, dir: &Path, entry: &str) -> Result { -+ self.js_runtime.suspend_jit(); - let root = crate::runtime::resolve_app_root(dir, entry)?; - if let Err(error) = crate::write_type_declarations(&root) { - tracing::debug!( -@@ -887,5 +990,23 @@ - #[cfg(test)] - pub(crate) fn load_source(self: &Rc, name: &str, source: &str) -> Result { -+ self.js_runtime.suspend_jit(); - self.load_source_with_lease(name, source, None, None) + +@@ -1855,6 +1960,13 @@ impl ShellRuntime { + self.arena.borrow_mut().reset(); } -+ -+ /// Benchmark-only split of the normal reload boundary. The two calls must -+ /// remain adjacent: together they are exactly [`Self::load_source`], while -+ /// exposing suspension separately from module declaration/evaluation. + ++ /// Returns JIT diagnostic counters for the real-process acceptance ++ /// benchmark. + #[cfg(test)] -+ pub(crate) fn suspend_jit_for_benchmark(&self) { -+ self.js_runtime.suspend_jit(); ++ pub(crate) fn jit_metrics_for_benchmark(&self) -> rquickjs_jit::JitMetrics { ++ self.js_runtime.metrics() + } + -+ #[cfg(test)] -+ pub(crate) fn load_source_after_suspending_for_benchmark( -+ self: &Rc, -+ name: &str, -+ source: &str, -+ ) -> Result { -+ self.load_source_with_lease(name, source, None, None) -+ } + /// A reading of the two counters, taken now. + /// + /// The host gets the reading rather than the instrument: `Metrics` is the +@@ -2044,21 +2156,24 @@ impl ShellRuntime { + module_lease: Option, + application: Option>, + ) -> Result { +- self.with_js(|ctx| { +- let (module, promise) = rquickjs::Module::declare(ctx.clone(), name, source)?.eval()?; +- promise.finish::<()>()?; ++ self.with_jit_suspended(|| { ++ self.with_js(|ctx| { ++ let (module, promise) = ++ rquickjs::Module::declare(ctx.clone(), name, source)?.eval()?; ++ promise.finish::<()>()?; + +- let default: Value = module.get("default")?; +- let Some(class) = default.as_object() else { +- return Err(Exception::throw_message( +- ctx, +- "main.js must `export default` a class that extends View", +- )); +- }; +- Ok(ViewType { +- value: Persistent::save(ctx, class.clone()), +- module_lease, +- application, ++ let default: Value = module.get("default")?; ++ let Some(class) = default.as_object() else { ++ return Err(Exception::throw_message( ++ ctx, ++ "main.js must `export default` a class that extends View", ++ )); ++ }; ++ Ok(ViewType { ++ value: Persistent::save(ctx, class.clone()), ++ module_lease, ++ application, ++ }) + }) + }) + } +@@ -2781,14 +2896,17 @@ impl ShellRuntime { + } -@@ -1711,7 +1815,12 @@ - object.application_generation(), - ); - (self.call_render(object, generation), policy) + fn construct(&self, view_type: &ViewType) -> Result { +- self.with_js(|ctx| { +- let class = view_type.value.clone().restore(ctx)?; +- let construct: Function = ctx.globals().get("__construct")?; +- let instance: Object = construct.call((class,))?; +- Ok(ViewObject { +- value: Persistent::save(ctx, instance), +- module_lease: view_type.module_lease.clone(), +- application: view_type.application.clone(), ++ self.with_jit_suspended(|| { ++ self.with_js(|ctx| { ++ let class = view_type.value.clone().restore(ctx)?; ++ let construct: Function = ctx.globals().get("__construct")?; ++ let instance: Object = construct.call((class,))?; ++ Ok(ViewObject { ++ value: Persistent::save(ctx, instance), ++ module_lease: view_type.module_lease.clone(), ++ application: view_type.application.clone(), ++ jit_warm: Rc::new(Cell::new(false)), ++ }) + }) + }) + } +@@ -2842,14 +2960,16 @@ impl ShellRuntime { + initial_props: Option>>, + ) -> Result<()> { + self.initializing_views.borrow_mut().push(object.clone()); +- let initialized = self.with_js(|ctx| { +- let instance = object.value.clone().restore(ctx)?; +- let initialize: Function = ctx.globals().get("__initialize")?; +- let props = match initial_props { +- Some(props) => props.restore(ctx)?, +- None => Value::new_undefined(ctx.clone()), +- }; +- initialize.call::<_, ()>((instance, props)) ++ let initialized = self.with_jit_suspended(|| { ++ self.with_js(|ctx| { ++ let instance = object.value.clone().restore(ctx)?; ++ let initialize: Function = ctx.globals().get("__initialize")?; ++ let props = match initial_props { ++ Some(props) => props.restore(ctx)?, ++ None => Value::new_undefined(ctx.clone()), ++ }; ++ initialize.call::<_, ()>((instance, props)) ++ }) }); -+ // One bounded maintenance pass per outer render, after QuickJS has -+ // released its context lock. Low-level host callbacks may enter -+ // `with_js` hundreds of times while describing one panel. -+ self.poll_jit(); -+ RuntimeOwner::schedule_attach(self, cx); - + let initializing = self.initializing_views.borrow_mut().pop(); + debug_assert!(initializing.is_some()); +@@ -2900,21 +3020,32 @@ impl ShellRuntime { + self.arena.borrow_mut().reset(); + let callbacks = self.callbacks.borrow_mut().begin(); + +- let (root, policy) = self.metrics.time_script_render(|| { +- let (_guard, generation) = scope::enter_with_application( +- self, +- window, +- cx, +- ScopePhase::Render, +- view.clone(), +- policy.clone(), +- object.application_generation(), +- ); +- (self.call_render(object, generation), policy) +- }); ++ let first_render = !object.jit_warm.get(); ++ let render = || { ++ self.metrics.time_script_render(|| { ++ let (_guard, generation) = scope::enter_with_application( ++ self, ++ window, ++ cx, ++ ScopePhase::Render, ++ view.clone(), ++ policy.clone(), ++ object.application_generation(), ++ ); ++ (self.call_render(object, generation), policy) ++ }) ++ }; ++ let (root, policy) = if first_render { ++ self.with_jit_suspended(|| Ok(render()))? ++ } else { ++ render() ++ }; + let root = match root { - Ok(root) => root, +- Ok(root) => root, ++ Ok(root) => { ++ object.jit_warm.set(true); ++ root ++ } + Err(error) => { + self.callbacks.borrow_mut().abort(); + self.arena.borrow_mut().reset(); +@@ -4832,6 +4963,21 @@ impl ShellRuntime { + } + } + ++fn shell_jit_config() -> Result { ++ let builder = JitConfig::builder(); ++ ++ // Debug builds exercise many short-lived runtimes concurrently. Keep them on ++ // the interpreter tier: native compilation currently crashes inside the JIT ++ // backend on Linux and Windows under that workload. Release builds retain the ++ // production thresholds and continue to tier hot functions up to native code. ++ #[cfg(debug_assertions)] ++ let builder = builder.call_threshold(u32::MAX).loop_threshold(u32::MAX); ++ ++ builder ++ .build() ++ .map_err(|error| anyhow!("invalid JavaScript JIT configuration: {error}")) ++} ++ + /// Resolves and loads an application's own modules, and nothing else. + /// + /// `FileResolver` from rquickjs is not usable here: it tests candidate paths +@@ -11060,6 +11206,14 @@ export default class BrokenChild extends View { + + #[cfg(test)] + mod reserved_element_method_tests { ++ #[cfg(debug_assertions)] ++ #[test] ++ fn debug_runtimes_stay_on_the_interpreter_tier() { ++ let config = super::shell_jit_config().expect("JIT configuration"); ++ assert_eq!(config.call_threshold(), u32::MAX); ++ assert_eq!(config.loop_threshold(), u32::MAX); ++ } ++ + /// `typings.rs` withholds these from a registered component that does not + /// declare them. If the engine started accepting a fourth, the declarations + /// would keep offering it on every component and the call would throw. +diff --git a/crates/shell/src/tests/benchmark.rs b/crates/shell/src/tests/benchmark.rs +index 424aa68f..19b10195 100644 --- a/crates/shell/src/tests/benchmark.rs +++ b/crates/shell/src/tests/benchmark.rs -@@ -26,12 +26,20 @@ - +@@ -19,19 +19,27 @@ + //! Run with output: + //! + //! ```text +-//! cargo test -p gpui-shell --release --test benchmark -- --nocapture ++//! cargo test -p gpui-shell --release tests::benchmark -- --nocapture + //! ``` + + use std::{ops::Deref, time::Instant}; + use crate::{RenderSnapshot, ScriptView, ShellRuntime, materialize::materialize}; use gpui::{AppContext as _, Entity, IntoElement as _, TestAppContext, VisualTestContext}; -+#[cfg(all(feature = "quickjs-jit", not(target_family = "wasm")))] ++#[cfg(not(debug_assertions))] +use sha2::{Digest as _, Sha256}; - + /// Rows and columns chosen to land near the doc's "typical panel" figure: /// 40 rows x 5 cells plus wrappers is ~250 nodes, each carrying 8-12 ops. const ROWS: usize = 40; const COLUMNS: usize = 5; --const ITERATIONS: usize = 50; -+// 50 renders makes nearest-rank P99 a single maximum, so one scheduler -+// interruption dominates an otherwise stable fresh-process sample. More -+// identical renders make it a tail percentile without changing the JS -+// workload or any per-render semantics. -+const ITERATIONS: usize = 500; + const ITERATIONS: usize = 50; ++#[cfg(not(debug_assertions))] ++const ACCEPTANCE_ITERATIONS: usize = 200; ++#[cfg(not(debug_assertions))] +const JIT_WARMUP_RENDERS: usize = 64; ++#[cfg(not(debug_assertions))] +const RELOAD_OBSERVATIONS: usize = 5; /// How many batches of [`ITERATIONS`] a timing takes before believing the /// fastest one. const ROUNDS: usize = 7; -@@ -90,6 +94,57 @@ +@@ -90,8 +98,110 @@ export default class Grid extends View { } "#; - + ++#[cfg(not(debug_assertions))] +const COMPUTE_TEMPLATE: &str = r#" -+import { View, div } from "gpui"; ++import { View, div } from "gpui-kit"; + +function layoutKernel(batches, seed) { + let checksum = seed; @@ -323,14 +560,61 @@ + +export default class NumericLayout extends View { + render(cx) { -+ return div().child(`layout:${layoutKernel(2000, 0)}`); ++ return div().child(`layout:${layoutKernel(100, 0)}`); ++ } ++} ++"#; ++ ++#[cfg(not(debug_assertions))] ++const MIXED_MARKET_TEMPLATE: &str = r#" ++import { View, div } from "gpui-kit"; ++ ++function quoteScore(seed, index) { ++ let previous = seed; ++ let current = seed + index + 1; ++ let aggregate = 0; ++ for (let sample = 0; sample < 32; sample += 1) { ++ const next = previous + current; ++ previous = current; ++ current = next; ++ aggregate += current & 2047; ++ } ++ return aggregate; ++} ++ ++function compareQuotes(left, right) { ++ return right.score - left.score; ++} ++ ++export default class MarketPanel extends View { ++ render(cx) { ++ const quotes = []; ++ let total = 0; ++ for (let index = 0; index < 96; index += 1) { ++ const score = quoteScore(17, index); ++ total += score; ++ quotes.push({ index, score }); ++ } ++ quotes.sort(compareQuotes); ++ ++ const visible = []; ++ for (let rank = 0; rank < 12; rank += 1) { ++ const quote = quotes[rank]; ++ visible.push( ++ div() ++ .h_flex() ++ .justify_between() ++ .child(`SYM${quote.index}`) ++ .child(`${quote.score}`), ++ ); ++ } ++ return div().v_flex().gap(2).child(`total:${total}`).children(visible); + } +} +"#; + const _: () = assert!(ROWS > 0 && COLUMNS > 0); -+ +#[test] +fn p99_excludes_one_outlier_from_two_hundred_observations() { + let mut samples = vec![1_u64; 199]; @@ -351,30 +635,238 @@ +} + +fn median_ns(mut samples: Vec) -> u64 { -+ assert!(samples.len() % 2 == 1, "reload observations must have an odd count"); ++ assert!( ++ samples.len() % 2 == 1, ++ "reload observations must have an odd count" ++ ); + let middle = samples.len() / 2; + *samples.select_nth_unstable(middle).1 +} + fn source(rows: usize, columns: usize) -> String { -@@ -325,14 +353,41 @@ - VisualTestContext, - crate::engine::ViewObject, - ) { -+ grid_with_mode(cx, rows, columns, false) + TEMPLATE + .replace("__ROWS__", &rows.to_string()) +@@ -135,6 +245,70 @@ fn describing_a_panel_stays_inside_the_frame_budget(cx: &mut TestAppContext) { + per_build.as_nanos() as usize / ops.max(1), + ); + ++ let automatic_tree = context ++ .update(|window, cx| { ++ runtime ++ .build_snapshot(&object, None, crate::policy::default(), window, cx) ++ .expect("automatic parity render") ++ }) ++ .debug_tree(); ++ let automatic_renders = runtime.read_metrics().script_renders(); ++ let (interpreter, mut interpreter_context, interpreter_object) = ++ runtime_with_source(cx, &source(ROWS, COLUMNS), true); ++ let mut interpreted_tree = String::new(); ++ for _ in 0..automatic_renders { ++ interpreted_tree = interpreter_context ++ .update(|window, cx| { ++ interpreter ++ .build_snapshot( ++ &interpreter_object, ++ None, ++ crate::policy::default(), ++ window, ++ cx, ++ ) ++ .expect("interpreter parity render") ++ }) ++ .debug_tree(); ++ } ++ assert_eq!(automatic_tree, interpreted_tree); ++ assert_eq!( ++ automatic_renders, ++ interpreter.read_metrics().script_renders() ++ ); ++ ++ let jit = runtime.jit_metrics_for_benchmark(); ++ println!( ++ "[A/JIT] enabled={} queued={} failures={} unsupported={} tier1_rejections={} \ ++ resource_limits={} cancelled={} panics={} invalid_artifacts={} install_failures={} \ ++ installed={} native_entries={} pending_jobs={}", ++ jit.native_enabled(), ++ jit.queued, ++ jit.compile_failures, ++ jit.unsupported_opcode_failures, ++ jit.tier1_rejections, ++ jit.resource_limit_failures, ++ jit.cancelled_compilations, ++ jit.compiler_panics, ++ jit.invalid_artifacts, ++ jit.install_failures, ++ jit.installed, ++ jit.native_entries, ++ jit.pending_worker_jobs, ++ ); ++ let categorized_failures = jit ++ .unsupported_opcode_failures ++ .saturating_add(jit.tier1_rejections) ++ .saturating_add(jit.resource_limit_failures) ++ .saturating_add(jit.cancelled_compilations) ++ .saturating_add(jit.compiler_panics) ++ .saturating_add(jit.invalid_artifacts) ++ .saturating_add(jit.install_failures); ++ assert!( ++ jit.compile_failures == 0 || categorized_failures > 0, ++ "aggregate JIT failures had no diagnostic category: {jit:?}" ++ ); ++ + // A smoke bound, not the real gate: the doc's 1.5 ms budget is for a + // release build, and this assertion has to hold in debug too. + assert!( +@@ -143,6 +317,134 @@ fn describing_a_panel_stays_inside_the_frame_budget(cx: &mut TestAppContext) { + ); + } + ++#[gpui::test] ++#[cfg(not(debug_assertions))] ++fn numeric_layout_installs_and_enters_native_code(cx: &mut TestAppContext) { ++ let (runtime, mut context, object) = runtime_with_source(cx, COMPUTE_TEMPLATE, false); ++ let mut tree = String::new(); ++ let mut automatic_renders = 0; ++ ++ for _ in 0..1_000 { ++ let snapshot = context.update(|window, cx| { ++ runtime ++ .build_snapshot(&object, None, crate::policy::default(), window, cx) ++ .expect("numeric render") ++ }); ++ tree = snapshot.debug_tree(); ++ automatic_renders += 1; ++ if runtime.jit_metrics_for_benchmark().native_entries > 0 { ++ break; ++ } ++ } ++ ++ let (interpreter, mut interpreter_context, interpreter_object) = ++ runtime_with_source(cx, COMPUTE_TEMPLATE, true); ++ let mut interpreted_tree = String::new(); ++ for _ in 0..automatic_renders { ++ interpreted_tree = interpreter_context ++ .update(|window, cx| { ++ interpreter ++ .build_snapshot( ++ &interpreter_object, ++ None, ++ crate::policy::default(), ++ window, ++ cx, ++ ) ++ .expect("interpreter numeric render") ++ }) ++ .debug_tree(); ++ } ++ ++ let jit = runtime.jit_metrics_for_benchmark(); ++ println!("\n[N/JIT] {jit:#?}"); ++ assert_eq!(tree, interpreted_tree); ++ assert_eq!( ++ runtime.read_metrics().script_renders(), ++ interpreter.read_metrics().script_renders() ++ ); ++ assert!(tree.contains("layout:165580141"), "{tree}"); ++ assert!( ++ jit.installed > 0, ++ "numeric layout installed no artifact: {jit:?}" ++ ); ++ assert!( ++ jit.native_entries > 0, ++ "numeric layout never entered native code: {jit:?}" ++ ); +} + -+fn grid_with_mode( -+ cx: &mut TestAppContext, -+ rows: usize, -+ columns: usize, -+ interpreter: bool, -+) -> ( -+ std::rc::Rc, -+ VisualTestContext, -+ crate::engine::ViewObject, ++#[gpui::test] ++fn mixed_market_panel_matches_interpreter_and_enters_native_code(cx: &mut TestAppContext) { ++ let (interpreter, mut interpreter_context, interpreter_object) = ++ runtime_with_source(cx, MIXED_MARKET_TEMPLATE, true); ++ let interpreter_tree = interpreter_context.update(|window, cx| { ++ interpreter ++ .build_snapshot( ++ &interpreter_object, ++ None, ++ crate::policy::default(), ++ window, ++ cx, ++ ) ++ .expect("interpreter mixed render") ++ .debug_tree() ++ }); ++ ++ let (automatic, mut automatic_context, automatic_object) = ++ runtime_with_source(cx, MIXED_MARKET_TEMPLATE, false); ++ let mut automatic_tree = String::new(); ++ for _ in 0..JIT_WARMUP_RENDERS { ++ automatic_tree = automatic_context.update(|window, cx| { ++ automatic ++ .build_snapshot( ++ &automatic_object, ++ None, ++ crate::policy::default(), ++ window, ++ cx, ++ ) ++ .expect("JIT mixed render") ++ .debug_tree() ++ }); ++ cx.run_until_parked(); ++ } ++ ++ assert_eq!(automatic_tree, interpreter_tree); ++ let metrics = automatic.jit_metrics_for_benchmark(); ++ assert!(metrics.native_entries > 0, "{metrics:?}"); ++ assert_eq!(metrics.native_fallbacks, 0, "{metrics:?}"); ++ assert_eq!(metrics.deopts, 0, "{metrics:?}"); ++} ++ ++#[gpui::test] ++#[cfg(not(debug_assertions))] ++fn first_render_defers_jit_profiling_until_the_view_is_warm(cx: &mut TestAppContext) { ++ let (runtime, mut context, object) = runtime_with_source(cx, COMPUTE_TEMPLATE, false); ++ ++ context.update(|window, cx| { ++ runtime ++ .build_snapshot(&object, None, crate::policy::default(), window, cx) ++ .expect("first numeric render") ++ }); ++ let first = runtime.jit_metrics_for_benchmark(); ++ assert_eq!(first.snapshot_requests, 0, "{first:?}"); ++ ++ for _ in 0..1_000 { ++ context.update(|window, cx| { ++ runtime ++ .build_snapshot(&object, None, crate::policy::default(), window, cx) ++ .expect("warm numeric render") ++ }); ++ if runtime.jit_metrics_for_benchmark().native_entries > 0 { ++ break; ++ } ++ } ++ let warm = runtime.jit_metrics_for_benchmark(); ++ assert!(warm.snapshot_requests > 0, "{warm:?}"); ++ assert!(warm.native_entries > 0, "{warm:?}"); ++} ++ + #[gpui::test] + fn materializing_a_snapshot_stays_inside_the_frame_budget(cx: &mut TestAppContext) { + let (runtime, mut context, object) = grid(cx, ROWS, COLUMNS); +@@ -208,7 +510,7 @@ fn repainting_a_clean_view_never_enters_the_vm(cx: &mut TestAppContext) { + /// ignored by default because the largest size costs seconds in a debug build: + /// + /// ```text +-/// cargo test -p gpui-shell --release --test benchmark -- --ignored --nocapture ++/// cargo test -p gpui-shell --release tests::benchmark -- --ignored --nocapture + /// ``` + /// + /// Two runs out of thirteen have seen the largest size report one script render +@@ -324,15 +626,29 @@ fn grid( + std::rc::Rc, + VisualTestContext, + crate::engine::ViewObject, +) { -+ runtime_with_source(cx, &source(rows, columns), interpreter) ++ runtime_with_source(cx, &source(rows, columns), false) +} + +fn runtime_with_source( @@ -385,9 +877,9 @@ + std::rc::Rc, + VisualTestContext, + crate::engine::ViewObject, -+) { + ) { cx.update(|cx| crate::init(cx)); - + - let runtime = ShellRuntime::new_isolated().expect("runtime"); + let runtime = if interpreter { + ShellRuntime::new_isolated_interpreter().expect("interpreter runtime") @@ -395,91 +887,24 @@ + ShellRuntime::new_isolated().expect("automatic JIT runtime") + }; cx.update(|cx| runtime.set_global(cx)); - + - let view_type = runtime - .load_source("grid", &source(rows, columns)) - .expect("load"); + let view_type = runtime.load_source("benchmark-view", source).expect("load"); - + let window = cx.add_window(|_, _| Empty); let mut context = VisualTestContext::from_window(*window.deref(), cx); -@@ -343,6 +398,244 @@ +@@ -343,6 +659,148 @@ fn grid( (runtime, context, object) } - -+#[gpui::test] -+#[cfg(all(feature = "quickjs-jit", not(target_family = "wasm")))] -+fn jit_does_not_change_snapshot_or_render_count(cx: &mut TestAppContext) { -+ let (interpreter, mut interpreter_context, interpreter_object) = -+ grid_with_mode(cx, ROWS, COLUMNS, true); -+ let interpreted = interpreter_context.update(|window, cx| { -+ interpreter -+ .build_snapshot( -+ &interpreter_object, -+ None, -+ crate::policy::default(), -+ window, -+ cx, -+ ) -+ .expect("interpreter render") -+ }); -+ let interpreter_renders = interpreter.read_metrics().script_renders(); -+ -+ let (automatic, mut automatic_context, automatic_object) = -+ grid_with_mode(cx, ROWS, COLUMNS, false); -+ let jitted = automatic_context.update(|window, cx| { -+ automatic -+ .build_snapshot( -+ &automatic_object, -+ None, -+ crate::policy::default(), -+ window, -+ cx, -+ ) -+ .expect("JIT render") -+ }); -+ assert_eq!(jitted.debug_tree(), interpreted.debug_tree()); -+ assert_eq!( -+ automatic.read_metrics().script_renders(), -+ interpreter_renders -+ ); -+ -+ let (interpreter, mut interpreter_context, interpreter_object) = -+ runtime_with_source(cx, COMPUTE_TEMPLATE, true); -+ let interpreted = interpreter_context.update(|window, cx| { -+ interpreter -+ .build_snapshot( -+ &interpreter_object, -+ None, -+ crate::policy::default(), -+ window, -+ cx, -+ ) -+ .expect("interpreter compute render") -+ }); -+ let (automatic, mut automatic_context, automatic_object) = -+ runtime_with_source(cx, COMPUTE_TEMPLATE, false); -+ let jitted = automatic_context.update(|window, cx| { -+ automatic -+ .build_snapshot( -+ &automatic_object, -+ None, -+ crate::policy::default(), -+ window, -+ cx, -+ ) -+ .expect("JIT compute render") -+ }); -+ assert_eq!(jitted.debug_tree(), interpreted.debug_tree()); -+ assert!(jitted.debug_tree().contains("layout:165580141")); -+} -+ -+/// Emits one real-process sample. `scripts/bench-gpui-shell.sh` launches this -+/// exact test in interleaved interpreter/automatic process pairs and aggregates -+/// the JSON objects; this test never claims several in-process timings are -+/// independent samples. + ++/// Emits one independent process sample for the Issue #3 acceptance runner. ++/// The runner launches this test in interleaved interpreter/automatic pairs; ++/// repeated timings inside this process are observations, not independent ++/// benchmark samples. +#[gpui::test] -+#[cfg(all(feature = "quickjs-jit", not(target_family = "wasm")))] ++#[cfg(not(debug_assertions))] +fn emit_one_jit_acceptance_sample(cx: &mut TestAppContext) { + let Ok(path) = std::env::var("GPUI_SHELL_JIT_SAMPLE") else { + return; @@ -497,7 +922,8 @@ + let benchmark_source = match workload.as_str() { + "panel" => source(ROWS, COLUMNS), + "compute" => COMPUTE_TEMPLATE.to_owned(), -+ _ => panic!("GPUI_SHELL_JIT_WORKLOAD must be panel or compute"), ++ "mixed" => MIXED_MARKET_TEMPLATE.to_owned(), ++ _ => panic!("GPUI_SHELL_JIT_WORKLOAD must be panel, compute, or mixed"), + }; + + let first_started = Instant::now(); @@ -509,36 +935,20 @@ + }); + let first_window_ns = first_started.elapsed().as_nanos() as u64; + let expected_tree = first.debug_tree(); -+ // The production attachment is intentionally scheduled for the next GPUI -+ // tick so first-window latency excludes deferred maintenance. + cx.run_until_parked(); + -+ // Cross both production hotness thresholds and leave enough polls for all -+ // bounded profitability trials before the steady-state clock starts. + for _ in 0..JIT_WARMUP_RENDERS { -+ context.update(|window, cx| { ++ let snapshot = context.update(|window, cx| { + runtime + .build_snapshot(&object, None, crate::policy::default(), window, cx) -+ .expect("warmup render"); ++ .expect("warmup render") + }); ++ assert_eq!(snapshot.debug_tree(), expected_tree); + } -+ let mut metric_windows = Vec::new(); -+ let capture_metrics = |runtime: &ShellRuntime| { -+ let metrics = runtime.jit_metrics(); -+ serde_json::json!({ -+ "installed": metrics.as_ref().map_or(0, |m| m.installed), -+ "compile_failures": metrics.as_ref().map_or(0, |m| m.compile_failures), -+ "native_entries": metrics.as_ref().map_or(0, |m| m.native_entries), -+ "tier2_entries": metrics.as_ref().map_or(0, |m| m.tier2_entries), -+ "deopts": metrics.as_ref().map_or(0, |m| m.deopts), -+ "profitability_rejected": metrics.as_ref().map_or(0, |m| m.profitability_rejected), -+ "interpreter_demotions": metrics.as_ref().map_or(0, |m| m.interpreter_demotions), -+ }) -+ }; -+ metric_windows.push(capture_metrics(&runtime)); -+ let mut render_ns = Vec::with_capacity(ITERATIONS); ++ ++ let mut render_ns = Vec::with_capacity(ACCEPTANCE_ITERATIONS); + let steady_started = Instant::now(); -+ for _ in 0..ITERATIONS { ++ for _ in 0..ACCEPTANCE_ITERATIONS { + let started = Instant::now(); + let snapshot = context.update(|window, cx| { + runtime @@ -547,34 +957,24 @@ + }); + assert_eq!(snapshot.debug_tree(), expected_tree); + render_ns.push(started.elapsed().as_nanos() as u64); -+ if render_ns.len() % 10 == 0 { -+ metric_windows.push(capture_metrics(&runtime)); -+ } + } -+ let steady_state_ns = steady_started.elapsed().as_nanos() as u64 / ITERATIONS as u64; -+ let render_windows_ns = render_ns -+ .chunks_exact(10) -+ .map(|window| window.iter().sum::() / window.len() as u64) -+ .collect::>(); ++ let steady_state_ns = steady_started.elapsed().as_nanos() as u64 / ACCEPTANCE_ITERATIONS as u64; + let p99_script_render_ns = p99(render_ns); -+ // Reload suspends the guard; retain steady-state native evidence first. -+ let metrics = runtime.jit_metrics(); ++ let metrics = runtime.jit_metrics_for_benchmark(); ++ assert_eq!( ++ metrics.native_enabled(), ++ !interpreter, ++ "interpreter samples must not attach a JIT backend: {metrics:?}" ++ ); + -+ // Each observation performs the same fresh-generation suspend, -+ // declaration/evaluation, instantiation, and render sequence. An odd, -+ // predeclared observation count reports the per-process median instead of -+ // allowing one scheduler interruption to redefine a reload sample. + let mut reload_totals = Vec::with_capacity(RELOAD_OBSERVATIONS); + let mut reload_observations = Vec::with_capacity(RELOAD_OBSERVATIONS); + let mut reloaded_len = 0; + for observation in 0..RELOAD_OBSERVATIONS { + let reload_started = Instant::now(); -+ let suspend_started = Instant::now(); -+ runtime.suspend_jit_for_benchmark(); -+ let suspend_ns = suspend_started.elapsed().as_nanos() as u64; + let source_started = Instant::now(); + let reload_type = runtime -+ .load_source_after_suspending_for_benchmark( ++ .load_source( + &format!("benchmark-view-reload-{observation}"), + &benchmark_source, + ) @@ -595,17 +995,12 @@ + let total_ns = reload_started.elapsed().as_nanos() as u64; + assert_eq!(reloaded.debug_tree(), expected_tree); + reloaded_len = reloaded.len(); -+ let resume_started = Instant::now(); -+ cx.run_until_parked(); -+ let resume_task_ns = resume_started.elapsed().as_nanos() as u64; + reload_totals.push(total_ns); + reload_observations.push(serde_json::json!({ -+ "suspend_ns": suspend_ns, + "source_eval_ns": source_eval_ns, + "instantiate_ns": instantiate_ns, + "render_ns": render_ns, + "total_ns": total_ns, -+ "resume_task_ns": resume_task_ns, + })); + } + let hot_reload_ns = median_ns(reload_totals); @@ -622,20 +1017,21 @@ + "checksum": format!("{}:{}", reloaded_len, digest), + "snapshot_sha256": digest, + "script_renders": runtime.read_metrics().script_renders(), -+ "native_entries": metrics.as_ref().map_or(0, |m| m.native_entries), -+ "fallback_count": metrics.as_ref().map_or(0, |m| m.native_fallbacks), -+ "installed": metrics.as_ref().map_or(0, |m| m.installed), -+ "compile_failures": metrics.as_ref().map_or(0, |m| m.compile_failures), -+ "tier2_entries": metrics.as_ref().map_or(0, |m| m.tier2_entries), -+ "deopts": metrics.as_ref().map_or(0, |m| m.deopts), -+ "profitability_evaluations": metrics.as_ref().map_or(0, |m| m.profitability_evaluations), -+ "profitability_approved": metrics.as_ref().map_or(0, |m| m.profitability_approved), -+ "profitability_rejected": metrics.as_ref().map_or(0, |m| m.profitability_rejected), -+ "interpreter_demotions": metrics.as_ref().map_or(0, |m| m.interpreter_demotions), -+ "hot_call_queues": metrics.as_ref().map_or(0, |m| m.hot_call_queues), -+ "hot_loop_queues": metrics.as_ref().map_or(0, |m| m.hot_loop_queues), -+ "metric_windows": metric_windows, -+ "render_windows_ns": render_windows_ns, ++ "native_enabled": metrics.native_enabled(), ++ "native_entries": metrics.native_entries, ++ "fallback_count": metrics.native_fallbacks, ++ "installed": metrics.installed, ++ "compile_failures": metrics.compile_failures, ++ "unsupported_opcode_failures": metrics.unsupported_opcode_failures, ++ "tier1_rejections": metrics.tier1_rejections, ++ "resource_limit_failures": metrics.resource_limit_failures, ++ "cancelled_compilations": metrics.cancelled_compilations, ++ "compiler_panics": metrics.compiler_panics, ++ "invalid_artifacts": metrics.invalid_artifacts, ++ "install_failures": metrics.install_failures, ++ "native_exits": metrics.native_exits, ++ "osr_entries": metrics.osr_entries, ++ "deopts": metrics.deopts, + "reload_observations": reload_observations, + }); + std::fs::write( @@ -646,5 +1042,5 @@ +} + struct Empty; - + impl gpui::Render for Empty { diff --git a/scripts/bench-gpui-shell.sh b/scripts/bench-gpui-shell.sh index 32ea4b57..ecff2491 100755 --- a/scripts/bench-gpui-shell.sh +++ b/scripts/bench-gpui-shell.sh @@ -39,12 +39,21 @@ output_json=$(python3 -c 'import os, sys; print(os.path.abspath(sys.argv[1]))' " rquickjs_revision=$(git -C "$repo_root" rev-parse HEAD) dependency_revisions=$(sed -n '/quickjs-jit.*git =/s/.*rev = "\([^"]*\)".*/\1/p' \ "$shell_root/Cargo.toml" | sort -u) -if [[ "$dependency_revisions" != "$rquickjs_revision" ]]; then +dependency_versions=$(sed -n '/package = "quickjs-jit"/s/.*version = "\([^"]*\)".*/\1/p; /package = "quickjs-jit-runtime"/s/.*version = "\([^"]*\)".*/\1/p' \ + "$manifest" | sort -u) +rquickjs_version=$(sed -n 's/^version = "\([^"]*\)"/\1/p' "$repo_root/Cargo.toml" | head -1) +if [[ -n "$dependency_revisions" && "$dependency_revisions" != "$rquickjs_revision" ]]; then echo "gpui-shell quickjs-jit dependency revision does not match the benchmark source:" >&2 echo " dependency: ${dependency_revisions:-missing}" >&2 echo " source: $rquickjs_revision" >&2 exit 5 fi +if [[ -z "$dependency_revisions" && "$dependency_versions" != "$rquickjs_version" ]]; then + echo "gpui-shell published quickjs-jit dependency does not match the benchmark source:" >&2 + echo " dependency: ${dependency_versions:-missing}" >&2 + echo " source: ${rquickjs_version:-missing}" >&2 + exit 5 +fi # Pin every fresh process to one explicitly selected CPU. This removes process # migration from paired P99 and lifecycle observations without changing either @@ -68,19 +77,20 @@ while IFS= read -r candidate; do test_binary=$candidate fi fi -done < <(find "$target_root/release/deps" -maxdepth 1 -type f -perm +111 -name 'gpui_shell-*') +done < <(find "$target_root/release/deps" -maxdepth 1 -type f -perm /111 -name 'gpui_shell-*') if [[ -z "$test_binary" ]]; then echo "unable to locate gpui-shell library test binary" >&2 exit 4 fi "${runner[@]}" "$test_binary" tests::benchmark::describing_a_panel_stays_inside_the_frame_budget --exact "${runner[@]}" "$test_binary" tests::benchmark::numeric_layout_installs_and_enters_native_code --exact +"${runner[@]}" "$test_binary" tests::benchmark::mixed_market_panel_matches_interpreter_and_enters_native_code --exact sample_dir=$(mktemp -d "${TMPDIR:-/tmp}/gpui-shell-jit-samples.XXXXXX") trap 'rm -rf "$sample_dir"' EXIT sample_test=tests::benchmark::emit_one_jit_acceptance_sample for warmup in $(seq 0 4); do - for workload in panel compute; do + for workload in panel compute mixed; do for mode in interpreter automatic; do GPUI_SHELL_JIT_SAMPLE="$sample_dir/warmup-$warmup-$workload-$mode.json" \ GPUI_SHELL_JIT_MODE="$mode" GPUI_SHELL_JIT_PAIR="$warmup" \ @@ -91,7 +101,7 @@ for warmup in $(seq 0 4); do done for pair in $(seq 0 29); do if (( pair % 2 == 0 )); then modes=(interpreter automatic); else modes=(automatic interpreter); fi - for workload in panel compute; do + for workload in panel compute mixed; do for mode in "${modes[@]}"; do GPUI_SHELL_JIT_SAMPLE="$sample_dir/pair-$pair-$workload-$mode.json" \ GPUI_SHELL_JIT_MODE="$mode" GPUI_SHELL_JIT_PAIR="$pair" \