diff --git a/Cargo.toml b/Cargo.toml index c6f8d450..1a1ed6ae 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,7 +22,7 @@ members = [ ] [workspace.package] -version = "0.8.3" +version = "0.8.4" edition = "2021" license = "MIT" rust-version = "1.80" diff --git a/crates/oxide_cli/src/bench/js_stress.rs b/crates/oxide_cli/src/bench/js_stress.rs index 3831a228..2a979413 100644 --- a/crates/oxide_cli/src/bench/js_stress.rs +++ b/crates/oxide_cli/src/bench/js_stress.rs @@ -93,6 +93,8 @@ pub fn run_js_stress_bench(config: &BenchConfig, kernel: &Arc, pool: let pre_session = vm.session_object_count(); let pre_epoch = vm.epoch_object_count(); + let pre_ic_hits = vm.ic_hit_count(); + let pre_ic_misses = vm.ic_miss_count(); let exec_start = Instant::now(); let _result = vm.run(&module); @@ -109,9 +111,13 @@ pub fn run_js_stress_bench(config: &BenchConfig, kernel: &Arc, pool: let session_bytes = vm.session_bytes_allocated(); let epoch_objects = vm.epoch_object_count().saturating_sub(pre_epoch); let instruction_count = vm.instruction_count(); - let ic_hit_rate = vm.ic_hit_rate(); - let ic_hits = vm.ic_hit_count(); - let ic_misses = vm.ic_miss_count(); + let ic_hits = vm.ic_hit_count().saturating_sub(pre_ic_hits); + let ic_misses = vm.ic_miss_count().saturating_sub(pre_ic_misses); + let ic_hit_rate = if ic_hits + ic_misses == 0 { + 0.0 + } else { + ic_hits as f64 / (ic_hits + ic_misses) as f64 + }; // 留存口径:强制完整 GC 清掉不可达垃圾后账目即留存堆。 vm.collect_session_gc();