From f3020d7be389d411506d1d24f985ddac4c9a5a76 Mon Sep 17 00:00:00 2001 From: Hoa Nguyen Date: Tue, 7 Oct 2025 02:59:22 +1100 Subject: [PATCH 1/4] ZJIT: strengthen test_reset_stats (#14738) --- test/ruby/test_zjit.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/test/ruby/test_zjit.rb b/test/ruby/test_zjit.rb index 83af7347d61da9..c6dbc01dc2e129 100644 --- a/test/ruby/test_zjit.rb +++ b/test/ruby/test_zjit.rb @@ -2127,6 +2127,7 @@ def test = 1 # After reset, counters should be zero or at least much smaller # (some instructions might execute between reset and reading stats) :zjit_insn_count.then { |s| initial_stats[s] > 0 && reset_stats[s] < initial_stats[s] }, + :compiled_iseq_count.then { |s| initial_stats[s] > 0 && reset_stats[s] < initial_stats[s] } ].all? }, stats: true end From 7333a2710e502be1c70374d4bb5b0247a4a5a5e6 Mon Sep 17 00:00:00 2001 From: Hoa Nguyen Date: Tue, 7 Oct 2025 03:01:12 +1100 Subject: [PATCH 2/4] ZJIT: reduce string allocation in the Counter::name() (#14743) The Counter::name() method creates a new String on every call, each call allocates memory and copies the string. Using %'static str would reduce memory pressure. The change is safe as no breaking changes to the API --- zjit/src/stats.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/zjit/src/stats.rs b/zjit/src/stats.rs index 323af0f3ed2695..a9b7270444a7a5 100644 --- a/zjit/src/stats.rs +++ b/zjit/src/stats.rs @@ -48,13 +48,13 @@ macro_rules! make_counters { } impl Counter { - pub fn name(&self) -> String { + pub fn name(&self) -> &'static str { match self { - $( Counter::$default_counter_name => stringify!($default_counter_name).to_string(), )+ - $( Counter::$exit_counter_name => stringify!($exit_counter_name).to_string(), )+ - $( Counter::$dynamic_send_counter_name => stringify!($dynamic_send_counter_name).to_string(), )+ - $( Counter::$optimized_send_counter_name => stringify!($optimized_send_counter_name).to_string(), )+ - $( Counter::$counter_name => stringify!($counter_name).to_string(), )+ + $( Counter::$default_counter_name => stringify!($default_counter_name), )+ + $( Counter::$exit_counter_name => stringify!($exit_counter_name), )+ + $( Counter::$dynamic_send_counter_name => stringify!($dynamic_send_counter_name), )+ + $( Counter::$optimized_send_counter_name => stringify!($optimized_send_counter_name), )+ + $( Counter::$counter_name => stringify!($counter_name), )+ } } } From 56b3b916af6952e75602b9b63d5a2efa0e578b1f Mon Sep 17 00:00:00 2001 From: Takashi Kokubun Date: Mon, 6 Oct 2025 10:53:24 -0700 Subject: [PATCH 3/4] tool/merger.rb: Fetch diff from GitHub instead of cgit Our cgit server has been shut down. --- tool/merger.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tool/merger.rb b/tool/merger.rb index 8b12334b735df4..934a265094c377 100755 --- a/tool/merger.rb +++ b/tool/merger.rb @@ -263,7 +263,7 @@ def execute(*cmd, interactive: false) end # Merge revision from Git patch - git_uri = "https://git.ruby-lang.org/ruby.git/patch/?id=#{git_rev}" + git_uri = "https://github.com/ruby/ruby/commit/#{git_rev}.diff" resp = Net::HTTP.get_response(URI(git_uri)) if resp.code != '200' abort "'#{git_uri}' returned status '#{resp.code}':\n#{resp.body}" From cc982346417ad7cc4dcfeaae5e832d78571820db Mon Sep 17 00:00:00 2001 From: Takashi Kokubun Date: Mon, 6 Oct 2025 11:21:32 -0700 Subject: [PATCH 4/4] tool/merger.rb: Fetch a diff in the patch format It expects "Subject:", so it needs to be a patch file. --- tool/merger.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tool/merger.rb b/tool/merger.rb index 934a265094c377..795e97a86ee529 100755 --- a/tool/merger.rb +++ b/tool/merger.rb @@ -263,7 +263,7 @@ def execute(*cmd, interactive: false) end # Merge revision from Git patch - git_uri = "https://github.com/ruby/ruby/commit/#{git_rev}.diff" + git_uri = "https://github.com/ruby/ruby/commit/#{git_rev}.patch" resp = Net::HTTP.get_response(URI(git_uri)) if resp.code != '200' abort "'#{git_uri}' returned status '#{resp.code}':\n#{resp.body}"