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