78fb1aed77 (master): ZJIT: Don't always use find() in type_specialize

0 views
Skip to first unread message

Max Bernstein

unread,
Aug 3, 2026, 9:02:20 PM (15 hours ago) Aug 3
to ruby...@g.ruby-lang.org
Max Bernstein 2026-08-03 21:51:27 +0000 (Mon, 03 Aug 2026)

New Revision: 78fb1aed77

https://github.com/ruby/ruby/commit/78fb1aed77

Log:
ZJIT: Don't always use find() in type_specialize

Use it in only two branches: Send and InvokeSuper. We can probably
remove those later but it needs further refactoring.

Cuts ~20ms aggregate compile time off of lobsters.

Before:

plum% for i in $(seq 0 5); do WARMUP_ITRS=2 MIN_BENCH_ITRS=2 MIN_BENCH_TIME=0 ruby --zjit --zjit-stats benchmarks/lobsters/benchmark.rb 2>&1 | grep compile_hir_strength_reduce; done
compile_hir_strength_reduce_time: 160ms
compile_hir_strength_reduce_time: 162ms
compile_hir_strength_reduce_time: 162ms
compile_hir_strength_reduce_time: 162ms
compile_hir_strength_reduce_time: 167ms
compile_hir_strength_reduce_time: 163ms

After:

plum% for i in $(seq 0 5); do WARMUP_ITRS=2 MIN_BENCH_ITRS=2 MIN_BENCH_TIME=0 ruby --zjit --zjit-stats benchmarks/lobsters/benchmark.rb 2>&1 | grep compile_hir_strength_reduce; done
compile_hir_strength_reduce_time: 141ms
compile_hir_strength_reduce_time: 141ms
compile_hir_strength_reduce_time: 141ms
compile_hir_strength_reduce_time: 141ms
compile_hir_strength_reduce_time: 141ms
compile_hir_strength_reduce_time: 141ms

Cuts another ~40ms aggregate compile time off of 30k_ifelse, which was
designed to be a compile-time benchmark.

Before:

plum% for i in $(seq 0 5); do WARMUP_ITRS=2 MIN_BENCH_ITRS=2 MIN_BENCH_TIME=0 ruby --zjit --zjit-stats benchmarks/30k_ifelse.rb 2>&1 | grep compile_hir_strength_reduce; done
compile_hir_strength_reduce_time: 338ms
compile_hir_strength_reduce_time: 338ms
compile_hir_strength_reduce_time: 337ms
compile_hir_strength_reduce_time: 338ms
compile_hir_strength_reduce_time: 336ms
compile_hir_strength_reduce_time: 333ms

After:

plum% for i in $(seq 0 5); do WARMUP_ITRS=2 MIN_BENCH_ITRS=2 MIN_BENCH_TIME=0 ruby --zjit --zjit-stats benchmarks/30k_ifelse.rb 2>&1 | grep compile_hir_strength_reduce; done
compile_hir_strength_reduce_time: 291ms
compile_hir_strength_reduce_time: 291ms
compile_hir_strength_reduce_time: 284ms
compile_hir_strength_reduce_time: 290ms
compile_hir_strength_reduce_time: 289ms
compile_hir_strength_reduce_time: 290ms

Modified files:
zjit/src/hir.rs
Reply all
Reply to author
Forward
0 new messages