diff options
author | Alan Wu <XrXr@users.noreply.github.com> | 2021-03-06 11:05:55 -0500 |
---|---|---|
committer | Alan Wu <XrXr@users.noreply.github.com> | 2021-10-20 18:19:31 -0400 |
commit | 7f7e79d80221949f93c7ded7cbd8d26afd3dea1d (patch) | |
tree | b6c73e1bf59154e7ea4df0c372d1c746cf6a1915 | |
parent | eaab6605b75a2510f5cf0ae781817de3b7d6e39f (diff) | |
download | ruby-7f7e79d80221949f93c7ded7cbd8d26afd3dea1d.tar.gz |
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
-rw-r--r-- | ujit.rb | 7 |
1 files changed, 6 insertions, 1 deletions
@@ -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 |