diff options
| author | Maxime Chevalier-Boisvert <maxime.chevalierboisvert@shopify.com> | 2023-11-28 17:27:11 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-11-28 22:27:11 +0000 |
| commit | ea3e17e430b74b4e58535a707319025e008cc123 (patch) | |
| tree | aff895ceb0803be8eadb6ebb7ae8bc1d6755670c | |
| parent | a9c07cbd2128ae8fcb11862265d5fa24feaf3d4f (diff) | |
YJIT: fix bug in top cfunc logging in `--yjit-stats` (#9056)
YJIT: correctly handle case where there are no cfunc calls
Fix bug in top cfunc logging in `--yjit-stats`
| -rw-r--r-- | yjit.rb | 4 | ||||
| -rw-r--r-- | yjit/src/stats.rs | 5 |
2 files changed, 5 insertions, 4 deletions
@@ -375,7 +375,9 @@ module RubyVM::YJIT def print_sorted_cfunc_calls(stats, out:, how_many: 20, left_pad: 4) # :nodoc: calls = stats[:cfunc_calls] - #puts calls + if calls.empty? + return + end # Total number of cfunc calls num_send_cfunc = stats[:num_send_cfunc] diff --git a/yjit/src/stats.rs b/yjit/src/stats.rs index 7a52fc0e23..74443edea4 100644 --- a/yjit/src/stats.rs +++ b/yjit/src/stats.rs @@ -743,9 +743,10 @@ fn rb_yjit_gen_stats_dict(context: bool) -> VALUE { } // Create a hash for the cfunc call counts + let calls_hash = rb_hash_new(); + rb_hash_aset(hash, rust_str_to_sym("cfunc_calls"), calls_hash); if let Some(cfunc_name_to_idx) = CFUNC_NAME_TO_IDX.as_mut() { let call_counts = CFUNC_CALL_COUNT.as_mut().unwrap(); - let calls_hash = rb_hash_new(); for (name, idx) in cfunc_name_to_idx { let count = call_counts[*idx]; @@ -755,8 +756,6 @@ fn rb_yjit_gen_stats_dict(context: bool) -> VALUE { let value = VALUE::fixnum_from_usize(count as usize); rb_hash_aset(calls_hash, key, value); } - - rb_hash_aset(hash, rust_str_to_sym("cfunc_calls"), calls_hash); } } |
