From 7f7e79d80221949f93c7ded7cbd8d26afd3dea1d Mon Sep 17 00:00:00 2001 From: Alan Wu Date: Sat, 6 Mar 2021 11:05:55 -0500 Subject: [PATCH] YJIT: handle when all counters are zero in printout code Also filter with not equal to zero instead of greater than zero, in case there is memory corruption and counters are negative. Fixes Shopify/ruby#70 --- ujit.rb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/ujit.rb b/ujit.rb index a2f61b1021..d27d200daf 100644 --- a/ujit.rb +++ b/ujit.rb @@ -67,9 +67,14 @@ module UJIT def print_counters(counters, prefix:, prompt:) $stderr.puts(prompt) counters = counters.filter { |key, _| key.start_with?(prefix) } - counters.filter! { |_, value| value > 0 } + counters.filter! { |_, value| value != 0 } counters.transform_keys! { |key| key.to_s.delete_prefix(prefix) } + if counters.empty? + $stderr.puts(" (all relevant counters are zero)") + return + end + counters = counters.to_a counters.sort_by! { |(_, counter_value)| counter_value } longest_name_length = counters.max_by { |(name, _)| name.length }.first.length